https://wiki.arcengames.com/api.php?action=feedcontributions&user=Democracy%3F+Democracy%21&feedformat=atomArcen Wiki - User contributions [en]2024-03-29T15:40:43ZUser contributionsMediaWiki 1.34.2https://wiki.arcengames.com/index.php?title=AI_War_2:The_Paradigm_Shift&diff=42609AI War 2:The Paradigm Shift2021-04-02T08:44:49Z<p>Democracy? Democracy!: /* New Mod! Frigates Focus by CRCGamer */</p>
<hr />
<div>== Known Issues ==<br />
<br />
* Any bugs or requests should go to our [https://bugtracker.arcengames.com/ mantis bugtracker]<br />
** 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.<br />
** 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:<br />
*** Windows: C:\Users\username\AppData\LocalLow\Arcen Games, LLC\AIWar2\Player.log<br />
*** macOS: ~/Library/Logs/Arcen Games, LLC/AIWar2/Player.log<br />
*** Linux: ~/.config/unity3d/Arcen Games, LLC/AIWar2/Player.log<br />
<br />
* '''Multiplayer is in public alpha, as noted below.''' There is a [[:Category:AI War 2: All About Multiplayer|detailed multiplayer guide]] that we are working on building up.<br />
<br />
* Feel free to [https://discord.com/channels/240637654717300736/242012213580136448 join discussions on discord]!<br />
<br />
== What Does Multiplayer Beta Mean? ==<br />
<br />
[[:Category:AI War 2: All About Multiplayer#Initial Caveats And Related Resources|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.<br />
<br />
== What's this phase all about? ==<br />
<br />
Multiplayer is fully playable at this point, but still has a variety of glitches and doesn't have all of the features that we intend to have in the long term. So hence it still being in alpha status. But we greatly welcome folks to play, and hopefully give us reports on what is going wrong if something does go wrong.<br />
<br />
We expect to be to a fully-polished non-beta status for multiplayer in May, if things continue as they have.<br />
<br />
Our second expansion for the game, Zenith Onslaught, has a whole heck of a lot of it completed, but still needs more doing. Badger has done all of his parts for it, and has [[AI_War_2:Sunset_of_The_Badger_Era#The_Badger_And_Puffin_Legacy|retired like Puffin before him]], so at this point we are down to basically a one-person show again (me, Chris) on bugfixing, finishing multiplayer, finishing my parts of DLC2, and finishing the last of the kickstarter obligations. So if the schedule slips some, it's likely because I had trouble juggling that, or wanted extra time to make things truly shine, whichever. But at the start of this phase, things are feeling very positive.<br />
<br />
== Beta 2.767 ==<br />
(Not yet released -- we're still working on it!)<br />
<br />
== Beta 2.766 Huge Multiplayer Speed Boost==<br />
(Released April 1st, 2021)<br />
<br />
* Updated the civilian industries mod to be more correct in its description of when it was last updated as well as what level of tech support Arcen provides.<br />
<br />
* Fixed a bug where if you had some expansions or mods on, and used those to select certain lobby settings (AI types, battlestation types, etc), then you could get exceptions if you reloaded into the lobby after disabling the expansions or mods in question.<br />
<br />
* A few more balance changes for frigates.<br />
** Now gain an extra 10% range at marks 2, 4, and 6. Capping at 130% base range at mark 6.<br />
** Durability upgraded by an extra 0.2 base stats per mark level for a gain of 1.2 by mark 7.<br />
** This means that frigates at Mark 7 now have 7.7x base hull and shield values.<br />
** Thanks to CRCGamer for making these!<br />
<br />
=== New Mod! Frigates Focus by CRCGamer ===<br />
<br />
* This mod effectively rebalances a few things within the game for a different experience.<br />
* You will start with a fleet of frigates with revised starting fleets to choose from.<br />
* Some of the additional starting fleet options have requirements.<br />
<br />
* Please enable The Spire Rises (DLC 1), Zenith Onslaught (DLC 2), and More System Defenders (MOD)<br />
* This will grant all available options at the moment.<br />
<br />
* ARS Hacks will only contain available frigates.<br />
* Pre-seeded fleets will lean towards frigates heavily. Some strikecraft will appear now and then.<br />
<br />
* FRS strikecraft still remain available for fleet buffs.<br />
* Is Democracy's worst nightmare.<br />
<br />
=== HUGE Multiplayer Speed Improvements ===<br />
<br />
* Our implementation of the main steam networking library now uses the no-nagle approach, so data sends more directly.<br />
** That's a judgement call for any game, but we need our data to get there faster and we already compact the messages that are okay waiting for up to 200ms (uhh... that's none of them).<br />
<br />
* Up until now, for multiplayer on Steam, AI War 2 has been using the new "connection-oriented" network library from Steam. This is one of four distinct libraries (one of which is deprecated) that Valve provides for getting data from here to there, and it's their newest one.<br />
** For folks not all that into networking details, essentially imagine it's like Valve has a racetrack (their hardware and network), and they have four different vehicles that developers can choose to use on said racetrack. One of the vehicles is old and basically only there for legacy purposes: so for a new game, there are three vehicles, and a single racetrack.<br />
** Each vehicle has a variety of customization options unique to it, for depending on how you will drive it. For instance, think of this like four wheel drive mode (worse gas mileage, better traction), or environment mode (way better emissions output, but worse performance). Each vehicle has different of these options, and different performance characteristics in general, is the bottom line.<br />
** What we've been using up until now has been the Connection-Oriented protocol, which is a vehicle that is very... reliable, is I suppose the main thing. It tries to emulate the TCP protocol on top of UDP, which is a pretty common goal in networking libraries.<br />
*** TCP is what runs all our websites, and it's an absolute terrible protocol that everyone hates and that is super inefficient. Games can't use TCP at all, but generally implement some form of "reliable UDP" (an oxymoron, but a useful concept) on top of UDP itself. Some of these work more like UDP, others work more like TCP, and all of them have their own quirks.<br />
*** Anyhow: we have been running it with the Nagle algorithm enabled, which was actually a terrible thing for our particular game. I programmed our network code in a network-agnostic fashion, and I already do the batching that makes sense. Nagle is all about putting a bunch of small and inefficient packages into larger packages... and it creates up to 200ms of extra latency if you don't have enough to fill a full load.<br />
*** All of these options are great, and none of them are "bad." But in the same way you don't try to race a dump truck in 4 wheel drive in the Indy 500, and you don't try to take a high performance racecar offroading, you have to pick the right options for your particular game. The Nagle algorithm is terrible for AI War 2, but probably a godsend for a lot of action games in particular. This connection-oriented protocol was not the best for AI War 2, but for a turn-based strategy game it might be perfect.<br />
** The particular problem with these tools, and trying to figure out which one to use, is that it's not always obvious exactly what the capabilities of each one are. And they are VERY different in terms of code. It's like thinking you can fly a small plane because you know how to drive a small car with a manual transmission; they both take some practice, and they don't quite equate.<br />
** We have now switched to providing both the now-Nagle-less Connection-oriented protocol from Steam, but also their more UDP-like "Peer to Peer" implementation.<br />
*** The P2P framework is pretty interesting, because it doesn't have much of a concept of the host and client even being connected. One just starts talking, and the other can opt to say "no, be quiet," but beyond that everything is at the game level. This is very nice, because my hope is that some of the random disconnections that a few people were having will thus go away. There's no connection to drop; we were talking 3 seconds ago, there was a blip, now we're talking again. Easy. Hopefully.<br />
*** The other benefit that the P2P framework has is that it supports multiple channels of data. In each channel, essentially there's a queue of messages. If you have packet loss or fragmentation, everything in the queue has to wait for the items before it to be re-assembled. This is the number one cause of stutter and lag.<br />
*** The benefit of using multiple channels is that for all of the heavy data, like the sync stuff, we can shove that on a channel that does not interrupt game flow at all. Meanwhile, on the main channel, comparably minimal information is sent back and forth between the host and clients. This doesn't lessen the bandwidth requirements any, but this DOES greatly lessen the load on the core critical data that needs to get passed back and forth to keep the game moving. In router design and network programming, this sort of thing is often referred to as traffic control, or quality of service control. Aka, if someone is watching Netflix, don't let that destroy the internet for everyone else in the house. That doesn't mean throttling, if you have enough bandwidth; it means just making sure everyone has a chance to get their data in the sort of timeframe they expect it.<br />
** So! The P2P framework is now the default, and it already seems vastly faster. We are leaving the connection-oriented mode around, just in case someone has a problem with peer to peer and how it functions. But we anticipate that, especially as we start adding channels (that the connection-oriented version will just stuff all in a single channel, sadly), the gap will widen even more. If that's the case, and things are working well for everyone, then the connection-oriented version will just be phased out.<br />
<br />
* The game now supports multiple network channels for networking data on every network framework EXCEPT for the older Steam Connection-Oriented framework (since that one does not support channels).<br />
** Steam P2P, GOG, and LiteNetLib all happily support network channels, and use them to great effect, now.<br />
** All of the network channels are in the format "reliable ordered immediate," so no Nagle, but also everything is still reliable and so acks and resends happen on all the channels.<br />
** The benefit of splitting out by channel like this is that if there are fragmented packets in one of them, they don't cause slowdown and waiting around on the other channels.<br />
** There are four overall channels (except on Steam C-O, which squashes them all into one, which is how it has been up until now but is horrible. Please us Steam P2P):<br />
*** Main channel: this is the data that must be on time, and unblocked, for the game to keep proceeding. If this is streaming fast enough, your game will not be lagging at all.<br />
**** This includes the original handshakes between clients and the host, initial world data from the host to each client, and then any commands issued by clients or the host. Beyond that, it's pretty much just frame timing updates for general game synchronization on the host's orders. This also includes all "fast blast" data from the host to the client on unit and shot creation.<br />
*** Frequent channel: this is a fair chunk of data from the host to the client, and mostly involves data that should be updated every couple of sim frames. This is the broadest stuff that is kept in sync, but it's not absolutely required in order to run the game. Lobby chat is also sent via frequent (lobby chat runs at a lower level than in-game chat).<br />
*** Bulky-1 channel: this is almost entirely devoted to analyzing ships, and the clients and host talk back and forth about what they find.<br />
**** More or less: "Hey is this what you have for these 5 ships?" "Those three are right, but these other two don't match. Send me the diffs on those two please." "Here are the diffs on those two you asked about."<br />
**** There are also some cases of the server knowing "hey a thing just changed on this ship (such as a speed group speed) that the client would not know about, so preemptively sync to them before it drifts.<br />
*** Bulky-2 channel: this is entirely devoted to large-form rolling sync data about things other than ships. That mainly means world data, world externals, faction data, faction externals, planetfaction data, and the like.<br />
**** This channel is super hefty, and is the vast bulk of the data that is sent in general. But if it's delayed a few seconds in getting to you, it doesn't matter. If the Main channel is delayed a few hundred milliseconds, it will feel awful, by contrast.<br />
** An example of some of the timings are here in discord: https://discordapp.com/channels/240637654717300736/753611766046523572/827334456695980052<br />
*** In that one example, the host sent 23MB of data in about 15 minutes. 14MB of that was Bulky-2, 3.8MB Bulky-1, 3.3MB Frequent, and a mere 2.1MB on the Main channel. Bear in mind that about 300KB of the main channel was just the initial world send.<br />
*** If you total all of that sort of thing up, this is way less data than a low quality internet video, spread out over more time. Our problem has never been the general volume of data, but lag has been present because of a couple of things lately.<br />
**** First, we had a lot of thrashing on what would now be Bulky-1 because of sync data going vastly awry with speed groups. That was re-coded entirely in the last release, so there is far less data in that category.<br />
**** Second, we had the Nagle algorithm on by accident, which caused frequent delays of 200ms to accumulate small messages into batches rather than passing them on. This only affected Steam, not GOG or LiteNetLib. This has been fixed in this release.<br />
**** Third, the network framework used for Steam was suboptimal in a variety of ways, architecturally. This did not affect the other platforms, but it was dragging down Steam to a substantial degree. This has been fixed in this release.<br />
**** Fourth, all of this other data -- literally 90% of which doesn't need to be on time for the simulation to run well -- has been moved off the Main channel. This is a reduction in 90% of where we might see congestion from acks and resends and problems of that nature. If your connection has any substantial packet loss, then you now get to dodge 90% of the impact of that.<br />
** Final verdict? Basically an order of magnitude better performance for everyone, but in particular for Steam, which was running worst but used most.<br />
<br />
== Beta 2.765 The Hunt For Frigates And Civilians ==<br />
(Released March 31st, 2021)<br />
<br />
* When you are searching for units on the galaxy map, it will now allow match on both the full name and the short name. So you can type ARS to find the Advanced Research Station, etc.<br />
** Thanks to Daw11 for suggesting.<br />
<br />
* A few minor code efficiency improvements in some frequently-called code that will grant a small speed boost. Probably imperceptible on most machines, but why not.<br />
<br />
* Our per-ship network checking code in multiplayer has been slimmed down to no longer check the type of ships, or the faction of ships. It is no longer possible for those to ever be wrong, so we can save something like 1/4 of the bandwidth from each ship. It's a tiny amount, but given how many times this happens and thus how much it adds up to over even a short period, a 25% savings is nothing to sneeze at.<br />
<br />
=== Balance ===<br />
<br />
* DLC2 shot attraction backport to Bulwark Turret implemented (making that DLC1 turret way more awesome)<br />
** Thanks to CRCGamer for implementing.<br />
<br />
==== Balance adjustments to a number of frigates ====<br />
<br />
*Assault Frigate + Station Keeping variant adjustments<br />
** Speed 600 -> 700<br />
** Point defense shots per salvo +2 mk/lvl<br />
** Point defense range from 5200 -> 6500<br />
<br />
*Mugger, Cloaked Mugger<br />
** Speed 400 -> 600<br />
** Point defense shots per salvo +2 mk/lvl<br />
** Point defense range from 5200 -> 6500<br />
<br />
*Brawler<br />
** Speed 400 -> 600<br />
** Repulsor Missile range from 4200 -> 5600<br />
** Repulsor Missile shots per salvo +3 mk/lvl<br />
<br />
*Watchman Frigate<br />
** Additional sub-weapon of 300 base damage, x6 shots every 4 seconds and +1 mk/lvl. Range of 5600<br />
<br />
* Siege Frigate, Devastator, Ion Disruptor<br />
** Speed 400 -> 500<br />
** Weapon system ranges 10100 -> 12000<br />
<br />
* Additional adjustment to Siege Frigate where it now can only hit up to 10 targets per shot. Prevents excessive damage dilution due to its spread damage mechanic in some situations.<br />
<br />
* Thanks to CRCGamer for this update to the frigates to make them more viable to main!<br />
<br />
=== Civilian Industries Returns ===<br />
<br />
* Civilian Industries should once again be functional! We have not tested it, but it's recompiled into the new beta code style, and so should continue working like it used to.<br />
** Thanks to StarKelp for sharing the source so we could get it to work, since this is quite a popular mod.<br />
<br />
* All of the units in Civilian Industries have been updated to have proper short names for viewing in the new sidebar. Almost all of the previous ones were incomprehensible because of inheritance.<br />
<br />
=== More Mod Updates ===<br />
<br />
* Update v1.25 for More System Defenders - Speedy Frigates<br />
**<br />
**Frigates within the mod had base speeds adjusted to a minimum of 800.<br />
**Augmented Artillery Destroyer also given the speed increase to 800.<br />
**<br />
**Arming time of Cruise Missile Battery sub-units adjusted down to one second.<br />
**Subjective strength rating of said sub-units given a 20% multiplier.<br />
**Max targets hit within AoE adjusted for Shockwave Missiles.<br />
**<br />
**AI Fortified Cruise Missile Base visual scales increased.<br />
**Shockwave missile max targets 10 still fires three at a time though, damage 2.5x previous.<br />
<br />
* AMU:<br />
** Fixed the "AMU Debug For Faction Index" setting being fixed at -1 and, after that was fixed, found out it was not displaying anything. Fixed that as well, it now only debugs for that one specific Faction ID.<br />
** Fixed a potential exception in Auto-Juggle Energy Function from not clearing the list of entities to kill. Over time this would become a memory leak and leak.<br />
** Added new settings in cooperation with CRCGamer and his More System Defenders mod: If both mods are installed AMU, can now auto-build the following defensive units if enabled in the Automation tab:<br />
*** Cruise Missile Bases (0-5), these are placed near your command station and if possible on facing away from the nearest wormhole.<br />
*** Artillery Destroyers (0-2)<br />
*** Flypaper Frigates (0-50)<br />
*** Gorgon Aggregate Body Frigates (0-50)<br />
*** Escort Carriers (0-50)<br />
*** Ambush Carriers (0-50)<br />
* Extended Ship Variants:<br />
** As it adds a lot of ships for medium hull and fills the void there it now also modifies the medium hull cost to be on par with light and heavy hulls.<br />
<br />
* AMU:<br />
** Rewrote almost the entire description to be more clear and organized. Then added that AMU now cooperates with More System Defenders to allow the auto-building of its defensive units.<br />
<br />
* AMU:<br />
** Tweaked AMU to also allow for Auto-Building More System Defenders units not only when the mod itself but also its indev-counterpart are enabled.<br />
** Confirmed actually killing the exception in the Auto-Juggle Energy Assistant (AJEA). It would occur when swapping any other command station in for Economic Command Stations due to a stale fleet membership for the E->M Converters. AJEA now only considers converter fleet memberships valid if they have a positive maximum amount of entities.<br />
** Reorganized the custom Exception Logging code in AMU to allow for more functions:<br />
*** There now is an enum ExceptionThrowingMode. Only if it's set to BlockAllFurtherExecutionOfEntireThread it will kill the thread (and usually the whole faction along with that). Other options just show a popup but don't do anything else, or quietly debug log it.<br />
*** This FINALLY fixes the issue of a single Executor Fake Faction script crashing taking down the entire thread with it. Now the script will be removed, but the rest of things can stay. 3-ish times before this was attempted and claimed, but never tested, this time it IS tested and works.<br />
** At the same time the error logging code now has a string passed into it to define what modder screwed up and how to contact them. In my case this is -NR-SirLimbo#0021 on Discord or NRSirLimbo@protonmail.com<br />
** Additionally the call of Exception Logging was simplified and QuickExLog() shortcut functions were created.<br />
* Kaizers Marauders:<br />
** Integrated the new AMU logic and adapted it to changes in the Vanilla codebase.<br />
** Fixed the Rampage Heavy Frigate (drones) having the wrong icon.<br />
<br />
* AMU:<br />
** Created the DynamicAveragerRing class, which essentially is a list of values that an average is created out of, and each time adding a new value it replaces the old one, assuming the required change threshold, if set, is exceeded.<br />
** Fixed another 2 bugs in the Auto-Juggle Energy code that made the mod exponentially overestimate the player's metal income at high game speed, and logarithmically underestimate it at low game speeds. This lead to all kinds of horribly wrong behavior.<br />
* Kaizers Marauders:<br />
** Removed the defense spawn distance factoring from sniper turrets. In the hope that nobody will ever clutter their gravity well so much that the game begins to lag when trying thousands of locations to place something at the edge of the planet.<br />
** Used the new DynamicAveragerRing class to do calculations on the defense spawn distances.<br />
** Essentially when the last result distances were further away than within a margin it expands the next spawn attempt's base range, and if they were closer than that margin it inflates the next attempt's spawn distance.<br />
** This way it should be able to increase and decrease dynamically, but this is untested as of yet. I'd love to get someone's save with a built-up Kaiezrs Marauder Capital planet to see if it works, and by how much it grows better or worse.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a couple of places in the squad class where cross-threading issues could crop up with index out of range exceptions looking at unit orders. The side benefit of this is that it also makes this code a bit faster to run, because fewer array indices are happening.<br />
** Thanks to Zweihander2021 and Sigma7 for reporting.<br />
<br />
* Fixed a number of additional cases where cross-threading exceptions could happen with orders to units, even though none of them had been hit yet. Better to be preventative.<br />
<br />
* Game code is no longer allowed to directly touch the QueuedOrders list on entities. This may affect some code mods.<br />
** The code is now required to call GetQueuedOrderAtIndex_OrNull( index ), GetLastQueuedOrder_OrNull(), GetQueuedOrderCount(), RemoveOrder( Order ), QueueOrder(), and RemoveOrderAt( index ), as needed.<br />
** This was just absolutely ripe for endless cross-threading issues, and now we're able to condense all the possible errors into one place that is error-proof.<br />
** In general we have also switched to using more Remove rather than RemoveAt. This is slightly less efficient, but also less likely to junk or corrupt wrong data. If it causes a slowdown, we'll have to look into it.<br />
** It's worth noting that, in general, this is BY FAR the largest source of cross-threading issues, and we had literally like 30 different band-aids throughout the codebase. This removes and centralizes all of them, avoiding any chance of such issues. We've literally been having these for over a year, though, with no sign of stopping... and so an architecture change was in order.<br />
*** Updated one line of code in civilian industries to make that mod work with this change.<br />
<br />
* Properly fixed that index out of range exception that could still happen on WriteTechThatBenefits(). I was missing a -1 in there.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed some issues where death effect damage may have been overflowing, and in general where it would not serialize if it was negative. Now it just corrects to 0 damage rather than throwing an exception. This was during DeathEffectCausingDamageReceivedToEntity_Data mainly for multiplayer.<br />
** Thanks to Badger for reporting.<br />
<br />
* For some strange reason, it was still possible for us to hit Steam's "LimitExceeded" error when sending certain messages that include the entire world file. This was intermittent with clients in general.<br />
** Overall it is true, we were trying to fragment savegames as little as possible, basically breaking them at around 500kb rather than something lower, knowing that Valve's limit on messages is 512k. But with our own headers being around 100 bytes or so, we still should have had plenty of room, so why exactly this was happening is not clear.<br />
** What we've now done is shifted it so that we now target 400kb, which is VASTLY more room than needed. However, in terms of the grand scheme of sending world data, this is really paranoid in a way that should avoid the issue while not letting edge cases slip through. No headers are remotely near 112kb in size, so if we still get the error then this is something to do with how much is queued up in the steam networking buffer or somesuch.<br />
** It's also worth noting that the difference in fragmenting 100kb one way or the other is essentially invisible in terms of performance, and this only affects initial connection.<br />
** Thanks to Badger for reporting.<br />
<br />
* "CheckForShotAOEDetonation error at debugStage 4100" errors in multiplayer should now be fixed, or if not then it should give an even more specific error now. But knock on wood, should be fixed!<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed a "BUG: entityTospawnat is null" on multiplayer clients, but in the process also stopped them from trying to spawn the contents of a wave at all. That was just going to lead to strangeness and lag whenever a wave arrives. That data will be arriving by fast-blast from the host within a matter of milliseconds, and there's nothing for the client to calculate on their own.<br />
** Thanks to Badger for reporting.<br />
<br />
* A HandleAutobuild() exception was happening on some multiplayer clients. It probably still will, but it will give way more informative errors now. There's some slight extra protections in there already, but probably not enough for whatever was going on.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed a bug that would outright crash the game in DLC2 if you had a revenge-firing ship shooting another revenge shooting ship on a planet that no player is actively viewing.<br />
** Essentially, what happened was darker mirrors shooting each other when nobody was looking would not make a sound so much as they would silence all sound forever...<br />
** The change to make this work actually wound up being a lot more extensive in terms of how we process AOE damage, shots, and even knockback. The basic fix would have been faster, but more likely for complicated bugs like this to be possible in the future. If you see any strangeness with knockback in particular, please let us know!<br />
** Thanks to NR SirLimbo for the initial reports, and Democracy for the save that let us replicate this within 30 seconds of loading it. That was a lifesaver, as this still took something like 3.4 hours to find and fix.<br />
<br />
* The "Mismatch on faction index" error that was popping up frequently in the opening of the lobby will now only happen if you are actually generating a final map for the game. It's a useful debugging tool, but the warning it's giving us on the "partial map" is about something that gets entirely erased when you actually start the game, so it causes no problems.<br />
<br />
* Fixed an exception that could happen in some cross-threading situations in TargetEvaluator_ZombifyAsPrimary.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Increased the delay between fragmented Steam messages from 10ms to 50ms. Less likely for the valve to throw a congestion failure message that way, and it's not going to be noticeably different to users.<br />
<br />
==== Multiplayer Canary Code ====<br />
<br />
* "Canary code" has been introduced into several of the multiplayer messages. These may be taken back out later, but they really require very little processing and potentially a great amount of clarity, so we'll see.<br />
** Essentially, using our extremely efficient sub-ASCII text encoding, we send a string at certain points in the multiplayer messages, and on the other end it tries to read that exact string. The key point here is that the client KNOWS what it should be receiving. If it receives something other than what it expects, then it will yell right away and throw an exception and stop processing that message.<br />
** When it comes to our serialization format, it is blind and it is without markup or metadata. This is hyper efficient, but when we are reading naked bits... any string of 4 bites can maybe a byte, and any string of 16 bits can make some sort of small integer. We are reliant on clients and hosts knowing exactly what they are reading at any given time, and it's often not until we get a value that is clearly out of range later on that it actually dies. This can be VERY downstream from the actual divergence in data (we could have had 1, 10, 100, or even 1000s of reads that were invalid without knowing it).<br />
** This sort of thing gives us an existential problem in that when we know there's an error in some sort of message, we have no way to know how to narrow it down. The only way to find the divergence is to get the client and the host to both write a log of what they sent, and then diff the two. The problem is always immediately obvious once we do that. However, we have no way of knowing when to log, when the problem is a very intermittent one. Full time logging would make the game unplayable, and we also can't retroactively log after discovering we have a problem (the host never even knows there is a problem).<br />
** The one other way that we can find a problem like this is via manual code review, but that is extremely tedious and we could be looking through literally thousands of lines of code in dozens of files for a single send, since it could involve many external factions or even mods.<br />
** To solve this existential problem, at certain points we can send a known unique series of ASCII characters, which get converted into a hyper-specific series of bits. We're talking about... let's say maybe a series of 72 bits. In the canary check, it would be unimaginably unlikely for all 72 bits to happen to be the right combination of on and off unless the data that has been read prior to now is all exactly correct. Thus we basically cut down dramatically on the amount of code that we have to review in order to find the problem spot, since we don't have logs.<br />
** If the amount of code is still too much, then after the first round of canary checks, we may wind up needing to add more layers of more detailed canaries, potentially that are toggled on as a more lightweight form of message checking, since logs are really impossible to synchronize in a realtime multiplayer game. The data is just too voluminous for players to handle, and they have no way to pre-parse it for our use. The canary solution keeps things brief, to a single line of log code on just the client, and has minimal-to-no slowdown added (if we wind up adding lots of layers of canaries, that would be slowdown, and would be a toggle for when you suspect problems).<br />
** Two things to be aware of with canaries: <br />
*** If I make a mistake when entering a canary, then I may make multiplayer unplayable by accident. That could happen, and would just require a code change to fix it. This is difficult to test in advance of someone else firing up multiplayer, unfortunately.<br />
*** If my canaries are all correct, multiplayer still may become unplayable if there's a bug that a canary is now finding. Essentially, an area of multiplayer might ONLY have been functional because of the nature of "any row of bits is a number," and that in turn would lead to all sorts of strange effects like... well, potentially ships going to the wrong location, or having very mysterious orders, that sort of thing. Those are all just lots of series of numbers, so its entirely plausible to have a functional -- but wrong and fill with lots of sync data request -- multiplayer game going in those circumstances. The canaries would make such a game unplayable, however, because they actually would find at least the general areas of the code and then halt reading of the message (since they know it's garbage after that, even if it's theoretically-playable garbage). This may actually mean a short-term reduction in multiplayer playability, is the bottom line. But it leads to long-term correctness, and the removal of strange MP-specific divergences that wind up sending more and more and more sync data trying and failing to fix itself. Aka over time it will also lead to less bandwidth usage.<br />
** Thanks to Badger for the report that posed this conundrum.<br />
<br />
* Lots more canary code, on clients sending gamecommands to the host, and the host doing the same to the clients.<br />
** This way, if any gamecommands are being corrupted, we will hear about it just the same as we would with all the various types of sync data, and the fast blast data.<br />
** We have long suspected that there is something amiss in the fast blast data for speed groups in particular, but never had a way to test it until now. With these changes, it's entirely likely the multiplayer is going to be extremely broken with various canaries squawking. If folks post the logs of what they run into, and savegames are also ideal, then we should be able to exorcise those bugs rapidly and the stability of multiplayer as a whole is likely to skyrocket. Apologies for any temporary blockages that this causes, though.<br />
<br />
* So far in some limited multiplayer testing, we aren't seeing systematic issues yet!<br />
<br />
==== Speed Groups Rewrite ====<br />
<br />
* The way that speed groups are calculated, stored, updated, and most importantly shared via multiplayer has been completely rewritten.<br />
** This is something that fireteams use, and it's also the "group move" function on player ships.<br />
** Essentially, the old way was pretty inefficient in single player, and lost its data for fireteams when you saved and loaded your game, and also was completely broken in multiplayer.<br />
** The initial revised approaches we started with still involved sending speed groups over to the client, but this is just a huge amount of data and often a real pain in the rear to try to coordinate. A much better approach that we settled on is to actually keep the speed group data entirely on the host (rather like fireteams themselves), but then just share the resulting speed limits for any grouped ships.<br />
** We are sharing those speed limits in the form of sending the entire ship data, which is not a huge amount of data, but is nontrivial. Part of the reason for this is that we're aware that other slight divergences will likely happen in the few frames of movement after a group is created or disbanded, so a full sync is less likely to require a resync soon after. If we later find out something different, we can make it sync just the new speed limit in those cases.<br />
** Overall this new approach that we have now implemented should lead to a large bandwidth drop in multiplayer (all the other sync repair data), as well as the removal of certain ships seeming to "rubber band" to an area and then back as they try to move faster locally than the host says they can. This should also take less processing on the CPU on the host and in single-player.<br />
<br />
==== Hunter Bugfixes ====<br />
<br />
* Fix a bug where hunter ships against a Hostile To All faction might decide to attack one of your planets if you were on the way<br />
** Thanks to Zweihander2021 for reporting<br />
<br />
* Fix a bug where Hunter Fleet ships that spawned in waves against minor factions (Nanocaust, Dyson, etc) were able to go after the player, instead of remaining focused on the faction the wave spawns against.<br />
** Thanks to a number of people for reporting, including Democracy and cml<br />
<br />
* Huge thanks to Badger for fixing this!<br />
<br />
* Remove the hunter_targeting_this_faction_dies_immediately="true" tag from the dyson sphere, since that is no longer needed now that the hunter doesn't turn rogue and attack you anymore.<br />
** Thanks to Arides for reporting the exploits that you could get up to with this tag on, and to Badger for fixing the hunter code up.<br />
<br />
== Beta 2.764 Command Station Hotfix ==<br />
(Released March 26th, 2021)<br />
<br />
* Improve the text of an Objective to remove incorrect information about forcefields<br />
<br />
* The X map has been redone to make it more balanced and aesthetically pleasing. The old X map struggled badly with the Praetorian Guard mechanic (especially in the spire campaign) amonth other things.<br />
** The new map X map is more similar to AIWC's X map<br />
<br />
* You now get 4 FFs rather than 3 on mil cmd stations.<br />
** You still get 3 on logi stations.<br />
** You now get 2 on econ stations rather than 1.<br />
** Thanks to ArnaudB for sorting this out.<br />
<br />
* Fixed an error where until you clicked to the fleets tab, each fleet would say "Fleet type: ERR None". This was new since we started having the ability to click into fleets without going to the fleets tab first.<br />
** Thanks to GalacticZombie for reporting.<br />
<br />
* Fixed a regression in the most recent build where, thanks to some other better error handling, the "you don't have X mods enabled right now, would you like to?" function for savegames was no longer working.<br />
** This now works again, and has been generalized out more so that it is easier for us to not have this break in the future.<br />
<br />
* Remember in the last release notes, I said I was removing some fleet leader memberships and that it didn't seem to be a problem but also didn't solve the bug I was hunting at the time? Turns out it was a problem, in that it made it impossible to build command stations since their memberships would be auto-deleted as you attempted to do so.<br />
** That bit of code has been reverted, since it was wholly unneeded in the first place and just caused problems.<br />
** Thanks to Zweihander2021, zeusalmighty, Lord Of Nothing, and many others for reporting.<br />
<br />
* Fixed a couple of regressions from the last month that were related (I think) to a fix put in to support certain flavors of linux mouse handling raycasts. All of the functionality should be correct for all OSes and flavors of those OSes, now.<br />
** One of the problems was that if you were hovering over the UI, it could still show the battlefield or placement cursor, either stuck in one spot, or locked up to the top right-hand corner of the screen. It now no longer shows those cursors at all when your mouse is over the UI, which is what you'd expect.<br />
** The second problem was that some combinations of clicks, and this seemed to vary by OS, could actually wind up activating orders to ships or placement of structures when you were still hovering over the UI. That could lead to insta-placement of command stations in the upper right of the grav well, or similar for turrets and such.<br />
** IF this was a longer-term issue than we thought, then it could also explain why some units were seeming to randomly path to the upper left right (you were accidentally giving them orders, if that's what this was -- we always suspected decollision, but maybe it was this all along). If this was indeed what was happening, then this issue has actually existed for years and was not related to our linux fix a month ago.<br />
** Thanks to Arquebus X and mashtong54 for reporting.<br />
<br />
== Beta 2.763 QoL Explosion ==<br />
(Released March 25th, 2021)<br />
<br />
* Whenever you click a button or icon or other clickable element in the UI, it now causes it to immediately update no matter what.<br />
** This makes interfaces way more responsive to player clicks, but without having to turn on the unrestricted updates method, which causes framerate drops.<br />
** Additionally, when it comes specifically to the planet sidebar, it had TWO update timers limiting it (the general purpose one, and then one that predated that which did the same function but was just for that ultra-heavy ui window).<br />
*** The interplay between the two of them led to that specific sidebar to feel extremely laggy, and it was only somewhat better when you put the unrestricted ui update speeds on there. Now it flows vastly better and more consistently, and in particular collapsing and expanding sections happens instantly like you would expect.<br />
** Thanks to Daw11 for reporting the sluggishness.<br />
<br />
* Added another batch of names to the standard naming list.<br />
<br />
* The scourge are now smarter at using their builders to expand when there's available territory<br />
** Thanks to Ecthelon for pointing out some inefficiencies<br />
<br />
=== Planet Sidebar Improvements ===<br />
<br />
* In the event that a player's fleet leader on the sidebar does not have an overlay icon, but is assigned to a control group, then it will show the control group number in the sidebar directly.<br />
<br />
* On the sidebar, fleet leaders now always have their own line item no matter what, so that you can hover over them and get their tooltip information for each specific leader.<br />
** Often you'll have a couple of support factories, or several identical transports, and those should not collapse down in that way.<br />
<br />
* On the sidebar, added a new option under the options section, which lets you switch between the existing icon mode, and a new text mode.<br />
** Ships can either be listed as icons in a grid, or wider text entries in rows. The icons are the classic view, but the text is much easier to visually understand, and is the new default.<br />
** This turns out to be vastly less tall than we thought it would be.<br />
** Thanks to Arquebus X and GalacticZombie for being the most recent to request this.<br />
<br />
* On the left-hand sidebar, when you have it broken out by faction, it now shows a color on the strength count for that faction that indicates their relationship to you.<br />
** When you hover over the header to see more about their strength breakdown, it then also explicitly says if they are your ally, enemy, or neutral, etc.<br />
** This was basically impossible to find in the recent builds unless you still used the by-relationship version of the sidebar.<br />
<br />
=== Selected Ships Window Improvements ===<br />
<br />
* The selected ships window in the bottom right corner now shows ship icons in your ship color, if you have actual ships selected (versus selecting and entire fleet).<br />
<br />
* The selected ships window in the bottom right corner now uses the shortened name of ships (if there is one), for the same reason the build sidebar does. Essentially being able to see things that otherwise might be too long and wrap.<br />
** Thanks to NR SirLimbo for suggesting.<br />
<br />
* In the event that you have selected an entire fleet, and the fleet is assigned to a control group number, that number now shows to the left of the fleet name in the selected window.<br />
<br />
* The way that the selection window sorts ships and fleets is now completely different.<br />
** Overall it helps to ensure that the order makes sense and feel more natural, so that you can see things more quickly.<br />
<br />
* Added a new "Selected Ships/Fleets Window" subsection to the Display section of settings.<br />
** Configuration relating to the window that shows the selected ships display in the bottom-right corner of the screen.<br />
<br />
* Added a new setting: Max Lines To Show For Selected Ships Before Scrolling<br />
** When you have a lot of fleets or ships selected, eventually it needs to scroll so that it doesn't go off the top of your screen. But depending on your HUD scale, and your monitor size in general, you may feel like you have more or less room that you want to use for this. The old default was 8 prior to this setting existing, but the new default is 16. Min 4, max 60.<br />
<br />
* Added a new setting: Include Selected Ships That Are Selected By Fleet<br />
** Normally the selected ships and fleets list only shows directly-selected ships, and fleets which are selected as a whole. With this setting on, if you select a fleet as a whole, it will still include all of the full list of ships from it down in the big list under the rest.<br />
<br />
* For purposes of the selected ships window, if you have drones selected that are in whatever modes (pursuit, etc), it does not show those buttons as lit-up now. You can't control drones, and their state is irrelevant for larger UI purposes.<br />
** Apologies for not being able to find who suggested this, but it was a good suggestion.<br />
<br />
* For tooltips over ship lines that are related to the selected window, it now includes the total count and strength for all ships of that type, even if some of them are part of a fleet that is not showing the details of what it is in itself.<br />
<br />
=== Fleet Management Improvements ===<br />
<br />
* Fixed a bug in the swap fleets screen where you could actually swap ships IN to unclaimed fleets, thus losing access to a ship line until you claimed the thing. Oops.<br />
<br />
* The fleet management window now shows the full cap strength of each ship line (including centerpiece) next to it.<br />
** Thanks to Badger for suggesting.<br />
<br />
* It is now possible to multi-swap several ship lines (from any number of fleets) into the fleet you are viewing.<br />
** The swap "in and out" is still single-item, but the "swap in from elsewhere" is now multi-swap. It's a straightforward difference when you see it in game, hopefully.<br />
** This is a huge timesaver, and it DOES properly handle multiple ship lines that are the same type.<br />
** We have not tested if this properly handles elites (cruisers) being swapped in and out of fleets that have them (supposed to be max one per fleet), but the code is in there to enforce it. We just don't know for sure if that works.<br />
** The multi-swap variant can never be used with fleet leaders, so that part is not a worry.<br />
** Thanks to TheIronBird, Zweihander2021, Strategic Sage, and Daw11 for requesting.<br />
<br />
* It is now possible to swap flagships between fleets, including golems for transports, or arks for golems, etc.<br />
** This only works for officer and strike fleets, not any other kinds of fleets (not support, not lone wolf, etc).<br />
** If the flagships are on different planets, they will be set to 1 health rather than the usual of being destroyed.<br />
** This can swap across factions!<br />
** If there are drones in the fleet, it should move them, but this part has not been tested. Only a few golem types really have drones, most of the rest of that is with combat factories, which cannot be swapped in this fashion.<br />
** Thanks to TheIronBird, Zweihander2021, Strategic Sage, and Daw11 for requesting.<br />
<br />
=== Settings And Options Improvements ===<br />
<br />
* The top line item of the game tab of the settings menu is a new "show advanced settings" toggle. It notes:<br />
** There are a whole lot of these, friend. If you're not already super into the game or having a specific problem, it's a good idea to steer clear of these. The defaults are awesome 99% of the time.<br />
** Any setting with is_advanced_setting="true" is no longer shown unless this is on.<br />
** That wipes out most of the settings, except for the ones that people commonly change.<br />
** That gets rid of all the debug ones, most of the game ones, all of the performance ones except those that have a large impact, a few of the excessive display ones, a vast majority of the audio settings including the auto mixing tools, almost all of the camera tab, and nothing on the network tab (since that was already pared down).<br />
** Note that there's still a lot on the display tab since those are things people tend to like to tweak. Given that these are often the chief complaints someone has in a non-advanced fashion, these staying non-advanced seems like a good idea even though this tab is overwhelming.<br />
** Most of the automation tab is non-advanced, which seems... maybe a good idea? Really unsure there.<br />
** The audio tab probably still has more than some folks expect, but these bits allow people to get at what they are looking at. Maybe it could be pared down slightly, but I'd do that with caution.<br />
** The elements left on the camera screen are very key, given those are the things that most often get changed to suit tastes.<br />
** Thanks to Strategic Sage for inspiring this feature.<br />
<br />
* Added a new General section to the Galaxy Options tab.<br />
** Inside that, added a new Show Advanced Galaxy And Faction Options setting.<br />
** There's a wild world of tweaks that you can make, many of which are going to feel mod-like in nature. If you like tuning things to your exact specifications, then these are for you. If you don't want to feel overwhelmed, this is probably safely left off.<br />
** Please note that this option not only affects the options tab, but also the factions tab.<br />
** This removes the vast majority of settings, most of which are truly advanced things for ultra-tuning mechanics. It leaves the things that are big decision-points that someone might consider while still playing the normal game experience.<br />
** Thanks to Strategic Sage for expressing how overwhelming this section had become.<br />
<br />
* The scouting section on the galaxy options tab has been removed, and its contents folded into the general tab.<br />
** That said, basically all of them are counted as advanced, and so are invisible.<br />
<br />
* All of the AMU settings have been marked as advanced, because by their very nature they are.<br />
<br />
* is_advanced_setting="true" can now also be set on custom fields for factions, and the factions tab then shows or hides them based on the option in the galaxy options tab.<br />
** Here again, the amount of customization options was getting intense, and this really dials that back.<br />
** The starting economic options on the humans have been hidden unless advanced are turned on(they were already marked as advanced).<br />
** On AIs, the type of the warden and in particular PG are all hidden unless advanced is on. And the hunter, as it turns out.<br />
** The DLC2 AI options have provisionally also been hidden under advanced. Because... they are. Even though they are super cool. Same with wormhole borer.<br />
** The added options on players that AMU adds are also hidden under advanced, same reason.<br />
** The amount of relief even I feel when looking at these de-cluttered screens now is palpable, I have to say. It's like a giant weight off, especially with AMU in the mix. That said, having the power of all this by turning on advanced feels like a superpower, so we have a double win.<br />
<br />
* In the single player lobby, it no longer shows the "humans controlling this faction" stuff. That's only in the MP lobby now.<br />
<br />
* On screens where there are hidden advanced settings, it now tells you that those are there, and how many. That way if you are curious, you never need to worry if you're missing something.<br />
** There are some particularly cool AI settings in DLC2, for example. Those let you really customize how the flow of the map is. But... it's a huge amount of clutter if you're new, or not planning on looking at that right this second.<br />
<br />
* Added a new advanced option for AIs: Universal Difficulty<br />
** Most of the time, having the AI, Hunter, Warden, and Praetorian Guard Difficulty difficulty levels all match within an AI faction is the desired setup.<br />
** With this setting enable, the subfaction difficulties will be set to match that of the main faction. Key note: that means if you do make changes to them individually, you need to disable this setting or else the central setting will override!<br />
** This now defaults to ON!<br />
<br />
* The difficulty levels for the sub-factions of the AI are now hidden by default, behind the advanced settings, since Universal Difficulty will take care of them for you unless you want to break them out separately.<br />
<br />
* The following settings are now stored in the "graphics settings" file that is NOT synced between computers during Steam or GOG cloud sync.<br />
** Essentially these are per-computer settings, versus settings that really should be shared between computers.<br />
** This already included all the things related to the screen resolution and windowed mode, and even SOME of the color grading settings. So none of those are changing. All of the rest of what is added will have its values reset to default in the next version if you've changed it from the defaults:<br />
** Galaxy map bloom, and hexagon intensity.<br />
** Sound mixing subsection.<br />
** Performance CPU Load settings including Use Unrestricted UI Update Speeds, Parallel Faction Processing (should leave this ON!).<br />
** Performance Visual Load settings.<br />
** Performance Visual And RAM Load settings.<br />
** Mouse scroll speeds and inversions.<br />
** HUD Scale (hey, different monitors and different needs).<br />
** All of the camera speed modifiers.<br />
** Thanks to marty651 for reporting, and pointing out how so many of these will still vary between machines.<br />
<br />
* The little "there are x hidden advanced fields" text things are now clickable directly to give you an override of that feature on whatever tab you are on until you switch tabs. This makes it SO much more convenient to quickly examine just a few fields you are curious about, and/or make changes with them.<br />
<br />
=== Ship Short-Name Improvements ===<br />
<br />
* The combat factories, transports, and forcefield generators now all have shorter versions of their names for use in the sidebar and the selected ships window.<br />
** It's likely that there are other types of ships and structures that have long names that will wrap inappropriately, and just let us know as you find them, please.<br />
** For instance, human home command and some of the other structures there now also have shorter name versions.<br />
** Most capturables now use the acronym that people commonly use for them.<br />
** Various strikecraft need and now use abbreviations on themselves.<br />
** Turrets all have a shortening to "Tur" at minimum, if not more.<br />
** Guard posts now all just say GP, since that's easier to see. And guardians are now GU, since that's easier to tell apart than GD would be.<br />
** Overall where we can spare a word and still be clear, we're doing so. Orbital Mass Driver is just Mass Driver on the sidebar. Easier to see that way.<br />
** There's still plenty more we have missed, without a doubt. Volunteer helpers with this would be greatly appreciated.<br />
<br />
* All of the various scourge units in DLC1 and DLC2 now have shortened name variants for the sidebar so that they don't wrap and can be understood.<br />
<br />
* All drones now have a short sidebar name that uses the designation DRN.<br />
<br />
* Frigates are now either in the Heavy or Light class, and for their abbreviation now say either FFL or FFH.<br />
** So far, the only frigates noted as heavy are the lost spire frigate, spire raider frigate, imperial spire frigate, darker mirror, phantasmal host frigate, heavy minelayer frigate, and the forcefield frigate and its variants. However, that will change.<br />
** Thanks to Zwei for suggesting, and for helping out with corvettes, destroyers, cruisers, and strikecraft.<br />
<br />
* For cruisers, we're now using the designation CC, and for destroyers, the designation DD. Battleships are BB, dreadnoughts are DN.<br />
** Lesser and Greater are being denoted as Ls and Gr.<br />
** For corvettes, those are K, and if strikecraft are ever mentioned with a designation, it's SC.<br />
** For station-keepers, they get a P in front of the rest of their designation. So a station-keeping frigate is PFFL if it's a light frigate.<br />
** For turrets, the designation is TUR, and for golems it is GOL.<br />
** One of several good sources: https://en.wikipedia.org/wiki/Glossary_of_military_abbreviations<br />
<br />
* Astro Trains now use the designation Astro T.<br />
** Astro Train Guards use the designation TGU.<br />
** Battlestations now use the designation BST.<br />
** Citadels now use the designation CIT.<br />
<br />
* In the long name for ships, anything that started out as "Drone Whatever" is now "Whatever Drone."<br />
** This was the norm for most ships already, and helps keep things sorted together by function on lists. Now it's fully consistent.<br />
** In DLC2, we have some stuff that starts with Drone, but it's not actually a drone -- it's a thing like a Drone Factory or similar, which helps us tell that it's not a thing that IS a drone, but it ACTS on drones.<br />
<br />
* Any minor faction beacons now use the short name designation of BEAC.<br />
<br />
* For things like the AI Eyes, which change forms, their short names now start with the same word but put the form change at the end.<br />
** For sorting purposes, this keeps their order the same, and makes it so that they don't just around in the unit list as their alert status goes on and off.<br />
<br />
* All of the various engineers are now denoted in short form as ENG, with a shortened modifier after that if need be. Again, so they all show right next to each other easily on the sidebar and similar.<br />
<br />
* Fixed a variety of cases where the short name from a base unit was being applied inappropriately to a variant (among all the cases where the application was appropriate).<br />
** This was the big thing we were worried about, in the main game and in mods, but we've used the new export spreadsheet (see below) to weed this out for the main game, at least.<br />
<br />
* Units that are Dire now have a D in front of their short-form designation (DGU, DGP).<br />
** Units that are Royal now have an R in front of their short-form designation (RDGU, RGU, etc).<br />
** The readability and organization of this turned out to be a lot more substantial.<br />
<br />
* Anything with the word Gunboat in it now uses the acronym GBT in the short name form.<br />
<br />
==== Critical Note For Modders ====<br />
<br />
* The game now silently complains into your log on startup if any unit's effective "display name for the sidebar" is longer than 18 characters.<br />
** For anyone with a mod, xml or otherwise, this is a great time to boot up your mod and see if errors are going silently into the log when you do.<br />
** If so, this is a case where ideally you stick to the central conventions for shorter names, or make up new ones where you need to. This makes a lot of interfaces more consistent and tidy and readable (and prevents wrapping on certain screens that are otherwise unreadable).<br />
** The full names of ships can continue to be absurdly long, as much as you want.<br />
** Note that display_name_for_sidebar inherits separately from display_name, so if you are changing that as you inherit from things, you need to be sure to change that anyhow.<br />
** For convenience, it states the name of the expansions or mods in question for each item.<br />
<br />
* Our "GameEntityReferenceData.csv" export has been updated to include far more information, including the long and short names of ships, their internal name, what mod or expansion or both they are from, and to be sorted by mod and expansion before name.<br />
** It also includes the length of the short name, and makes it easy for us to figure out if there are any mismatches between short and long names (those are bad). The internalname is never seen by players, so is often mismatched, and that's no problem.<br />
** Long name is display_name (DisplayName), and short name is display_name_for_sidebar (DisplayNameForSidebar). It's used on more than just the sidebar now.<br />
<br />
* There is a new xlsx excel file that we are distributing with the game, which modders or players can paste data into on the second tab, from the csv file, and then have nicely-formatted data with conditional rulesets to help find problems, and things of that nature. This should make a lot of life much easier for folks looking to find inconsistencies.<br />
<br />
=== New Mods! Tame DS and Powerful Cmd Stations ===<br />
<br />
* Added a new Tame Dark Spire mod by ArnaudB, made thanks to the inspiration of FwiffoForce.<br />
** A mod that prevent Dark Spire from expanding. Either in normal games or during Fallen Spire campaign. They won't build locus.<br />
<br />
* Added a new Powerful Command Stations mod by ArnaudB.<br />
** This changes the way Command Stations work, shifting forcefields to the stations themselves: you get a cheap economic station for 60k, a shield protected logistical one for 200k, and a VERY powerful military station that cost 500,000 metal. <br />
** A hull tech for Command Stations is added.<br />
** Stations have no bonus turrets.<br />
** In addition forcefields are rebalanced here. You start with one on every station, but you can hack for more at the ODSS.<br />
<br />
=== Mod Updates ===<br />
<br />
* The Shield Generators mod by cml has been updated to meet the new standards.<br />
<br />
* The More System Defenders mod by CRCGamer has been updated to include the new short-name styles.<br />
<br />
* Spire Railgun Shop by Lord of Nothing has been updated to include the new short-name styles.<br />
<br />
* AMU:<br />
** Reorganized the base types: Instead of just Strike Craft and just Frigates there are now Light/Medium/Heavy variants of those similar to how Small/Medium/Big turrets work, with escalating "suggested base stats" and values.<br />
*** Mods now using these types will likely have different icons, sizes, targeting priorites etc for some ships based on this. Too many minor changes to count...<br />
** Brought other types in line with that.<br />
** Added Destroyer and Cruiser base types.<br />
** Removed the LargeShipNonStackable base and replaced it with a Battleship and Dreadnought base type.<br />
** Added sidebar-display-names for all the AMU base entities based on what Vanilla uses.<br />
** All variants of the AddToShipGrantList() function now require a multiplier for frigates, since these are usually much much stronger than strike craft ship lines.<br />
* Extended Ship Variants:<br />
** Added sidebar-display-names for all the AMU base entities based on what Vanilla uses.<br />
** Copies from the Cloaked and Parasitic variants of the Viral Shredder no longer state that they are copies. They are supposed to just "mix in" with the real ones.<br />
** The Shredder Frigate now uses the AMU Medium Frigate base type.<br />
** The Sharpener Frigate has been renamed into the Heavy Sharpener Frigate. It always was a heavy one, but didn't say so.<br />
** EMP Missiles no longer count as Strike Craft but as Frigates.<br />
** All of my mods put the short ship definition (FFL = Light Frigate, C-FAC = Combat Factory, etc) to the REAR of the game entity type. ESV changes the Vanilla Combat Factories to do this as well.<br />
* Kaizers Marauders:<br />
** Began using the new AMU base types.<br />
** Added or changed sidebar-display-names where needed.<br />
** The Disrupter Corvette is now the Disrupter Heavy Corvette, and as such is a bit larger and has more mass and engine power.<br />
** The Light Sting Frigate was renamed into the Sting Light Frigate to put the size in front of the ship type.<br />
** The Rampage Frigate was renamed into the Rampage Heavy Frigate, and as such is a bit larger and has more mass and engine power.<br />
** The Raid Cruiser was renamed into the Raid Seeker, due to it not actually fitting in with DLC2 Cruisers at all.<br />
** The Raid Battleship was renamed into the Raid Super Battleship, due to it not actually being a Battleship, whenever those actually become a thing, of any sort.<br />
** Kaizer's [Spire] Dreadnought was renamed into Kaizer's [Spire] Super-Dreadnought, due to it not actually being a Dreadnought, whenever those actually become a thing, of any sort.<br />
** Frigates hacked now have 4x the strength cap they had before, leading to way higher and more significant counts, fitting in better with the Vanilla Frigates.<br />
* Micro Mod Collection:<br />
** Added sidebar-display-names where needed.<br />
<br />
* Kaizers Marauders:<br />
** Reduced the Hull of the Sting Light Frigate from 25k to 15k, Shield from 125k to 85k and Damage from 40k to 25k. In return the metal cost was reduced from 104k to 67.5k and the energy cost from 6k to 4k.<br />
** In return Marauders and players if they hack it now get about 35.1% more, and they are about that margin cheaper.<br />
** The purpose was to bring it in line with other Light Frigates, which have around 1-ish strength. The Sting Light Frigate now has 0.97s, down from before 1.51s. At that strength it would've been what I consider a Medium Frigate.<br />
<br />
=== Balance ===<br />
<br />
* Adjusted HRF special ARS ship grant caps to be actually competitive after recent adjustments to Dark Spire and Dyson.<br />
** Concussive Defender 4 -> 8<br />
** Tesla Defender 4 -> 6<br />
** Grenade Launcher Protector 4 -> 6<br />
** Nucleophilic Protector 3 -> 4<br />
** <br />
** Pike Defender 13 -> 30<br />
** Raider Defender 13 -> 30<br />
** <br />
** Vanguard Defender 13 -> 15<br />
** Pulsar Tank Defender 13 -> 15<br />
** <br />
** Metal cost of Concussive Defender adjusted from 80K to 40K. (It has half the health of any other frigate offering here.)<br />
** Concussive Defender speed adjusted from 500 to 600. Same for Tesla Defender.<br />
** <br />
** HRF Special ARS adjusted to allow up to three hacks. Expected costs of 12, 18, and 27 HaP for each hack.<br />
** Thanks to CRCGamer for noticing, and making these changes!<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in one more check that could still happen when returning entity orders to the pool from multiple threads. It would cause a visible popup of "Mismatch on ClaimedByEntity_Internal" now, but was not a constant thing, so didn't slow down the game like before.<br />
<br />
* We were still having some (legitimate) errors with entity orders going back into the cross-threading pool after being split between multiple entities improperly. It's rare, but now rather than showing an error message when that happens, we just discard the invalid order instead of putting it back into the pool where it might further compound errors. The garbage collector will pick it up, and all will be well. This has been an interesting exercise in cross-threading memory cleanup.<br />
<br />
* The TSS and ODSS and similar structures now should automatically correct any too-high ship/turret/etc line grants that they have. This doesn't affect things like the ARS or FRS.<br />
<br />
* Remove some debugging code that was spamming ArcenDebugLog messages about enemy king attackers<br />
** Thanks to Daw11 for reporting and Badger for fixing.<br />
<br />
* Fixed a minor visual bug where on a bunch of windows, the start of the first line was 6px too high, and thus sometimes actually cut off.<br />
<br />
* ArcenDynamicTableRows now properly are linked to expansions and mods that originate them (not ones that just alter them with a partial record).<br />
** This DOES include rows that originate from a copy_from from some other source like the main game or a different mod or expansion.<br />
<br />
* The "skip_export" xml tag is no longer used, although it can be left in place on units.<br />
** We actually specifically want ALL of our units to export now.<br />
** Just for cleanliness, we have removed that tag from all of the units in the main game and expansions.<br />
** Also removed some of the last graphicsdone="true" references from our own xml.<br />
<br />
* Fixed a bug in GetDisplayNameInternal() for factions that could still throw an exception during stringbuilder creation of names, because of the field we marked as ThreadStatic... not being static. Heh. This is more efficient now in general, as a side bonus. <br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed an exception that could happen when writing tooltips for units that were already maxed out at mark 7.<br />
** Thanks to Badger for reporting.<br />
<br />
* A mysterious error in ActuallyFireSalvoAtTargetPriorityList() appeared in a multiplayer game, but we have no idea what it was. That code has now been fully instrumented so that next time it happens, we can actually fix it. It is either MP-specific, or related to a new feature on the beta branch, probably.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed an oversight that would lead to exceptions on EjectEntireStackFromMyselfIfPresent() on multiplayer clients. That code simply should not be run on clients.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed an exception that could happen in strength counting, mostly in a cross-threading fashion but maybe slightly more likely in multiplayer. A side effect of this change is that the code is also very slightly more efficient now, too.<br />
** Thanks to Badger for reporting.<br />
<br />
* Put in an (untested) fix for the ability to watch fleets in multiplayer not working reliably. This was related to the player account ID and how it was sent, most likely. We now explicitly send it.<br />
** Thanks to Badger for reporting.<br />
<br />
* The game now clears out old stale fleet leader slots on player fleets. This is essentially when you've transformed the type of the fleet leader, or switched what kind of command station you had, but it still had some old data.<br />
** This may not wind up being needed or a good idea, but it does remove some ambiguity and does also make savegames a tiny bit smaller. We thought this was responsible for a certain bug, but it was not.<br />
<br />
* Fixed a minor bug in the fleet list of units where elites could wind up showing ahead of fleet leaders.<br />
<br />
* Updated a number of journal entries and tips to be a bit more accurate to the new paradigm.<br />
** Thanks to Lord Of Nothing for pointing out some holes, and CRCGamer for filling them.<br />
<br />
== Beta 2.762 Performance Hotfix ==<br />
(Released March 22nd, 2021)<br />
<br />
*Changed the golem so it does damage again properly.<br />
**Since zombification isn't affected by bonus multiplier, Botnet can indeed zombify guardians<br />
**After considering, this was left in since Parasite Citadel can do the same for 30 AIP with only less efficiency. Botnet will (probably) be allowed to do the same for 40 AIP till zombification-mechanic get some update.<br />
** Thanks to ArnaudB for doing this.<br />
<br />
*Dyson Sentinel had a 0.19 strength multiplier, making it looks much weaker than it was.<br />
**Totally not a bug made into a feature: Dyson units now have a 0.50 strength multiplier and their description reflect this.<br />
**This gives hackable Dysons an 'unique' ability useful to the player, to avoid triggering eyes for instance.<br />
** Thanks to ArnaudB for doing this.<br />
<br />
* Updated the wording on the mark 2 and 3 increases for the AIs when attacking their homeworlds and nearby planets to say "if you have at least 10 strength outside of transports" rather than the more confusing "if you unload at least 10 strength from a transport."<br />
** Thanks to fighterman481 for suggesting.<br />
<br />
* Fixed an exception that could happen in ClearOrders() at debug stage 400.<br />
** Thanks to alocritani for reporting.<br />
<br />
* Fixed a bug from the last (non-hotfix) version that was causing the Player.log to be spammed with "Mismatch on ClaimedByEntity_Internal when returning to the pool!" errors.<br />
** This was causing massive amounts of lag in all sorts of unexpected situations, and the main predictor of just how bad the lag was, was how busy your hard drive was and how long you had been playing (this would get exponentially worse over time).<br />
** The root cause here was me moving when a variable was nulled-out in order to make cross-threading issues less likely. However, after that point it does a validity check and complains if there is a problem. This check is important, but it was always now failing against a now-null variable.<br />
** The validity check now uses a local copy of what is nulled out, so spurious errors aren't thrown. Additionally, if it DOES have an error, it will now go to the main log and the display, so we don't get surprise hidden problems like this.<br />
** Thanks to Sigma7, Metrekec, ArnaudB, alocritani, Badger, and others for reporting.<br />
<br />
* Fixed some more hidden log messages that would only go to the unity Player.log instead of the usual logs we look in. The only ones that were left in the game beyond the one we fixed just a moment ago were some relating to wave debugging being on. This would exhibit a similar style of mysterious performance drain if someone had that logging turned on for some reason and didn't know what log to look in, but it was very unlikely to ever actually be a problem. Still, better safe than sorry!<br />
<br />
== Beta 2.761 Hacking Hotfix ==<br />
(Released March 19th, 2021)<br />
<br />
* Fixed a bug in the prior release that made all hacks not show up for players.<br />
** Thanks to Sol for reporting.<br />
<br />
== Beta 2.760 Xenophiles And Overlords ==<br />
(Released March 19th, 2021)<br />
<br />
* Minor faction allied Scourge is now allowed to do outright invasions like the Marauders. This complements but does not replace the existing "Join minor faction allies" behaviour.<br />
** So if you have just a scourge on a team, it will invade the galaxy sometimes<br />
** If the scourge are with the marauders then the scourge can see that they have allies and can join them (this is the current behavior) <br />
<br />
* Added a new state_of_matter_to_become_on_wormhole_exit="YourStateOfMatterHere" and returns_to_default_state_of_matter_after_seconds_from_wormhole_exit="numberofseconds".<br />
** What it does is every time the ship exits a wormhole (this does NOT work when coming out of transports or exiting guard posts), it'll change to the other state of matter for X amount of seconds.<br />
** Completely untested so far.<br />
** Thanks to NR SirLimbo for suggesting.<br />
<br />
=== Planet Sidebar Enhancements ===<br />
<br />
* The data for which fleets you were watching in old savegames is now lost, sorry about that.<br />
** However, in new savegames where there is shared-faction multiplayer, the watchlists are now per-playeraccount, which means each person can just watch THEIR fleets that they are responsible for.<br />
** Thanks to Badger for requesting.<br />
<br />
* When hovering a Fleet's entry in the Planet menu, there's now a hotkey to toggle between being Watched and Unwatched. <br />
<br />
* Fleets with longer names now have their text size decreased<br />
<br />
* Instead of showing the raw number of ships (which is not as important as the Strength of ships), it now shows "Enemy Strength on Flagship Planet"<br />
** This way you can monitor multiple battles on multiple planets at once just by looking at the sidebar<br />
<br />
=== DLC2 Delay to May 18th, 2021 ===<br />
<br />
* Updated the release date for the second expansion to be May 18th, 2021. We all just needed more time to work on this and get it really in excellent shape. Apologies for the extended wait that keeps extending, but the added time has been a really positive thing for the base game (as you can see lately) as well as for the DLC itself (wow those units and factions are coming together). We really want to have something that is polished and awesome for you from day one for the DLC, versus scrambling to fix things on launch of it.<br />
<br />
=== The Xenophile Update ===<br />
<br />
*An update to shipline hacks from minor factions, making them use the new ARS/TSS multiple sectors system and aiming to make those hacks tempting instead of disappointing.<br />
**All shipline-Hacks on aliens cost more on hostile planets but less on friendly ones. Shiplines hacks are now much faster, but get much harder every-time you hack the same target (like ARS and TSS). <br />
**All shipline-Hacks on aliens now give +3 AIP per shipline hacked.<br />
<br />
*Dark Spire Wraith increased speed from 400 to 500. Damage reduced from 2800 to 1200, added x2 bonus damage against enemies below 80 armor, which includes most turrets.<br />
**Ship cap increased from 8 to 20.<br />
**Now a close-combat high-damage ship that's pricy and moderately tough. Much more compelling to use. The changes also affects base version and is effectively a nerf.<br />
*Dark Spire Phantom damage reduced from 12,000 to 4,000. Hackable version had 5000 before, it's now the same for both base and hackable version, like all others Dark Spire ships.<br />
**Ship cap increased from 9 to 14, like Bombard cap.<br />
**It's theoretially three times as powerful as a bombard, but has more weaknesses from bonus damage and lower range.<br />
*Dark Spire Specter ship cap increased from 4 to 8. <br />
**It's a powerful multi-shot anti-shield but no tougher than most frigates.<br />
<br />
*Dark Spire Constants changes:<br />
**Dark Spire Conversion ratio based on intensity is now 40/50/60 instead of 30/50/70 at low/mid/high intensities.<br />
**Dark Spire "Income per minute" multiplier is now 0.08/0.1/0.14 instead of 0.7/1.0/2.0 to reduce the impact of Dark Spire on its shiplines are hacked, as the shiplines have been balanced and the hacks have greater cost. Narrowed variance between intensity is safer for DLC3 rogue-like options. This also helps performance against vengeance strike caused by high energy income causing vengeance strike loops.<br />
<br />
*Dyson Sentinel health increased by 100% from 1800 to 3600, damage reduced by 180% from 4150 to 750.<br />
**The exemple of something going horribly wrong. It had enough DPS to rivalize three human lines of strikecrafts and really wasn't supposed to. With FRS it was gamebreaking.<br />
**Ship cap increased from 20 to 30.<br />
*Dyson Defender health increased by 200% from 2000 to 6000, damage increased by 100% from 1500 to 3000.<br />
**Another example of the messy balance of Dyson. It's now tougher than the Sentinel but slower with less range.<br />
**Ship cap reduced from 32 to 30.<br />
*Dyson Bulwark shield increased from 10k to 100k, half its hull. Damage of AOE weapon reduced from 4400 to 4000, damage of second weapon increased from 4150 to 6600.<br />
**Ship cap increased from 4 to 6.<br />
*Dyson Bastion shield increased from 10k to 100k, half its hull (not a hackable ship).<br />
<br />
*Alien hull tech cost lowered to: "500,1000,2000,3000,4000"<br />
**The first two levels are meant to be cheap, so players can easily get them. There is less science to go around so it's still a commitment, and you need to seriously increase AIP or/and spend a lot of hacking points in order to get enough alien shiplines to matter.<br />
*Sentries tech shifted to: "500,1000,2000,2500"<br />
**250 science of Level 2 shifted to level 1, level 3 lowered by 250 for aesthetic. Pricier level 1 means less autopicking level 1 and level 2 look more tempting even though the cost for level 1+2 is the same.<br />
<br />
*Destabilize Wormhole hack cost reduce from 120 to 20. A long delayed change due to being very low priority. It might be useful now.<br />
<br />
*Fallen Spire Frigate primary weapon damage reduced by 50%, added a secondary 20 shots weapon with dps equal to 50% of that reduced damage. DPS effectively unchanged.<br />
**This makes FS frigate a proper escort ship for capital ships, cleaning chaff while bigger ships focus on the bigger targets.<br />
**The primary reason for this change is performance. Big ships are the first to go down on both side, however when fighting the AI it often means the AI retreat once its big units go down. Over multiple battles, more and more 'chaff' ends up surviving as big units die. However big units are much more performance-friendly. This should greatly help early-mid and particularly late Fallen Spire games.<br />
*Fallen Spire Railfrigate from SpireShop mod has also been modified to fit. Its weapons values had been rounded upward, its secondary weapon hits 20 targets instead of 10.<br />
**Railfrigate now has 25k dps instead of 20k dps. Standard Spire Frigate has 30k dps and remains better stats-wise.<br />
**Its description mentions AI forces will focus it first, due to being it being a sniper. (This is why standard spire frigate survive MUCH better than railfrigate variant)<br />
<br />
* Huge thanks to ArnaudB for coming up with this and surprising us out of the blue with it! This is very exciting.<br />
<br />
=== Balance ===<br />
<br />
* Nerfed Polarizer base damage from 150 to 125.<br />
** Thanks to CRCGamer for making the change.<br />
<br />
* Added a new only_show_when_max_ai_difficulty_is_greater_than_or_equal_to and only_show_when_max_ai_difficulty_is_less_than to hacks (they default to 0 and 99, respectively).<br />
** The idea here is to let us have variants of the hacks for different difficulty levels, or different difficulty ranges.<br />
** Normally hacks already scale by difficulty, but some just don't scale well across difficulties, and trying to otherwise massage the numbers to make that work just is not always feasible.<br />
** This actually gives us substantially more freedom, because it allows us to completely swap things out at different levels if we want to.<br />
<br />
* There are now three versions of the superterminal hack. One for difficulties 7 and down, one for diff 8, and one for diff 9+.<br />
** The 7-and-down version has been returned to historical values, which are much more severe. Strategic Sage pointed out just how weak the response was after our recent round of nerfs, when it comes to those difficulties.<br />
** Currently both difficulty 8, and difficulty 9+, use copies of the same new-nerfed values, to keep those responses from being so absolutely insane. It may be the diff 8 actually needs to be a bit stronger, not sure. But essentially the scaling on this particular hack was just so intense that at 8+, and 9+ even moreso, the hack was almost impossibly difficult based on testing by ArnaudB and others.<br />
** Please let us know what your experiences are at difficulties 8 and 9, so that we can tune those up or down a bit more, as needed.<br />
<br />
* Further change: the difficulty 10 superterminal hack is now back to the pre-nerf values as well, and diff 8 and 9 can now be balanced independently. Those are both still at the nerfed values, but if they are too easy, please let us know.<br />
** Thanks to Strategic Sage and Metrekec for reporting.<br />
<br />
*Botnet golem now works like Sabot Guard Post: x100 damage against targets below 100 tx. It can attack everything and its damage, for both base and AI-version, is 1% of its previous damage. So same damage with multiplier.<br />
**A realization this was a much better way to handle Botnet while working on DLC2 golems prompted this change. This should solve the weird targeting oddities Botnet had, particularly with its excessive tendency to rush into enemy forces.<br />
**AIP cost reduced from 50 to 40. It cannot be buffed by FRS and it's immensely pricier to repair, so like Hive Golem an AIP cost reduction is justified.<br />
** Thanks to ArnaudB for orchestrating.<br />
<br />
* Two additions to the Watchman Frigate station-keeper.<br />
** First it has 33% reduced damage taken from anything that has arrived on the planet it is protecting within the last 12 seconds.<br />
** Secondly it always only takes half damage from opponents with an albedo of .7 or higher which is mostly stealthy cloaked types. It is named the Watchman after all.<br />
** Thanks to CRCGamer for coming up with and implementing this.<br />
<br />
*Spire Dreadnought only gain +50% damage to its beam weapon compared to the battleship, however it gains a secondary 20 multi-shots weapon like the frigate, with as much dps.<br />
**It has effectively 150%+150% damage compared to battleship, it's 3x as powerful instead of 2x.<br />
**The Imperial Spire Dreadnought also benefit from this, and should be able to clean up the map much more easily, leading to better performance.<br />
** Thanks to ArnaudB for setting this up.<br />
<br />
=== The New AI Overlord Phase 2 ===<br />
<br />
* Added forced_to_be_this_state_of_matter_when_on_former_or_current_ai_homeworld_or_bastion_worlds, which can make units be a certain state of matter when at current or former AI Homeworlds and Bastion worlds.<br />
** The AI Overlord Phase 2 now has this set to solo-phase, which means it has time to escape from its planets and for you then to be able to fight it.<br />
<br />
* Normal AI threat (which doesn't last long, since usually it joins the hunter fleet) now considers the AI Overlord to be perpetually in danger if it is Phase 2, and so should move to protect it more.<br />
<br />
* When the AI Overlord has moved into Phase 2 AND is no longer phased out, the AI sub-factions now abandon whatever they were planning and move in. This may mean that the PG starts striking at a very inopportune time for you, which should be pretty exciting.<br />
<br />
* Added a new findNearestHumanKing() to the faction utility methods.<br />
<br />
* There is a new should_not_be_given_normal_orders_by_ai_logic="true" that we can assign to certain units to exclude them from fireteams and other rational behaviors. For these we can then give them some sort of other logic.<br />
** There is should_always_be_given_orders_to_attack_player_king="true" that can be combined with the above, and when that has been done, it will send that unit on a path of destruction to the nearest human king.<br />
** Phase 2 of the AI Overlord now has both of these behaviors, while the rest of the AI forces that are subordinate to it are mostly focused on defending it and supporting it (so will come along kind of despite themselves).<br />
<br />
* For the first time, the AI Overlord Phase 2 now properly shows up on the normal galaxy map as an icon. Very important now that it's running for you so fast.<br />
<br />
* The AI Overlord Phase 1 no longer gives you any science or hacking points. That was making the end of the game too easy.<br />
<br />
* The AI Overlord Phase 2 can now pass right through forcefields (in addition to having the Norris Effect), so your military commands can't just block it.<br />
<br />
* The movement speed of the AI Overlord Phase 2 has been dropped from 400 to 300, and its health has been adjusted from 25 million to 64 million.<br />
** Its parasite bolts have also increased in salvo size from 60 to 80.<br />
** Hopefully this is an appropriate amount of terrifying; we shall see. In initial tests, it is definitely very Terminator-esque, which was the idea. It can still get caught and die on a single very heavily defended military homeworld choke point if there is one. Which is fine, good on you if you have that sort of defense!<br />
<br />
* Thanks to Metrekec, ArnaudB, Badger, and Zeus for the discussion that led to this.<br />
<br />
=== Player Command Station Balance Adjustments ===<br />
<br />
* Logistical command station balance adjustments:<br />
** Tractors down from 14 to 10.<br />
** Forcefields down from 6 to 3.<br />
** Gravity generators down from 6 to 3.<br />
** Base allied speed multiplier down from 3.5x to 2.5x, plus 0.5x per mark rather than 1x per mark.<br />
** Metal production down from 120 base + 80 per mark to 90 base plus 50 per mark.<br />
** Energy production down from 250k base + 100k per mark to 175k base + 50k per mark.<br />
** These are no longer quite such a huge standalone middle ground between economic and military. The goal is for people to use all three kinds, just in various ratios. These are also just not quite as good at slowing down enemies to a ridiculous degree like they used to be.<br />
<br />
* Military commadn station balance adjustments:<br />
** Tractors down from 22 to 16.<br />
** Immobile forcefields down from 4 to 3.<br />
** Allied attack multiplier down from 1.25x to 1.1x, and amount added per mark down to 0.15 rather than 0.25.<br />
** Defensive cap multiplier also down from 1.33 to 1.15.<br />
** Metal production down from 60 base + 40 per mark to 50 base plus 20 per mark.<br />
** Energy production alerted from 40k base + 20k per mark to 70k base + 10k per mark.<br />
** These planets were such insane roadblocks for the AI that the only thing offsetting them was player metal and energy. We want these to combo well with economic, but it was just a bit too much. The economic changes also make it more stand-alone on the energy side, but less so on the metal side.<br />
<br />
* Economic command station balance adjustments:<br />
** Forcefields down from 2 to 1.<br />
** Gravity generators up from 0 to 1.<br />
** Metal generation up from 250 base + 200 per mark to 400 base + 220 per mark.<br />
** Energy generation up from 400k base + 200k per mark to 500k base + 240k per mark.<br />
** These changes make them slightly more vulnerable even than they were before, but good grief can these power a ton of other planets in terms of metal and energy.<br />
<br />
* Thanks to Metrekec for the suggestions in this direction after his most recent difficulty 10 win.<br />
<br />
=== Bugfixes ===<br />
<br />
* When the nanocaust hive is destroyed the nanocaust stop doing anything; this is generally how hive-based creatures work. However, they now attrition much faster at this point, so we don't wind up having 3K nanocaust strength sitting around doing nothing<br />
** Thanks to TheIronBird for reporting.<br />
<br />
* Hopefully fix a problem hovering fleets in the Planet sidebar<br />
** Thanks to alocritani for reporting<br />
<br />
* Fixed a bug with the dark spire energy harvesting where, since the last build or so, it was not properly using the harvest ratios for the factions dark spire, macrophage, or devourer golem.<br />
** While we were at it, also made it so that it now properly harvests at a better ratio for the many subfactions of the AI.<br />
** Thanks to ArnaudB for discovering.<br />
<br />
* Removed a couple of exceptions that we were throwing as a sort of self-check in Helper_SendExoGalacticAttack_SingleExoTarget.<br />
** Essentially, the only time that these could fire is if an exo was just launching against a target right as that target died. In those cases it was leading to an exception, but that wasn't actually an error state, so there was no real point to this check at this point. In the past, it helped identify some edge case errors, but we're all good now.<br />
** Thanks to Sigma7 and Daw11 for reporting.<br />
<br />
* Updated beam weapons so that they no longer strike units that are invalid for them based on their normal targeting restrictions (aka, if they can only hit mobile units, then happening to pass over structures with the beam won't hit the structures anymore).<br />
** Also updated this for AOE in general, which had a code branch that was kind of mysteriously never being called. So if there is a minefield that a cruiser wanders over, for example, and the minefield only targets cruisers and things that are large like that, the minefield won't also damage nearby strikecraft anymore (essentially, that was likely to waste some of the power of the minefield in almost all cases, anyhow). If we need to make some further adjustments to this, we can, but right now the logic as it was before seemed to be a bit off to say the least.<br />
** Thanks to Sol for reporting.<br />
<br />
* Fixed a remaining exceptions that could still happen in ClearOrders() due to some cross-threading issues.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* The way that ship targeting works, if a target expects to be overkilled, no other ships will fire on it. This can sometimes backfire if the ship expecting to be overkilled is wrong about that. Or it can lead to ships that are closer who can fire faster shots to kill it faster waiting for a slow-moving shot from far away to arrive, which is also non-ideal.<br />
** We have now set this up where there is a two-pass system for ship targeting. In the first pass, things work like they have up until now. In the second pass, which only happens on systems that have 10s or less reload times (by default; not counting slowing or speeding modifiers), it now ignores overkill damage and if there are still any shots available within the current salvo, it fires on them anyhow.<br />
** This should solve a number of edge cases of "ships not shooting at targets that are in range," both in a short-term sense (big shot is incoming and it waits for it in a way that seems stupid) and in a long-term sense (something is wrong and nobody shoots anymore). However, this will need testing, since that was intermittent.<br />
** Thanks to CRCGamer and Democracy for reporting the latter case with Lanternfish Turrets.<br />
<br />
* Ships that have incoming shots attached to them, which is based around the concept of preventing overkill, now evaluate their lists of shots each sim step and cull any that shouldn't be there.<br />
** This happens for a variety of reasons, like ships that change states of matter, change planets, shots that are intercepted in some fashion, and so on.<br />
** It's really unclear if this data was sitting around and getting stale for the long-term over the last few years (until you save and reload), but it sure looks like it could have been. The more recent changes to the game have made it more likely to actually trigger, but the base thing seems to have been kind of old.<br />
*** Fun fact: we did have code for removing this sort of thing already, but it would ONLY trigger in the event that the shot that would be fired against the ship was not enough to kill it. So if a ship had a stale incomingshot, and it was at something low like 100 health left, and all enemies did at least 100 damage, then it would never reach the part of the code where it would clear the stale incomingshot data. This seems most likely to be what was going on with the Lanternfish Turret bug, but it's hard to be sure just yet. Please let us know what you find in the new version!<br />
** Thanks to CRCGamer and Democracy for reporting.<br />
<br />
* Put in a secondary check for unit death on them taking damage. This might hopefully help with ships that were taking self-damage but not actually dying until something else shot them.<br />
** Thanks to Zeus for reporting.<br />
<br />
* Added the following to the Zenith Trader description: When it is on one of your planets, you will see its wares in your Build menu in a section near the bottom.<br />
** Thanks to Lyrad8791 for alerting us to the fact that this was never specified anywhere in the game.<br />
<br />
* Fixed a bug in the galaxy map filters where if you chose the "Normally invisible" option, it would just throw endless errors rather than showing you a value.<br />
** Thanks to alocritani for reporting.<br />
<br />
* Some factions can request that threat against them go back to guarding (like zombies, dyson sphere, etc). This request was not being always honored, especially the Dyson, which could to vast quantities of threat against the Dyson that would eventually go after you.<br />
** Thanks to Badger for finding and fixing.<br />
<br />
* Rather than the previous logic (from inwork on this release) trying to get rid of threat against other factions, which was either too aggressive or not aggressive enough, we now have a hunter_targeting_this_faction_dies_immediately="true" that has been added to the dyson sphere factions.<br />
** Essentially, if hunter are after them, it's time for those hunter units to die. Those were the ones coming after your homeworld erroneously. If it's other forms of threat against that faction, or threat in general against other factions, those seem okay.<br />
** Thanks to Arides, ArnaudB, and others for reporting. And big thanks to Badger for advice on how to best make this work.<br />
<br />
* Similarly, for the warden and praetorian guard, if they are targeting a faction that is nowhere near them, then they now also get killed off.<br />
** This solves some issues where they were building up against a secondary faction, then could not reach them anymore (probably because they murdered the threat), but now they just sit around like idiots.<br />
** Killing these units allows them to respawn better ones that actually will do things like defend their homeworld from the players.<br />
** We don't know for sure this is why some PG were sitting off to the side, but we suspect it could be related.<br />
<br />
* Fixed some issues that could cause the inability to deserialize a savegame to get you into a strange invalid state rather than just telling you it didn't work.<br />
<br />
== Beta 2.758 Threat Explanation ==<br />
(Released March 16th, 2021)<br />
<br />
* Tweaks to the new planet sidebar:<br />
** If Watched and Local fleets are both below the Ships, Watched fleets are above the Local fleets.<br />
** If a fleet is both watched and Local it now appears under Watched rather than local.<br />
** If a fleet is local, its hotkey is now shown in green. This way you can now tell which of your watched fleets are local.<br />
** Hovering the fleet in the sidebar now gives text similar to the Fleet Health menu<br />
** Thanks to Badger for proposing and for implementing these!<br />
<br />
*Plasma Guardian lowered Albedo from 0.4 to 0.3<br />
**Absence of commonplace counters made it too problematic in waves, this makes it vulnerable to tractor which it does have bonus damage against.<br />
** Thanks to ArnaudB for adjusting.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a bug where crippled flagships in the Planet bar were reporting 2 ticks of health instead of 1 tick<br />
<br />
* Add some more debugging to errors in exogalactic strikeforce generation<br />
<br />
* Fix a bug where you toggling fleets between Watched and Unwatched would fail<br />
** Thanks to Daw11 for reporting<br />
<br />
* Added a fix to situations where the AIP was zero potentially causing GetSpendingRatios() to have a divide by zero error. Maybe this was just something that happened on initial game load for part of a second while data was being loaded, it's not clear, and maybe it's only on certain machines with (particularly fast?) types of multi-core setups. At any rate, it will now handle this gracefully instead of shutting down the AI faction, and it shouldn't even be an error anymore.<br />
** Thanks to Master Frost for reporting.<br />
<br />
* QueueLogJournalEntryToSidebar() has been updated so that the old version is obsolete, and modders and similar need to update their code to use a new version that has an OnClient enum parameter.<br />
** This new parameter generally tells the game to either ignore this on clients -- almost always a good idea, unless this is something detected only on a single client only -- or run this on the host only.<br />
** The default for anything that is still using the deprecated versions is that it will run on the host only.<br />
** Essentially, these are quite midsize messages that should not be going out in large batches, but sometimes were. This would potentially swamp a multiplayer game, potentially if it actually created all those journal entries at the far end (you'd have tons of duplicates and savegames would be strangely large.<br />
<br />
* Fixed the following journal entries that were at bare minimum happening too frequently in multiplayer because client were trying to do it, but may have happened even more than that.<br />
** First time met PG, hunter, AI reserves, warden, dark spire, astro trains, dark zenith, outguard.<br />
** All the various astro train secondary notices.<br />
** All of the "base lore" journals for the various races and similar.<br />
** Imperial spire arriving, and nanocasut invasion starting.<br />
** All of the other journal entries were fine. Things like the beginner journals, info on allies, zenith architrave stuff, extragalactic war starting, and many various other more specific situational ones were already MP-safe.<br />
** Thanks to Badger for noticing the insane number of these that were being queued in his multiplayer games.<br />
<br />
* The AI Defenses galaxy map filter no longer shows data for unexplored planets.<br />
** Additionally, it now only shows the amount of defense that you actually know about, and if there are more that you don't know about it shows a + sign after it.<br />
*** This in itself does reveal some information to you, but that feels appropriate. Is this one unit we're talking about, or 5000? Something more is there, but how much?<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Fixed an issue with the new planet sidebar where it was not properly caring about the amount of time units had been on a planet when deciding what of them to show in the new by faction and by faction and mobility views.<br />
** We haven't been able to replicate the issue, but we've seen the screenshots and also we saw the wrong code. So hopefully fixing the wrong code will fix the issue that others were seeing.<br />
** Thanks to Daw11 and Zweihander2021for reporting.<br />
<br />
* Fixed a bug where, since just after the new states of matter were added, we've had an issue with scouting intel being wiped out on old planets any time a save was loaded (basically every ship was being told it had just arrived on the planet), AND entirely wiped out for multiplayer clients in general.<br />
** Thanks to Zweihander2021, alocritani, and RedPine for reporting.<br />
<br />
* Fixed a bug where the tooltips would show you the AI homeworld without you having ever scouted there. This was new sometime recently in the beta.<br />
** Thanks to alocritani for reporting.<br />
<br />
* Fixed a rare exception that could happen in HandleSpecialEffectRequests(), and made it a bit faster while we were at it.<br />
** It's possible that the exception will still happen, but if so we will now have more information on where it happens.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Sometimes Unity logs some spurious errors that start out "<RI.Hid>" and those would pop up and get in your error log as well. Those no longer will do that.<br />
** Those still go to the unity log if there is truly a problem, but almost universally it's something like "oh we can't find your other monitor that you disconnected since last time, well no worries we'll just use your main one." These are not things that should be throwing freaky errors for you to see.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* When you are in a Drain situation in metal, it now should give you a more accurate percentage of what you have remaining, as well as a more accurate timer of how long it will take to complete all of your current work.<br />
** Previously, it was really just wrong in a variety of ways.<br />
*** Now it only counts each thing being built in a fleet once, no matter how many factories were helping it. Previously, 3-4 factories would cause it to to be 3-4x as high.<br />
*** However, now it also counts how long it will take to build the rest of the entire queue for a fleet item, if it's not disabled, so that might be 50 things rather than 1, 3, or 4.<br />
** Anything that was self-building, or being assisted by engineers was already correctly calculated.<br />
** Any drones being built were already correctly calculated, and same with rebuilding remains, in that those don't actually cost you any metal at all. Note that after something is rebuilt from remains, it has to be repaired, and THAT part has a cost, which is correctly tracked now.<br />
** Anything being claimed is now correctly tracked, whereas before it was estimating vastly too much. If a golem that cost 1m metal had 5 things working on it, it would think you needed 5m metal. Way off.<br />
** Engine repairs are free, and those are now properly ignored. The metal allocated for them is just for how fast they are repaired, but it was showing up as an actual amount you'd need to spend. Same thing for personal shields being repaired. That's also free.<br />
** For hull health and bubble forcefield repair, it now tracks the remaining cost correctly, versus before it was only including a tiny fraction of what was needed, plus also multiplying that by the number of repairing engineers. That just had no connection to reality, really.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
==== Accurate Threat Counts, Hunters, And Similar ====<br />
<br />
* First off: what are we on about with the below changes?<br />
** Well, some funky things are happening with the hunter fleet, and that seemed like a symtom of a larger issue.<br />
** As part of that, I found some code that was quite inefficient (string comparisons), and also potentially sometimes wrong (turns out the flavor of hunter you selected could make certain code work or not).<br />
** Untangling all of this took more time than originally intended, but should solve some issues as well as fixing the potential for future mistakes.<br />
** Overall this was a giant rabbit hole that did not solve the original problem, but did uncover a couple of others and proactively solve them, hopefully without causing new ones. Some of the strangeness of the hunter and similar sometimes not behaving may now be fixed, but it's hard to say.<br />
<br />
* GetSpecialFactionName() has been deprecated, as all the places that were using it were basically either using it inefficiently or using it when a nicer name should instead be showed.<br />
** There are a variety of places in the interface that are now more clear and less debug-text-looking, and other parts of the engine that simply run faster.<br />
<br />
* It's possible that hacking the Vengeance Generator from the Dark Spire, and other similar actions, were just broken by the above change.<br />
** Same with Dyson Sphere hacks.<br />
** Same with Dark Zenith Library.<br />
** Same with Zenith Architrave Portal<br />
** If anyone can confirm if those various things still work -- in a fresh campaign, not an existing one -- that would be super helpful.<br />
** Below in the notes, we note a code and xml analaysis has looked at all of these, but just to be sure it would be nice to have eyes on.<br />
<br />
* It's also possible that depot events targeting specific factions are no longer working with astro trains.<br />
** Same with waves launched at specific non-player factions.<br />
<br />
* Looking at the above, the following divergences were found:<br />
** AI Risk Analyzers had a different name in the code and the xml. That would have busted them some, but the one bit that was using the old code-style name seems resolved now.<br />
** One of the two hunter fleet variants was inconsistent with the other and the xml... who the heck knows what this would have caused in the past. Probably bugs of the sort I am worried about happening now, but at any rate it's now fixed.<br />
** Wow, same thing happened with one of the two Praetorian Guard code instances. I wonder what problems this was causing.<br />
** Aaand the Warden Fleet had two different versions in code, and a completely other thing in xml. Yikes.<br />
** Dark Spire had a difference between code and xml. Same with Devourer Golem. And Dyson Sphere. Also Macrophage.<br />
** We had an extra SpecialFaction_NanobotZombie faction in code that was an old remnant. That's been cleared out.<br />
** Relentless AI Waves had a different name in code and xml, too.<br />
** Everything else was consistent. Not counting mods, this was 42 factions or subfactions, with 9 being inconsitent, and 1 being just an extra outdated thing. So that wa still 32 that were correct and consistent.<br />
** There were three places where this was definitely going to cause problems in the future with the Risk Analyzers, but those are fixed proactively.<br />
<br />
* Looking at code based on the above, the following results were found:<br />
** Dark Zenith Library xml looks to still work.<br />
** Same with Zenith Architrave Portal, looks good.<br />
** Dark Spire were broken by these changes, but the xml should now be fixed.<br />
** Dyson Sphere was definitely also busted, but the xml should now be fixed.<br />
** Everything else seems to have already been consistent and no problems.<br />
<br />
* Added is_always_a_direct_attack_against_players, which lets us track certain factions which are always basically threat regardless of the rest of their disposition (unless they are actively attacking you).<br />
** This applies to the relentless waves, the tsunami CPA units, the AI reserves units (those do go away, but while they are present they count), instigators, anti player zombies, anti everyone zombies, and that's it.<br />
<br />
* is_considered_hunter, is_considered_warden, and is_considered_praetorian have been added to make it much easier to check which factions are of that type.<br />
** This is purely a processing efficiency thing, which is relevant the more ships there are in the galaxy. Mostly for backgroudn threads, but still.<br />
<br />
* The way that the threat is calculated has been updated a bit to hopefully avoid some edge cases where it seems incorrectly under-counted.<br />
** This did not change much in the savegames that people gave us.<br />
<br />
* The display now shows threat numbers that include even numbers on player planets -- aka, before, threat ships would become attacker ships, and they were either/or.<br />
** This was very messy and confusing, because attacker ships might just be something random passing through, and might not truly be a subset or even intersection with threat.<br />
** For the sake of consistency, threat is now threat even if it's on your planets. That way the threat doesnt' seem to diminish just because it's on your planet now. That looked like you were killing something when really you were not.<br />
** Similarly, the strength and number of ships attacking you is just all about enemy ships actually at your planets, and their status doesn't matter.<br />
<br />
* Added a new RelativeToOtherFaction_ThreatStrength and RelativeToOtherFaction_ThreatStrengthVisible, which lets players have an idea of how much of the enemy threat forces are aimed at some other faction than them.<br />
** These actually give an enormously better picture, in the threat screen in particular, of what is threatening factions other than the player.<br />
<br />
* Similarly, the monolithic number of the hunter fleet strength is now broken out by that part which is against humans, and the portion that is against other factions, and breaks that out on the threat window display.<br />
** This was the final piece of the clarity puzzle. Most of the actual numbers that were wrong were only a bit wrong (missing counting certain things, etc), but not being able to tell that huge parts of the hunter fleet have no interest in you was kind of a big deal.<br />
** Note taht this could also make the hunter fleet look insurmountably dificult. <br />
*** In one example, there were appearing to be 275 threat against humans, but really there was 308. But at the same time, it said there was 646 hunter strength, which would be unbeatable... except only 69 of it was against humans.<br />
*** In the other example, the total threat reported was 312, but the real threat was actually 347. It said 652 hunter strength, but only 74 was against humans.<br />
** Both of the examples of "impossible games" are actually more to do with what looked like impossible odds because of hunters doing things that won't bother you unless you specifically go and harass them.<br />
<br />
* Thanks to Lord Mekton and Arides for reporting the things that led to this rabbit hole.<br />
<br />
=== More Mode Icons, And Tracking Hunter Targets ===<br />
<br />
* On the individual ships, we now have an "IsAfterANonHumanTeam_NonSim" that allows for us to keep track of which ships are not here for you right now.<br />
** Based on the name of the variable, you can probably guess, this is not meant to be used with the simulation itself, but only for display.<br />
<br />
* Added about 15 new underlays that can be used for ships, complete with selection circle colors to match, etc.<br />
** Split these out into a new Official_SelectedStatus sprite dictionary, instead of them being part of the "central bits" with health bars, etc.<br />
** This actually makes these moddable for the first time, without them being incompatible with basic health bars and such.<br />
<br />
* Updated our two main compound-icon shaders to allow for passing in this other image, and pulling the data from it.<br />
** The overall efficiency of this is actually a bit higher, too, now that we have more icon options. We're able to use two smaller 1024 images rather than one larger 2048 one (which is 4x the size, not 2x like the current approach).<br />
<br />
* Fixed a bug in our existing calls to the compound-icon shader from half a year or so ago, where it was one of those "how did this even work?" things.<br />
<br />
* We are still using the ActionStatus internally, it turns out, but we are also now using that in combination with the recently-added (and now filled-in) IconShipStatus.<br />
<br />
* States of matter now define a icon_ship_status_to_draw_when_not_in_alt_mode, which lets us (or modders!) define custom status icons and rings for the various ones.<br />
** Multi-phase and single-phase and dark matter states all now have their icon states set up!<br />
** The only one you can really see yet is the multi-phase one, for the spire relics in DLC1, but those work well! Expect to see more of both solo-phase and multi-phase in DLC2.<br />
<br />
* When AI hunter ships or similar are after NPC factions, rather than you, they now get a different icon status behind themselves.<br />
** One thing to note in this sort of situation is that the Threat galaxy map view will NOT show these ships, since they are not threat to you (unless you walk into them), but if you do the strength filters for the hunter you will see them.<br />
*** It's worth knowing where the hunter is, even when it's not aimed at you, because if you happen to fly up to them while they are waiting to hurt some other faction, they will pass the time by hurting you instead.<br />
<br />
* For hunter ships that are after another faction other than you, in their tooltips it now says that "NOT AFTER YOU" and then some added text explaining who they ARE after, and some general advice on dealing with them, depending on how detailed your current tooltip is based on what buttons you are holding down.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** The SmartFactionImplementationBase and AMU_Utils classes now have the Log() utility function, which is but a shortcut for ArcenDebugging.SingleLineQuickDebug(), but cleans up code a lot.<br />
** The InitializeExternalData() function now requires a Faction object passed into it. Thus the game no longer needs to even start for it to work, which is important if it's needed during mapgen already.<br />
** The InitializeSettings_AlwaysDoBase() function is now always executed upon creation of the Faction Implementation, thus the settings are available from the very start of the implementation, which is once again important during mapgen.<br />
* Kaizers Marauders:<br />
** Used the new Log() function in AMU to clean up code.<br />
** Adjusted the Journals creation to the new method in Vanilla so it's up to date.<br />
<br />
== Beta 2.757 Super Mega Exciting Sidebar ==<br />
(Released March 12th, 2021)<br />
<br />
* Holding both W and S will now do nothing rather than moving forward, and same with A and D and not moving sideways.<br />
** Thanks to Feuermagier for reporting.<br />
<br />
=== Planet Sidebar Improvements ===<br />
<br />
* Completely re-coded the planet view sidebar under the hood so that it is more flexible and more efficient, and so that we can start making some new options on how it will actually show information.<br />
<br />
* Step one after that was basically just to get it back to more or less what it was showing before, but with some basic improvements:<br />
** Ships of the same type from different factions that are in the same category (aka multiple groups of enemies with v-wings) now have their own icons with proper colors.<br />
** You can now see unit remains, under construction ships, and crippled ships broken out from their counterparts that don't have such a status, in the event that there are such ships. Before they were always lumped together, or just ignored entirely from the sidebar standpoint.<br />
** Some of the wording for when you're looking at a planet that you can see, but where there are no ships visible at all, has been improved.<br />
** In the event that there are some ships present in a category, but the strength is less than 0.1 (and thus would cause it to say 0 strength), it now says 0.1 instead. This was needlessly confusing when the strength was literally too small to register.<br />
** These bits are just the tip of the iceberg on all sorts of new stuff we can now do.<br />
<br />
* The way that ships in each category (yours, allied, enemy, etc) show up is now vastly better sorted.<br />
** Previously it was stuff with a higher strength value first, and then a semi-arbitrary order for things with equal strength.<br />
** Mow it's command stations first (any faction, then major AI structures next (any faction), then noncombatants next (any faction -- probably these are capturables), then sort by faction within the category.<br />
*** Within each faction, it's sorting by fleet leaders very first, then stationary after that, since these are thing that tend not to die as much and cause others to cascade around. Within those, turrets are last. In the mobile group, it goes elites, then large ships, and lastly strikecraft. <br />
*** Within each tiny group, it sorts by name, and when there are duplicates of the same thing with different icon statuses (crippled, uncaptured, still building, etc), it sorts by those.<br />
** All in all, this should make things vastly easier to find when you go scanning through a list. It's the least invasive version of this sort of change, and potentially can be refined more, but it keeps things together in such a way that you can more easily find what you are looking for.<br />
** Thanks to lots of people suggesting this for years, but perhaps Badger was the original pioneer of requesting this.<br />
<br />
* The planet sidebar tab now uses a global list of icon buttons, regardless of which category they go in, to make them a lot more efficient, particularly if we have way more than four categories for any reason.<br />
<br />
* There are now a group of options that are shown at the bottom of the planet sidebar in a normally-collapsed section. These are personal settings that are saved between games and sessions, so you should not need to alter this often. However, if you are the sort who likes to toggle between a few different views on different planets or just to check something for a moment, these are conveniently placed so that you can do that without having to go into menus and back out.<br />
<br />
==== Subsectioning By Faction ====<br />
<br />
* An alternative mode for sectioning the planet sidebar has been added: by faction.<br />
** The prior one was by relationship, and just showed you, then all allies in one lump, all enemies in a lump, and then the nobody faction.<br />
** This new one shows each individual faction that has ships present, sorted first by those categories, on the sidebar.<br />
** The difference here is incredibly dramatic, and this is really powerful of a feature. For now it is still not the default, because the default relationship one has already been made so much better.<br />
<br />
* There is now a short_name="Name Here" xml attribute available to all factions. It has been applied to all factions in the main game and DLCs, but modders should also be sure to apply it to their own factions.<br />
** The idea is to have a much shorter name that comfortably fits on the sidebar when viewing the sidebar by-faction, so abbreviations and lots of left-out stuff is good.<br />
** When hovering over the faction abbreviation on the sidebar, it shows the full name, so this really is just all about space (and sorting -- the short name is what is used for sorting the list).<br />
<br />
* There is a third and final alternative mode for sectioning the planet sidebar, and that is "by faction and mobility."<br />
** This breaks out all of the things that are mobile or stationary per faction.<br />
** Please note that for the concept of mobile, if it's a ship that can't go through wormholes and thus can't leave the planet, it will still be counted as immobile for sorting here (so FFs that can move a bit but can't go through wormholes, engineers that can'go through wormholes, etc). Essentially these are forces that can't go attack enemies. <br />
*** Your support factories, battlestations, and citadels are also included in the immobile camp, as they are able to go through wormholes BUT are primarily angled at setting up camp locally and deploying stuff for a while.<br />
** When thinking about mobility for yourself, this is mainly a separation of your stuff that would be a major undertaking to get to another planet.<br />
** When thinking about mobility for enemies, this is mainly a separation of the items that they can't use to attack you on other planets if you aggro them.<br />
<br />
==== Local Fleets On Planet Sidebar Tab ====<br />
<br />
* The fleets sidebar no longer has a top section, with blue colors, noting fleets that are on the current planet.<br />
** This has always been something that a lot of people find confusing, even though it was organizationally handy. But the confusion of this, mainly with it being on the fleet sidebar, was just too much. We can do this a better way.<br />
<br />
* On the planets sidebar, you can now see the fleets that are at the local planet, listed by default under all the other ships.<br />
** The tooltips and controls on these buttons, and most of the button visuals, are identical to what you see on the fleets tab.<br />
** The main difference is that instead of showing the planet name of the fleet, it shows either blank space (when all is well) or the shield bar if the flagship of the fleet has taken shield damage, or the health bar if the flagship has taken damage.<br />
<br />
* When the flagship of a fleet is crippled, it now shows up with the words CRIPPLED in orange on both the fleets tab sidebar and the planets sidebar.<br />
** This makes it super obvious when that's actually going on.<br />
<br />
* All of the fleet management subscreens can now be open on either the fleets or planets tabs. Since you can now open them on the planet tab, this saves a lot of effort in terms of clicking over to the fleets tab, particularly when upgrading fleets that happen to be on the current planet.<br />
<br />
* On the planet sidebar, you can now see the strength of fleets like you can on the fleets tab. However, it's shown by the overall fleet health meter (both of these get replaced by the crippled notice if the flagship is crippled.<br />
<br />
* Also on the planet sidebar, if you hold shift you will notice that the ship cap numbers get replace with the colored name of the planet the flagship is on.<br />
** This is less crucial information, but having it in easy toggle range is nice.<br />
<br />
* On both the fleet tab and planet tab, if a fleet is in transport mode, it now has a little cyan (T) behind its name.<br />
<br />
==== Watched Fleets ====<br />
<br />
* Added a new Fleet Watchlist feature in the fleet management details window:<br />
** Normally on the planet sidebar, you can see a list of all the fleets you have on that planet, including the health of the flagship. There are times where you want to keep an eye on a fleet at all times, even when it's on other planets, though. The fleet watchlist allows you to monitor specific fleets on the planet tab of the sidebar regardless of where you go.<br />
** If a fleet would show up on the watchlist AND the local planet fleet list, it just shows up on the local planet list, since that's more informative.<br />
<br />
* if a watched fleet is on the current planet, and the current planet local fleets are shown and open, then it doesn't double-show the fleet in both. It just includes the fleet on the local planet list (but keeps the count of fleets correct in both categories).<br />
<br />
* Thanks to Badger, Strategic Sage, Arides, and others for the requests that led to all these fleet additions on the main planet view, including watched and local fleets.<br />
<br />
=== Cripple Mechanic Updates ===<br />
<br />
* Ships no longer become crippled at 10% health. Instead, they become crippled when they are literally at 1 health. This gives more wiggle room, and is more intuitive in general.<br />
<br />
* Major simplification of crippling penalties:<br />
** Rather than having a bunch of things configurable per type of ship, it's now global for any ship type that can be crippled.<br />
** Ships simply get a 2x multiplier to repair costs when they are crippled. This just undoes the normal repair discount versus building fresh.<br />
** The bail-out function is now turned off by default.<br />
** You can still have a hacking point cost to ships getting crippled if you wish to, but the default is now 0, and whatever you set is now global for all unit types.<br />
** Thanks to ArnaudB for succinctly summing up why this was a good way to go.<br />
<br />
* Additionally, all of the cripplng-related features, and the human balance features in general, can now be edited mid-game.<br />
** So if you had an ongoing game that you loaded into a recent build that turned on bail-outs and such, you can turn that off if you prefer.<br />
** Thanks to Democracy for reporting.<br />
<br />
== Beta 2.756 Choice Of Injury ==<br />
(Released March 10th, 2021)<br />
<br />
* Added a note in the AI hacking response bit where it characterizes that stuff as Slothful or Terrifying or whatever:<br />
** "Note that the hack itself may have a response that is far more aggressive than the generalized AI response component."<br />
** Thanks to Leif for noting how the "slothful" hacking response to a superterminal hack can still be apocalyptic.<br />
<br />
* The superterminal hack has been toned down in general, so that hopefully it's not quite so devastating. It turns out that simply tuning some of the numbers on the hack itself was probably the way to go.<br />
** This may still be too hard, or may now be too easy. We'd be very interested in feedback. Likely the response will be somewhere in the ballpark of 1/3 to 1/2 as strong, but it's hard to be sure and we've not tested the results yet.<br />
** Thanks to Arides for reporting.<br />
<br />
* The Render Vengeance Generator Vulnerable hack was insanely too difficult and also pricey.<br />
** It now takes only 250 seconds rather than 300 (this prevents the tail end that is craziest).<br />
** The primary response strength has also been dropped from 2.5 to 1.8, and hopefully this does not make things too easy when paired with the above.<br />
** The secondary response has dropped from 1.5 to 1.1.<br />
** The cost in hacking points has been dropped from 60 to 35.<br />
** Thanks to Bionic for suggesting.<br />
<br />
* Added a new "Human Balance" section to the Balance tab of galaxy options.<br />
** These settings change up some of the balance to human players in general, but not any one particular empire or type of human player in multiplayer.<br />
<br />
* Fixed one oversight with the new ship states of matter stuff, where their "time on the planet" was not resetting when they change states of matter. Now that works as desired, and their time on the planet is indeed rest.<br />
** Thanks to Zeus for suggesting.<br />
<br />
* Fixed an INCREDIBLY longstanding bug where fatal damage to a ship was not being noticed correctly some of the time when ships took damage from a source. This was denying them chances to do things with specialized "when I kill a unit" effects, and probably throwing off kill count credit, as well. Mostly it was not a huge thing, but it was clearly wrong.<br />
** Historically, we have had a function that goes in there and finds 0-health units and kills them later if we don't know why it's at zero health. But in the last couple of builds we took that out partly, mainly because with changes in mark level you could get units at 0 health based on them being partially damaged and then losing a mark level, and those should not die from wounds of that sort in our opinion.<br />
** That said, if this is continually a problem, we can reinstate that; the true problem was with command stations of players, and player flagships, and we can certainly make THEM not have this logic while everything else does. But having this work properly is probably best for all sorts of reasons with ships in general, and things seem to work properly now that we've fixed the core "notice we just killed an enemy" code being corrected. So we'll see how that goes.<br />
** Thanks to Strategic Sage, Zwei, and arl85 for reporting.<br />
<br />
=== Citadel Overhaul ===<br />
<br />
* Citadel rebalance.<br />
** Citadels no longer come with a bunch of turrets already attached to them. You only get whatever you have from the TSS.<br />
** Citadels themselves are of course very powerful still.<br />
** AIP to claim has been reduced from 60 to 25.<br />
** Defensive structure cap multiplier from 133% to 140%.<br />
** Citadels now always come with 8 interplanetary engineers.<br />
** Note that about half of these features will only apply on new savegames (AIP reduction, defensive structure cap increase).<br />
** Thanks to Arides for starting the discussion, lots of folks for weighing in, and ArnaudB for most of the design of the solution.<br />
<br />
=== Forcefield Harmonics ===<br />
<br />
* Added a new ability: can_pass_through_enemy_forcefields="true"<br />
** FORCEFIELD HARMONICS: Can match shield harmonics to pass through enemy forcefields, although any weapons fire it does will still impact on the forcefield itself.<br />
** Given to the following units:<br />
*** Astro trains of all sorts, and relic trains.<br />
*** Devourer Golem, Ravenous Shadow (ouch).<br />
*** Zenith Trader and Cyborg Ambassador (the latter is mostly thematic).<br />
*** All members of the Imperial Spire (good thing they're on your side).<br />
*** Spire relics (handy for you).<br />
** Thanks to Zeus, CRCGamer, Bionic, and others for helping come up with this idea and name, mainly in response to the new immobile forcefields (always an arms race!).<br />
<br />
=== Scrap Refunds ===<br />
<br />
* New human balance subsection feature: Scrap Refunds On Friendly Planets<br />
** What percentage (0-50%, default 15%) of the cost of a scrapped unit do you get back? This only applies to units on your own or allied planets, and damaged or incomplete units return less.<br />
** Untested, but should work.<br />
** Thanks to Zeus, Strategic Sage, CRCGamer, and Metrekec for weighing in on this.<br />
<br />
=== Crippling Mechanics ===<br />
<br />
* Once a ship has been crippled, it will now stay crippled until it is back to 100% hull health.<br />
** This was a change we were going to make in general for some of the refleeting flow work, but it also puts an end to another exploit where you could upgrade golems (artillery for example) by direct science upgrades in order to un-cripple them.<br />
** Thanks to Strategic Sage, NR SirLimbo, and ArnaudB for the initial discussion on crippling, and Sigma7 for the report on artillery golem exploits.<br />
<br />
* Metal expenditure changes for crippled units (some of this may already have been happening, but now it's double-sure):<br />
** Drones are no longer built inside crippled flagships.<br />
** Crippled factory battlestations will no longer produce any ships.<br />
** Crippled engineering battlestations and similar will no longer repair any targets.<br />
** Flagships in general won't be able to use claim beams, or repair remains, if they are crippled.<br />
<br />
* New human balance setting: When Crippled: Bail Out To Nearest Friendly Planet<br />
** When a mobile ship belonging to a player is crippled, it immediately 'bails out' to the nearest allied planet. If there are no such planets, then it is sent to the nearest neutral planet. If there's still nothing, it stays where it is. Defaults to on.<br />
<br />
* New human balance setting: When Crippled: Bail Out To Nearest Home Planet<br />
** When a mobile ship belonging to a player is crippled, it immediately 'bails out' to the nearest allied home planet. If there are none available, or it is already on the home planet, it will move to the nearest allied planet in general. If there are no such planets, then it is sent to the nearest neutral planet. If there's still nothing, it stays where it is. Defaults to off.<br />
<br />
* No matter what, when a ship is crippled and belongs to you, it now gives you a chat message about that.<br />
** It gives information including the player name and planet name, and goes into the central chat log for later reference if need be.<br />
** This should be pretty helpful in multiplayer, particularly if someone is not noticing that their stuff gets crippled.<br />
** Thanks to Badger and his play group for inspiring this change.<br />
<br />
* Ships will now fully-reliably do their "on crippled" logic in general, if they have any.<br />
** Sometimes before if they were crippled by passive effects or attrition or similar, they would not do whatever was unique to that faction for the crippling effect.<br />
** Note that in existing savegames where your ships were already crippled, this will now catch them and cause them to bail out or charge you HaP or whatever.<br />
<br />
* balance_repair_extra_cost_for_seconds_after_crippling has been removed.<br />
** This was previously set to 120 seconds, and it made sense when the crippled status was something that you could just wait on.<br />
** Previously, if you could repair a ship back to 10% health and have it un-cripple, and then the other 90% of health would either be during or after this 120 second period, costing you more or not; if you micro'd it, you could get around it, which is never good.<br />
** Now the crippled status doesn't go away until a ship is fully repaired, so we have no need for a timer like this (at least not related to crippling).<br />
** Ships will simply cost more to repair while crippled, and not cost more to repair when not crippled, and that's much simpler.<br />
<br />
* balance_multiplier_for_ships_that_have_extra_repair_cost_temporarily has been removed.<br />
** This was previously set to 3.5x, globally, which was really hard for golems and no bother at all for transports.<br />
<br />
* Added a new section to balance in the galaxy options screen: Crippling Costs.<br />
** These settings change up how much it costs when one of your large units is crippled.<br />
<br />
* Added Cost Multiplier Of Repairing Crippled Transports.<br />
** After they are crippled, and until they are repaired to full health, their repairs will cost this much more than normal. Default 4.5x for transports. Range of 1x (normal) to 6x, with lots of intermediate options.<br />
** Also identical options for a bunch of other categories:<br />
*** Default 1.25x for officers (golems and arks).<br />
*** Default 2.5x for battlestations (basic only; not citadels).<br />
*** Default 1.75x for citadels.<br />
*** Default 2x for support (usually combat factories).<br />
*** Default 1.35x for lone wolves.<br />
** Normal 1x cost for anythinig that isn't one of those categories somehow.<br />
** Thanks to Strategic Sage, NR SirLimbo, and ArnaudB for suggesting this in general.<br />
<br />
* When ships bail out due to crippling, they are also paralyzed for the max time allowed when they reach the destination, but they don't have any other new bad status effects on themselves.<br />
<br />
* New group of options in the Crippling Costs section of the galaxy options: Lost Hacking Points When Transport Crippled<br />
** Each time they are initially crippled, how many (if any) hacking points do you lose? The default for transports is 1. The range for any of these is 0 to 20.<br />
** And the other similar settings:<br />
*** The default for officers (golems and arks) is 4.<br />
*** The default for battlestations (basic only; not citadels) is 2.<br />
*** The default for citadels is 3.<br />
*** The default for support (usually combat factories) is 2.<br />
*** The default for lone wolves is 5.<br />
** These also pop up as part of the message visible to all players, but only the player who actually had a unit crippled takes any hacking point loss in multiplayer,<br />
** Thanks to Strategic Sage, NR SirLimbo, and ArnaudB for the discussion that led to this end result as well.<br />
<br />
==== Technical Bits ====<br />
<br />
* The WarpToPlanet code function from AMU has also been moved to the main game. <br />
** We made a slight change in that ALL guarding offsets are now cleared, not just those for melee, since the planet is new and thus a guarding offset is meaningless in the new place.<br />
** Thanks to NR SirLimbo for coding and contributing it!<br />
<br />
* Added a new GetIsFriendlyTowardsSafe() on units, which allows us to check friendliness easily with any other faction, not just the local one.<br />
<br />
* Added WarpToPlanetAtSafePointNearCommandStationIfPossible, which tries to put you near the command station, or another fleet leader if that's not possible, or just a friendly unit if none of those are possible.<br />
<br />
* Added FindNearestAlliedPlanet_FairlyExpensive() on planets, which lets us find the nearest allied planet (by hops) from a given faction with a specific starting planet.<br />
** Also added FindNearestAlliedOrNeutralPlanet_FairlyExpensive, which does the same thing bug for allied, neutral, or owned-by-nobody planets.<br />
** And finally also added FindNearestAlliedKingPlanet_FairlyExpensive, which is the same as the first but also requires that there must be a king unit (generally a home command station) on said planet. This could be your home command, or an allied on in MP.<br />
<br />
* GetFauxFIntValueFromSettingByName_DefaultOne_DuringGame now uses an internal dictionary to cache string results that it has already parsed in some fashion, which saves on processing when this is called frequently.<br />
<br />
* Updated the AMU mod to not freak out with the new changes.<br />
<br />
* Units that have not yet been fully claimed are unable to be crippled (they also don't die, but they don't get the cripple status, cost extra, or bail out).<br />
<br />
* When ships are disabled for some reason, but can't normally be transported, it no longer shows a tooltip message saying that they can't be transported but normaly can. That was confusing!<br />
<br />
* When a ship is disabled for multiple reasons, and one of them is being crippled, it now shows both reasons. It was possible to not be able to see the crippled info if it was also paralyzed or paused or similar.<br />
<br />
* The width of the name column on the galaxy options screens are now wider, so that it's less likely to word-wrap. This is much easier to read.<br />
** The text has also been sized down slightly in order to make sure it fits more consistently, too.<br />
<br />
== Beta 2.755 Hotfixes ==<br />
(Released March 10th, 2021)<br />
<br />
* In the lobby interface, updated the Scourge impact rating from Hard to Brutal due to the rebalance.<br />
** Bear in mind that you can absolutely still play with these in a "hard" fashion, but this does reflect the fact that if you try them above their starting impact of 5, you can expect an outsized response.<br />
** Another way to think about this: the impact scale of 1-10 is a bit different from something that is inherently Hard versus inherently Brutal. You can still get a wide variety of difficulties, but at each step it's going to be more intense.<br />
** Thanks to ArnaudB for changing.<br />
<br />
* Fixed some compiler errors in the last part of the code that was supposed to make the passthrough key (Z) work properly for the revised stationary flagship mode.<br />
** THEN actually finished actually implementing that code, and made sure it worked.<br />
** Apologies for this. I was extremely tired, apparently, and completely spaced out on even finishing the feature I was in the middle of right before release. Thank goodness for beta branch.<br />
<br />
* Fixed a bug in the last release where ships that were in transports from a save from a prior build could not be unloaded in the new version. Essentially, the state of matter for the ships was being blanked out incorrectly.<br />
** Thanks to Kahuna, ArnaudB, Gdrk, Ithuriel, and Leif for reporting.<br />
<br />
* Added some extra sanity-checking around states of matter, so that we're less likely to have any errors related to them being un-set or mis-set in the future.<br />
<br />
* Fixed a couple of bugs in tutorial 4 on the beta branch that were keeping it from being completed.<br />
** Essentially, since we had changed up the type of bombers in the starting fleet, it no longer matched the tutorial and thus it could not be completed.<br />
** Fixed a typo saying Piercer tech rather than Piercing.<br />
** Added a new tutorial-specific version of the ARS that has more info, its own hack, and can only be hacked once rather than three times.<br />
** Thanks to GregC for reporting, down to the line numbers we needed to adjust in the xml!<br />
<br />
* Fixed an issue that has been around since we introduced tech refunds (apparently). If your marking-down of a ship that is damaged would cause it to die, that now will just cause it to be at 1 HP remaining, instead.<br />
** This was actually bypassing ships that normally are only cripple-only and causing them to disappear, leading to entire fleets disappearing. It could also cause your home command station to disappear without a trace without you losing the game.<br />
** All of these are directly fixed.<br />
** Thanks to Sigma7 for the savegame that let us finally figure this one out! Thanks also to Ryulong for letting us know this could happen to kings.<br />
<br />
* Also fixed things up in general so that any ship that is crippled won't ever be deleted even if it's health is 0 or lower for some reason. It will just go to 1 health.<br />
** This doesn't affect permadeath options, which still let them die.<br />
<br />
* For player king units and command stations in general, if those are for some reason at or below 0 health at a random time, they just move to 1 health now.<br />
** These still are very much killable, but they die when they are actually shot or damaged in some way, or when a scrap command is issued. Not ever a "well, I see I have zero health for some reason, so I'll just be dying now."<br />
** This sort of thing could have actually happened from things like us or modders adjusting balance numbers in the xml to have lower health, and then damaged command stations or kings just kill themselves on save load. That had not happened yet, but we were aware it was the sort of thing that could.<br />
<br />
== Beta 2.754 Buffs And Bugfixes ==<br />
(Released March 9th, 2021)<br />
<br />
=== Immobile Forcefield Options ===<br />
<br />
* Outguard forcefields have been updated to now be completely immobile, and thus immune to the norris effect.<br />
** Same for the human home command station forcefields, and the forcefields that you can buy from the zenith trader.<br />
** Regular forcefields now note their vulnerability to being moved by ships with the norris effect.<br />
** Added a new "Immobile Forcefield Generator" that military stations now have instead of the normal kind that logistical and economic have. This one can't be norrised, but is otherwise identical.<br />
** The Turtle Defenses battlestation fleet (from DLC1) now uses Immobile Forcefield Generators, which both protects against norris, and also prevents accidental movement of them when selecting them for use.<br />
** Thanks to stanazolol69 for the idea of the immobile forcefield generator in general for norris purposes, and to Bionic for the idea on them from a practical management standpoint.<br />
<br />
=== Useful Stationary Flagships ===<br />
<br />
* So! Chris completely misremembered how stationary flagship mode works, and this led to it being described as a way to set up a rally point.<br />
** Previously, this did not work because any orders that were given to a flagship in stationary flagship mode were refused, but any orders that it already had it would execute. This is backwards! It should accept all new orders, but sit there with them and hand them to any ships emerging from itself.<br />
*** Given how much more desirable that is, that is how this mechanic now works.<br />
** Additionally, any move orders on the galaxy map work the same as any other orders. If you don't hold Z, your flagship will still just sit right where it is in stationary flagship mode. This makes it actually possible to set up cross-planet rally points using the galaxy map screen, whereas otherwise it was not possible at all.<br />
** And finally, the various tooltips have been updated to reflect this new functionality.<br />
** Thanks to alocritani for reporting the discrepancy.<br />
<br />
=== Buffs To Underdogs ===<br />
<br />
*A balance pass to help a few units unfairly treated by the many, many changes over the course of the beta.<br />
** Thanks to ArnaudB for doing all of these!<br />
<br />
*Hive golem AIP gain reduced from 30 to 20.<br />
**With heightened metal cost, little benefit from its durability cost and eyes proving more troublesome, this golem no longer justify its horribly pricy cost.<br />
<br />
*Spider range increased from 8k to 10k.<br />
**It should now be able to usefully applies it slow effect.<br />
*Gunbot and porcupine health increased by 50% and metal cost reduced by 33%.<br />
**Too expensive in the beta where metal is precious, with so low health they were a metal sinkhole in the player's hand and poor jokes within AI's waves.<br />
*Sniper metal cost reduced by 40%. It was too pricy for how unreliable it is for the player. Hopefully this should make it worthwhile to use.<br />
<br />
*Tutelar tank FRS hull bonus reduced from 2.5 to 2.0. With all strikecraft health going into hull, it was way too strong. Sorry.<br />
*Ireful MLRS Corvette shield bonus increased from 1.25 to 1.50 and gain an additional 1.50 bonus to hull.<br />
*Encircling Spider FRS shield bonus increased from 1.50 to 2.0.<br />
*All AIP costs for FRS ships is now 12, except Turbo Raider.<br />
*Turbo Raider AIP cost reduced from 20 to 14. Speed is king, but for a bonus that doesn't applies to Flagships it was too pricy.<br />
<br />
*Beam Turret now has 1/3 of its damage and 3 times more beams.<br />
*Solar Flare Turret now has 1/3 of its damage and 3 times more beams. Its paralyze effect lasts 2 seconds instead of 3.<br />
**They were underperforming horribly in many situations, particularly with low stacks setting, including default ones, or against low health enemies.<br />
<br />
=== Bugfixes ===<br />
<br />
* Updated the autosave code so that even if you disable it, in ironman mode it will still work. And if you disable it in ironman mode, it should definitely actually be disabled.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Fixed kind of a cascade of issues that was preventing Interplanetary Engineers from being constructed, mainly if they were on battlestations or command stations.<br />
** These issues were mostly introduced on March 4th, when the other changes relating to repair delay timers, etc, were introduced.<br />
** That said, the way these worked was kind of accidental before, and it didn't show up in the interface with progress on constructing them like it would for other ship lines, etc. All of that now works much more properly, and you get proper interface feedback for the first time ever with these.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* Fixed a variety of potential cross-threading bugs in EntityOrderCollection, including one that had popped up in particular in ClearOrders. The one in ClearOrders should not only be fixed, but if something else happens where it does recur, it should no longer corrupt savegames, and it should also give us more information about where exactly the error was.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Fixed a bug in the fallen spire where it would give you an exception after you beat the game with the imperial spire around, because they had no one left to go kill.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Fixed the remnants of an exception that could happen when there was a missing praetorian guard faction in loading the lobby settings. This is something that should be remedied on actually generating the new map in general, but there was some overzealous error checking that was getting in the way of that process.<br />
** This was something that happened in particular when editing older quick starts after loading them into the lobby.<br />
** Overall this involved some extra plumbing to make sure that older quick starts and saves self-repair new information in. At some point it may be required to explicitly link up some of the AI sub-factions to their parent AI in multi-AI games, which is where these problems seem to crop up. But for now this works, and so minimal changes seems like the wiser way to go.<br />
** Thanks to alocritani for reporting.<br />
<br />
* The tooltips of strength-based AI eyes no longer talk about unit counts (super confusing!), and instead properly talk about the relative strengths of opposing forces.<br />
** Thanks to Strategic Sage for reporting.<br />
<br />
* After poring through the code for a while, it was really not clear why the Raid Engine was so very wimpy in terms of the response it was sending. It seems like it is using the general pre-wave-buff amount of forces, multiplied by 1.5x. But the code would not really seem to support that being the case, it's very strange.<br />
** At any rate, the waves of the raid engine are now multiplied by the wave_budget_multiplier of the AI difficulty that is in question. So on difficulty 7, as in the example save that we had, this is an increase of 6x strength for the wave, leading them to be these 99-strength monstrosities popping out.<br />
** The hope is that they were universally wimpy, and so nobody gets crushed now by some giant 1000-strength wave instead of a few hundred in some very intense game. We haven't seen any evidence of that yet, but that sort of thing is always the worry when we don't understand what is going on and put in a new multiplier to compensate anyhow. At any rate, we're sure we'll hear about it; but the raid engine is a good thing to kill post-haste in any game now, for sure.<br />
** Thanks to Strategic Sage for reporting.<br />
<br />
* Fixed an exception that could happen when doing the neutral planet science extraction hack (or any other non-instant planet-based hacks) against dyson sphere planets.<br />
** All of the other factions are checked and are okay.<br />
** Thanks to Metrekec for the report and the save for duplicating it.<br />
<br />
* Fixed an oversight in the previous version where ships that were being transported would not properly keep their state of matter when going into and out of transports, or being saved.<br />
** This didn't matter in the prior build, but will matter in the near future for DLC2 and 3.<br />
<br />
* In the event that a transported ship is removed after loading a savegame because it is deprecated, it now logs an entry in the game log so that this is not some mystery.<br />
<br />
* Fixed up the vicious raid frigate so that it inherits its properties from the regular raid frigate and NOT from the deprecated AI Raid Frigate (AIs don't get frigates anymore). This wrong inheritance was causing it to have all of its ships mysteriously disappear whenever a savegame is loaded with them in it (existing saves, when loaded, will now load them properly and keep them).<br />
** We also checked our other frigates to make sure that there were no similar issues.<br />
** Thanks to Timerlane for reporting.<br />
<br />
* Additionally, the ship cap for lines of vicious raid frigates has been increased from 6 to 9; it was an oversight that it was so low.<br />
** Thanks to Timerlane for reporting, and ArnaudB for confirming intent.<br />
<br />
== Beta 2.753 Interplanetary States of Matter ==<br />
(Released March 8th, 2021)<br />
<br />
* Fixed the Devourer Golem being allowed to attack literally everything. Now it only targets mobile ships again.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Battlestations now cost 250k to build (mainly, to repair), rather than 6k. This was a balance oversight. Their claim cost has always been 200k.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
* Citadels now cost 400k metal to claim, rather than 200k. They already had construction (repair) costs of 1.5m, so this claim cost was just a copy of the cost on battlestations. Again a minor balance oversight.<br />
<br />
* Added a new IconShipStatusTable, which replaces the old hardcoded enum ActionStatus.<br />
** This allows for us to, in general, let ships have new background indicator icons that denote their status.<br />
** Put slightly better, this actually allows for modders to do that.<br />
** This may break the AMU mod, so for now we're just putting in the table, and we'll finish the feature tomorrow after the other bits are out.<br />
** For now, any ships that are in an alternate state of matter just use the guard ActionStatus, which is fine for today.<br />
<br />
* Put in extra debugging for when xml row nodes fail to parse for various reasons.<br />
<br />
* Added a new is_disallowed_from_spawning_in_waves="true" flag, which can be applied to units that otherwise are vastly too strong when included in a wave from the AI.<br />
** This works on guardians, dire guardians, regular strikecraft, whatever.<br />
** This is now applied to temperamental/tantruming and fragmenting guardians, because their mechanics are really only designed around being on an AI planet, and they quickly become nightmares on player planets.<br />
** Thanks to Metrekec and Strategic Sage for reporting.<br />
<br />
=== Interplanetary Engineers ===<br />
<br />
*Reduced the time needed for players to build on AI planets across the board.<br />
**Expenditure at all marks below 7 is now at 70%, making things takes 142% longer to build than on allied planets.<br />
**Expenditure at marks 7 is now 60%, making things takes 170% longer to build.<br />
**The old numbers didn't take into account the removal of seeded battlestations and AIP increase of citadels to sixty, both of which leading to a dearth of Interplanetary Engineers to build beachheads at insane speed.<br />
**Marks no longer changes with every mark of the AI's planet, as that was both confusing and doubly punishing. On higher marks where you needed more beachhead it was slower, and it vice-versa. It's now much more intuitive and straightforward, with Mark VII having an extra difficult to make it "special".<br />
** Thanks to ArnaudB for implementing.<br />
<br />
*Added hacks for Engineers and Interplanetary Engineers in the ODSS. You can hack Engineers for Command Stations or Interplanetary for Battlestations (and Citadels).<br />
** Thanks to ArnaudB for implementing.<br />
<br />
*Added 4 Interplanetary Engineers to starting battlestations.<br />
**This is mostly so players can intuitively deduce the new engineers and interplanetary engineers hacks will give engineers to Command Stations only and Interplanetary to Battlestations only.<br />
** Thanks to ArnaudB for implementing.<br />
<br />
*Made Interplanetary engineers self-build like drones. They keep getting killed and need to be manually rebuilt when used offensively, which is plain annoying and encourage tedious micromanagement.<br />
**This also means they don't show up in the build menu (good!)<br />
**They do show up in the lobby when you pick a station, and in the fleet menu, which is what matter.<br />
** Thanks to ArnaudB for implementing.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed a very stupid bug in the AddListSeparated() function that was breaking out Kaizers Marauders.<br />
*** Thanks to Histidine on Discord for finding.<br />
** The getPlanetNameFormated() function now now also requires a bool whether or not the planetary mark level should be shown if the planet is an AI-owned planet. It was extending the planet names needlessly and especially for notifications got too long.<br />
*** Thanks to a bunch of people for suggesting over time, most recently Histidine.<br />
* Kaizers Marauders:<br />
** Adjusted all logic where planet names are printed out or displayed to the changes in AMU.<br />
<br />
* AMU:<br />
** Fixed a bug where the PlacementCondition.GetLocation() in edge cases (that got really common with highly built-up Kaizers Marauders) allowed to spawn things literally on top of each other.<br />
*** Thanks to Histidine for providing a save that lead to discovering this.<br />
* Kaizers Marauders:<br />
** Fixed an error when Marauders had only very, very little space to spawn more Fortified Forceshield Generators or Defense Posts, very often when seeding outposts near the player, and they already had a ton of stuff close.<br />
** This then turned into a bad performance leak because it had to retry so many times all the time to spawn these entities.<br />
*** Thus the distance that things are spawned at is now calculated and added to the next spawning attempt. The result is dynamically extending things out for as far as needed.<br />
*** Note that this spawn-bonus-distance is not serialized. This means that, per planet, if conditions are this bad, the first spawn of something difficult to place may take quite a while - but every further spawn should take a lot less time.<br />
*** This may also change the placement between saving and reloading, but only in edge cases where an Outpost survives but its huge amount of defenses has been crushed. It will still try to seed further away, at least for a while. An autocorrection to this has been implemented but not tested.<br />
**** Thanks to Histidine again for the save that lead down this rabbit hole. This was something I wanted to find a "good" solution for, but had put it off because it was a rather complex issue.<br />
<br />
=== DLC2 & 3 Features ===<br />
<br />
* Added a new StateOfMatterTypeData, which is something that will come into play in a MAJOR way in DLC3, but also will have a substantial presence in DLC2, and even a bit of retroactive presence in DLC1.<br />
** Because all of these things can cross DLC, this is something that we're building into the base game.<br />
<br />
* The first state of matter is just called "Normal", and it is set up so that ships that are in this state of matter (that's most of them) won't show a tooltip with the explanation of it. But here's an explanation anyway:<br />
** Objects in realspace, existing in three spatial dimensions and traveling along the axis of the fourth dimension (time). Aka, most of the observable universe.<br />
<br />
* The second state of matter is not something you'll see until DLC3, but we may as well define it here: 5th Dimension<br />
** Units in this state of existence cannot see or interact with those in realspace, and vice-versa. Very few units can pass between the spatial planes of the 3rd and 5th dimensions. The relationship of this higher plane to our normal one is extremely hard to comprehend, and we are just starting to explore it.<br />
<br />
* The third state of matter is also mostly a DLC3 thing, although it will retroactively play a bit into DLC2 and the base game when we get there: Dark Energy.<br />
** Units made up of dark energy still exist within realspace, but their nature is very poorly understood. We can detect one another, but crossing over is hard. Dark Energy makes up 68% of the observable universe, while dark matter makes up 27%, while normal matter is a mere 5%. Most space travel is made possible by dark matter reactors.<br />
<br />
* The fourth state of matter is mainly a DLC2 thing: Solo-Phase<br />
** Objects temporarily beyond all reach, both hostile and friendly. They can be detected by our instruments, and even given orders, but for the most part all they can do is wait and heal. They could be deployed for a surprise attack on phasing back in to normal reality, as well, however.<br />
** Thanks to Zeus for suggesting.<br />
<br />
* The fifth state of matter is another DLC2 thing: Multi-Phase<br />
** Objects in an alternate state of matter that can only interact with other multi-phase objects. Units in this state may be in such a state temporarily -- even unwillingly -- or may intentionally and permanently be set to guard this side-band of realspace.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* On all ships and shots, there is now a CurrentStateOfMatter, which defaults to Normal (realspace), but can be changed to other things.<br />
<br />
* On ships, there is now a GameSecondWillExitStateOfMatter, which is normally 0. This can be set to future gameseconds to cause an entity to revert to normalspace, or combined with various other features yet to be described.<br />
<br />
* If a shot is fired, it will automatically exist in whatever the state of matter its parent firing entity is.<br />
** Right now this won't apply for drone guns.<br />
<br />
* If a shot's state of matter does not match its target's state of matter, the shot now ceases to have a target, which is the same as if the target has moved to a different planet.<br />
<br />
* Added a new forced_to_always_be_this_state_of_matter field on ships. This can be defined to make a ship always a 5th-dimensional entity, as one example, or always dark matter or even multi-phase or whatever.<br />
** This does not normally need to be set, and anything that you want to be able to shift into something like solo-phase or multi-phase should definitely not have this set, since this would prevent them from phasing or being phased.<br />
<br />
* On the world object, there is now a LocalPlayerViewingStateOfMatter, which defaults to normal. It's not until DLC3 that we would start swapping this out to let you view the 5th dimension in certain circumstances.<br />
** However, this does have an affect on visibility of certain things even in DLC2 and even DLC1 now, so we should go ahead and keep it consistent and nicely planned-ahead.<br />
<br />
* Updated shots and units so that if they are supposed to be invisible to you (mainly 5th dimension right now), they should actually be invisible unless you are also looking at the 5th dimension or whatever, in which case it only shows you stuff from that other state of matter.<br />
<br />
* Bubble forcefields now only protect or displace ships that are in the same state of matter, whatever that might be.<br />
** Gravity effects continue to cross all states of matter.<br />
** Tractor beams also can now only grab units that are in the same state of matter.<br />
** Also, tachyon beams can only hit units that are in the same state of matter.<br />
** AOE damage can now only hit units that are in the same state of matter, and any AOE damage that tries to fire off in the solo-phase state now just completely fizzles. It might be visible, but it's harmless in there.<br />
** Any shots that are impacting will not hit enemies that are in a different state of matter. This is partially relevant because the target may shift states of matter right before being hit by a shot that WAS in the same state of matter when it was fired.<br />
** Units in different states of matter still decollide with one another, except those that have different view modes (like the 5th dimension).<br />
** The "can a unit be placed here" logic also has been updated to account for this, and again mostly deals with those with separate views like the 5th dimension.<br />
** Targeting logic has also been updated so that ships can only target other ships in the same state of matter... and for those in the solo-phase, they can't target at all.<br />
<br />
* If the current state of matter of a unit is not normal, then it shows what the state of matter is in the tooltip (assuming you can see the unit to hover over it), and the medium and full tooltips give increasingly lengthy explanations for it.<br />
<br />
* The immune_to_all_damage_and_invisible_if_first_half_of_the_current_second feature that was on spire relics (DLC1) has been removed).<br />
** Now there are the following three: alternative_state_of_matter, phases_to_other_alternative_state_of_matter_after_seconds, and phases_back_to_default_state_of_matter_after_seconds.<br />
** These allow for the same sort of behavior, but also a LOT more flexibility both with the same phasing in and out (different intervals in one and in normal), and a choice of states.<br />
<br />
* The spire relic (DLC1) now phases to the Multi-Phase state every 30 seconds. This is similar to what it did before, except before it would have really been in the Solo-Phase state (not that that was defined before).<br />
** So in some very rare edge cases, having DLC1 on and a relic chase in progress, you might run into some other multi-phase enemies that are a danger to it now. Not super likely, but it certainly is an interesting edge case.<br />
<br />
* Ships in the dark energy, solo-phase, and multi-phase states are no longer visible to the naked eye, but you can see the icons for them.<br />
** Rather like how the spire relic was when it was phased out before.<br />
<br />
== Beta 2.752 Golden Devourer ==<br />
(Released March 5th, 2021)<br />
<br />
* A new ArcenArrays class has been added, and the Randomize methods have been moved from Engine_Universal over to there (with an obsolete tag so that modders have to do it when they recompile their mod, but things work prior to then).<br />
** A new ExpandAndReplaceArrayIfTooSmall has been added to ArcenArrays.<br />
<br />
* Fixed a potential bug in GetCanUnlockTech() where MAYBE under some certain circumstances it could get an exception if you had already fully unlocked a tech that was being checked.<br />
** Probably our existing code was fine, but after Histidine got an error in here, we're being extra careful.<br />
<br />
* The TechUnlocks and FreeTechUnlocks arrays are now expanded during calls to GetCanUnlockTech() if they need to be.<br />
** This is a bit of a confusing issue, as it seems like the only way that this should be able to happen is if mods or DLC or something are reloaded after a game has started, but there may be something there with techs that are added after a game was started and we just missed that.<br />
** At any rate, this is more likely where the bug was, so this will self-fix itself now.<br />
** Thanks to Histidine for reporting.<br />
<br />
* One of the tips was still talking about GCAs, and has been updated to talk about the TSS and ODSS.<br />
** Thanks to Democracy not only for noticing it, but also for rewriting the whole thing for us!<br />
<br />
* Fixed an issue in general with self-attrition damage being considered as "player is scrapping me" damage, which meant that a few on-death effects (most notably spawning units on death) would not happen if a unit self-attritioned to death.<br />
** Thanks to Zeus for reporting.<br />
<br />
* When there is a range of DPS because of multiple beam weapons or similar, the second number in the range now has proper formatting.<br />
<br />
AMU mod:<br />
* Readjusted the mod to be up to date and work with the currentmost AIW2 Version.<br />
** The cost multiplier for certain entities (such as crippled flagship) if repaired within the set timeframe can now be adjusted.<br />
** Dire Guard Post AIP can now be modified.<br />
* Source Code updated.<br />
<br />
=== Fireteam Aggression ===<br />
<br />
* The Praetorian Guard now have the same style of overconfidence ratios that the Warden was given a bit ago, making them more aggressive and more able to come defend their homeworlds if they really want to but you have cut them off. This in general just makes them more active, without going completely crazy. Their budgets and income have not been changed at all (unlike when the Wardens got an income buff a while ago because of their increase in suicidal tendencies). The PG are more of a goalie, so the risks that they now take are likely to be much more productive than some of those the Warden previously was doing.<br />
** Thanks to Democracy for reporting the ability to trap the PG way too easily away from the homeworlds of the AI.<br />
<br />
* ALL of the various factions that use fireteams, in the base game, DLC1, and DLC2, now have greatly-increased thresholds for planets that they will pass through in order to join up with their groups.<br />
** This was a change that we made recently to the warden (allowing them to go through 80 strength enemy planets to join up), but now it's also applied to all the other factions in amounts that are usually more like 20-40 strength, but for some stronger factions (or reckless ones) is up to 80.<br />
** Previously, all of them were set to 1 strength, which was something that prevented a lot of movement of a lot of them. Given how strong player fleets often are now, players can still block these factions quite often, but it's no longer so black and white.<br />
** Thanks to Democracy and others for some observations related to the Praetorian Guard in particular.<br />
<br />
* Previously, the hunter would not path through a path that was cumulatively 1/10th its own strength if it was running to go lurk.<br />
** Bear in mind that is the difficulty of the ENTIRE path, so at any given point the forces the hunter faced might be quite weak. This meant that it was hard for them to go anywhere there was even token resistance added up.<br />
** Now the hunter can head along paths that are up to 5x its current strength to get to a desired lurk spot.<br />
*** We did something similar with the warden a few weeks ago, but made it a 30:1 ratio they would accept, rather than a 5:1 ratio like the hunter.<br />
** Most other factions that want to lurk will also now use the 5:1 ratio rather than the 1/10th value they all had.<br />
** This should all make for much more active factions.<br />
** This doesn't completely solve the PG being trapped from their own homeworld by forces in the way, but then again we don't want them to just throw their lives away. They are now much more aggressive about taking on the opportunity when you shift more to their homeworld, and they come crushing in to kill you versus just letting you pillage their boss.<br />
** Thanks to Democracy for reporting.<br />
<br />
=== DLC2 Features ===<br />
<br />
* New ability: Hardened<br />
** HARDENED: Any damage from a single source (explosion, shot, attrition, etc) will have its value reduced to X% of this unit's max hull health if it would be greater than that. Protects against very large guns, ion cannons, mass drivers, etc.<br />
** Added to a unit by giving it something like damage_taken_cannot_be_more_than_this_percentage_of_max_health="0.1" for a 10% hardening (this is very strong -- larger numbers are less of a reduction).<br />
*** One way to look at this is that it means that it will never take fewer than 10 shots to kill something that is hardened at 10%. At 50%, it could in theory take two shots to kill a thing.<br />
** It is worth noting that there are various types of effects that sometimes hit more than once in a short span, and those would be capped to the hardened level per time they hit, meaning that their overall effectiveness against hardened units is going to be higher.<br />
** This is untested so far.<br />
** Thanks to Zeus for coming up with this idea and requesting it.<br />
<br />
* Added a new aoe_and_beam_damage_multiplier_to_non_primary_target, which should have values set to something above 0. Something like 30 would do 30% of damage to all of the secondary targets of an AOE blast or beam weapon, rather than the full 100% that it does now. Fun fact! You can actually set the value to something like 400 to do 4x as much damage to secondary targets as you would to the primary target, if you wanted to for some reason.<br />
** This DOES work in conjunction with aoe_spreads_damage_among_available_targets, although the results are a bit funky. In those cases, the damage is first spread evenly, and then reduced for the non-primary target.<br />
*** Please note that aoe_spreads_damage_among_available_targets only works for area of effect explosions, and not with beam weapons, hence the naming difference.<br />
** For beam weapons, this is only relevant for those that have hits_all_intersecting_targets set to true.<br />
** This also combines with coilbeam damage reductions for non-primary targets, as a direct multiplier against it.<br />
** This also works with chain lightning.<br />
** Note that when multiple beams are fired, as with beam-arrays, only the target that was directly aimed-at will actually be hit for the full damage if this setting is used for a ship.<br />
** This is a ridiculously versatile new feature, as it allows for a variety of new weapon types.<br />
** This feature is untested.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Added a handy new FillRingOfPointsAtDistance to the Mat class, which lets us get a variable number of points in a radial arrangement given a distance from a center point.<br />
<br />
* Added a new distance_from_center_for_beam_emission for beam weapons, as an optional feature.<br />
** This basically makes multiple beams turn into something that are emitted in a radial offset around the center of the ship, rather than coming out of the center of the ship.<br />
** This is best for things that are large, like golems, and a good amount might be something that is 80% of the radius of the ship itself.<br />
** By itself, this will lead to a bunch of beams that are coming out from a ring and focusing on a center point (like a death star), but if you combine this with degrees_offset_per_beam... it's still going to do that, because the alternative was almost impossible to code. You get to choose if it strikes all targets or just one target, though.<br />
*** Note that this also does not work with the new rotating beams effect.<br />
** Note: when combined with chain lightning, if this is set to some number, AND the number_beams_to_fire is set to more than 1, then it will visually do the death-star effect to the first ship that then has the chain lightning after that.<br />
*** No extra damage comes from this with chain lightning, and it's just a visual effect for how it strikes the first ship. There's no practical purpose to this, it's just for visual flair. Normally the number of beams is ignored for chain lightning.<br />
** Note: when used for a point-laser (aka not something that strikes multiple targets), this completely ignores any fanning-out offsets, and just focuses the lasers on the singular target. This is another one where it's purely a visual effect with no gameplay purpose.<br />
** Final note: this effect isn't reflected in the tooltip in any fashion. From a practical point of view, it's very obvious when it is present, and the behavior of whatever the tooltip already says is not all that much different (aside from not being a fan if you set it up to be a fan AND this sort of radial emission). If we wind up needing to make some small addendum for any of the variants, please let us know.<br />
** This is fully tested in all the forms except chain lightning.<br />
<br />
* New gold and bright red "radial beam" effects added for the DLC2 golems, which we show off in this video: https://youtu.be/IckDa6s_7j0<br />
** Thanks to Zeus and CRCGamer and Badger for the suggestions that led to these new looks for them.<br />
<br />
=== Devourer Upgrade ===<br />
<br />
* The Devourer Golem's weapons range has been doubled, making it far more dangerous.<br />
** It also has been given a weapons adjustment so that it now uses one of the new DLC2-style Zenith ring beam weapons (the gold kind that is most dangerous).<br />
** This weapon is also a lot more dangerous than the old one it had, so the devourer is a lot more threatening in general.<br />
<br />
* In general, updated the beam weapons so that they can visually be offset from their center firing point, which was previously not possible, turns out.<br />
<br />
* Also made it so that as soon as a guard post is damaged at all, it immediately dumps its units.<br />
** Also also made it so that when guard posts are emptied, their ships try to come out unpacked around them in a decollided fashion, rather than all bunched up in one place. When a guard post is being bombarded by high energy beam weapons, this keeps all the contents from being evaporated in one hit.<br />
<br />
== Beta 2.751 Repairs And Clarity ==<br />
(Released March 4th, 2021)<br />
<br />
'''Please note: because of the changes to how repair works, the AMU mod and Kaizer's Raiders mods are both temporarily broken. If you have them enabled, expect exceptions during mapgen, and during savegame load, etc.'''<br />
<br />
* Added a 1.1x damage modifier to the Maugrim for targets of 5 tX mass or more. Makes it more likely to use that 12 second reload Heavy Beam Cannon on something worth shooting rather than just a stray strike craft stack.<br />
** Thanks to CRCGamer for making this adjustment.<br />
<br />
* In the event that you try to load one or more transports that are crippled, the message: "X of your transports are currently crippled and cannot be loaded. Repair them first!" will pop up for you.<br />
** Thanks to Badger for reporting the confusion that was otherwise happening for new players.<br />
<br />
* The hotkey for "Hold To Give Orders To Stationary Flagships" is now Z instead of Ctrl. This means that when flagships are in stationary mode, you can set them up on a planet and just ctrl+click a wormhole like usual to give them movement orders through the wormhole (that they will not follow, but which work as a rally point.<br />
** Thanks to Chthonic_One, Badger, and Zeus for pointing out how hard it was to make these work as rally mode items from a neighboring planet because of this.<br />
<br />
* The stationary flagship button tooltip now includes the text "This is a great way to set up a flagship on one planet with a rally point for its units to a neighboring planet, among other uses." in bold at the end of the first paragraph.<br />
** Thanks to Badger and Zeus for suggesting this.<br />
<br />
=== Guardian Balance ===<br />
<br />
* Guardians now all once again start at mark 1, which means they won't be absolutely insane when coming in waves against you.<br />
** Thanks to a variety of players for making us aware of the danger of this in waves, and to CRCGamer for counsel on it.<br />
<br />
* For the same reason, royal guardians (just the Royal AI type) are now also mark 1 instead of mark 3 for the start.<br />
** Also he got the More System Defenders mod guardians taken care of.<br />
** Thanks to CRCGamer for the reminder.<br />
<br />
* When guardians are seeded at a planet initially at game start, or when they are spawned as part of a reinforcement event, the game now tries to seed them at 1 mark higher than whatever the planet would normally have.<br />
** So if this is a mark 2 planet, its guardians are mark 3. Mark 6 planets should have mark7 guardians. Obviously mark7 still has mark7 guardians.<br />
** This gives guardians that bit of a boost around the galaxy, and is actually more effective than just a blanket "min mark level of 3" like we had in the past.<br />
** However, this won't affect waves, so it keeps waves and hacking responses and that sort of thing from being hilariously overpowered.<br />
** Thanks to Sol and CRCGamer for leading us more in this direction.<br />
<br />
=== Repair Delay Sanity ===<br />
<br />
* "RepairDelaySeconds" has been removed, and now there are two new fields: RepairImpossibleForSeconds and RepairExtraCostForSeconds.<br />
** When reading from older savegames, if the delay was less than 5 seconds it will go to the impossible field, and if it was more than 5 seconds it will go to the extra cost field.<br />
** ForceRepairDelay has been renamed to ForceRepairImpossibleFor_Max15, to be consistent with the new nomenclature. Also, the most it will make repair impossible for is 15 seconds, as noted in the name.<br />
** CustomRepairDelaySecondsAfterCrippling_Max511 has been renamed to CustomRepairExtraCostForSecondsAfterCrippling_Max511.<br />
*** This was custom_repair_delay_seconds_after_crippling_max_511, and is now custom_repair_extra_cost_for_seconds_after_crippling_max_511.<br />
** CustomRepairDelaySecondsAfterDamagedByEnemy_Max511 has been renamed to CustomRepairImpossibleForSecondsAfterDamagedByEnemy_Max15.<br />
*** This was custom_repair_delay_seconds_after_damaged_by_enemy_max_511, and is now custom_repair_impossible_for_seconds_after_damaged_by_enemy_max_15.<br />
** Balance_RepairDelaySecondsAfterCrippling is now Balance_RepairExtraCostForSecondsAfterCrippling.<br />
*** This is balance_repair_extra_cost_for_seconds_after_crippling, and it has been dropped from 300 to 120.<br />
*** The purpose behind this is to give some weight to ships being crippled, versus them just popping in and out of cripple status with no ill effects. However, a 5 minute malus is a really long time, versus 2 minutes is more appropriate.<br />
** Balance_RepairDelaySecondsAfterDamagedByEnemy is now Balance_RepairImpossibleForSecondsAfterDamagedByEnemy.<br />
*** This is balance_repair_impossible_for_seconds_after_damaged_by_enemy, and the default remains 5.<br />
*** This idea with this was always to prevent engineers from being able to infinitely sustain a golem or similar when it is actively in the middle of a firefight.<br />
** Balance_RepairDelaySecondsAfterTransformingCommandStation is now Balance_RepairImpossibleForSecondsAfterTransformingCommandStation.<br />
*** This is balance_repair_impossible_for_seconds_after_transforming_command_station now, and the default value remains 5.<br />
*** The idea with this was always to make it so that when players rapidly switch command station types, they have a short burst of vulnerability, since this can be a powerful tactic.<br />
** There is a new Balance_MultiplierForShipsThatHaveExtraRepairCostTemporarily.<br />
*** This is balance_multiplier_for_ships_that_have_extra_repair_cost_temporarily, and for now we're going to try this at 3.5.<br />
*** This gives a very nontrivial extra cost to ships being repair for 2 minutes after they are crippled, but of course they are not actually repaired for the entire 2 minutes, neccessarily.<br />
*** The important thing is that players aren't prevented from playing, and it doesn't seem like engineers are just broken or something, but there is an economic hit that you take.<br />
** RepairExtraCostForSeconds is not able to be reduced by any means; not by being on your planets, or any other factors.<br />
*** Please note that this does not block natural shield regen from happening, unlike RepairImpossibleForSeconds, which does. Same deal with personal regen of health in general.<br />
** RepairImpossibleForSeconds also is now not able to be reduced by any means, unlike even the past beta; however, it cannnot EVER be more than 15 seconds, rather than often being 300 before. And nothing in the game actually would set it to be more than 5 seconds at the moment for any player unit.<br />
** Thanks to Chthonic_One, ArnaudB, Badger, and others for weighing in on potential ideas and problems with the way the system was set up last beta release.<br />
<br />
'''TLDR:'''<br />
<br />
* 1. Ships that are shot can't be repaired for 5 seconds, same as always. No way to shorten that time period now, since that is kind of defeating the purpose and it's so darn short.<br />
* 2. Ships that are crippled now cost 4.5x as much metal to repair for 120 seconds, and there's no way to shorten this either. This doesn't make ships that are constructed and sent to them more expensive, and it doesn't prevent them from being repaired, but it will put a dent in your economy if it keeps happening over and over.<br />
<br />
* I had several more complicated variants in the pipeline, as well as some other options, but wound up simplifying it down to this.<br />
* Actions need consequences, but that doesn't mean you sitting there bored, or even having to withdraw your transport and fiddle with things.<br />
<br />
=== Bugfixes ===<br />
<br />
* Ships still under construction (like a Zenith Power Generator bought from a Trader) should no longer cause AIP on death (scrapping or being killed or otherwise). Additionally, they should not cause a response from the Vengeful AI type. Please let us know if there are still problems with this, as we have not tested the fix.<br />
** Thanks to Ithuriel for reporting.<br />
<br />
* Added some slight spacing after the range declaration on ships, to avoid text running into one another.<br />
<br />
* Fixed a bug with the mirror damage on medium and up tooltips not showing the full text properly.<br />
<br />
* Put in a fix that should prevent any situations where too few bastion worlds seed.<br />
** Tested on X maps and they were seeding the correct number, even when they were further away than adjacent.<br />
** Also verified that with randomized AI layouts (DLC2 feature), the bastion worlds work properly, but again are just seeded further away.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed a bug in the prior beta where most tutorials were broken (unable to generate maps), and generating maps with custom AI layouts was also broken.<br />
** Thanks to Lowestech for reporting the tutorials.<br />
<br />
* Fixed a rare random couple of exceptions that could happen in map generation in Helper_MakeSureFactionIsSetUpForPlayer, possibly mainly after coming from tutorials to the lobby?<br />
** Either way, whatever it was is fixed now, and that code will give more specific error messages if it has errors in the future.<br />
<br />
* If you tried to load a tutorial and it errored, then sometimes it could make for errors then appearing in the lobby the next time you went there. Fixed that.<br />
** Essentially, if Praetorian Guard are missing in the lobby, it now adds those.<br />
<br />
== Beta 2.750 Bastions And Tuning ==<br />
(Released March 3rd, 2021)<br />
<br />
* Put in a new xml feature, will_not_regenerate_dying_ships_if_health_below_this_percentage, which should take a floating point number between 0 and 1. If it's set to 0.2, then if a regenerator ship has less than 20% health remaining, it will not actually regenerate any other ships. Normally the logic is only "don't kill yourself, regenerator!"<br />
** Applied this to the DLC2 Valkyrie Cruiser, at 0.5, but have not tested that it works.<br />
** Thanks to Zeus for requesting.<br />
<br />
* For a long time, there has been a mechanic where if you outnumber enemies 10:1 on the local planet, or there are fewer than 0.2 strength on the current planet, then the repair lockout would immediately reset to zero. For hostile factions, their rule was if they had no enemies present, their repair lockout would reset to zero immediately.<br />
** The repair lockout is based around how long it has been since you were last shot, and the purpose of this mechanic was to make it so that with turrets and other structures on your own planets, you don't have an incentive to scrap and rebuild your turrets because of repair lockouts after you've beaten the enemy off your planet.<br />
** This mechanic now only applies to "planetary" forces, which means basically turrets, minefields, station-keepers, and other things like that which can't go through wormholes (most anything from the ODSS, and most of the small forcefields).<br />
** People had noticed that they could game this system with their mobile offensive fleets by transiting wormholes to adjacent safe zones and bypassing the repair delays on things like their transports, which was a source of minor cheese in a variety of cases.<br />
<br />
=== Fixes And Tweaks ===<br />
<br />
* The variable LastTimeTakenDamageFromPlayer on ships was a misnomer, it turns out, and it has been renamed to LastTimeTakenDamageFromBeingShotByAnyone to prevent all sorts of possible confusion.<br />
** This should affect nothing, unless some mod happens to use it. But in that case, there was a good chance the mod might have been using it wrong based on the name, so it would be worth a review anyhow.<br />
<br />
* Fix an incorrect ARS hack tooltip<br />
** Thanks to Metrekec for reporting<br />
<br />
* Add some defensive code to the hacking tooltips<br />
** Thanks to Chthon for reporting<br />
<br />
* Fix a typo in the TSS hovertext<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Updated a bunch of the code for how we find "external data" that is used by factions, mods, and various other semi-custom or fully-custom data.<br />
** The old methods have been marked as obsolete, which will force any code-based faction-related mod authors to update to the new style before they can compile again, but it will NOT break mods in the meantime.<br />
** For those mod authors please make sure and take a look at how we handle this in the central codebase, for instance in the dyson sphere faction or really any of them except AI Reserves (which is an odd case). There is a super-simple way for you to resolve the obsolete code, but it's actually leaving in more verbose code that does not have the extra error checking. If you swap over to instead using the new code that the main game uses, then when there are failures we will better know why.<br />
** This overhaul was rather time consuming (most of a morning to do), but it's something that keeps coming up again and again in both multiplayer and single-player. This new code makes it so that we should be less likely to have errors there, and that if we do it should be a lot more apparent WHY we are having an error.<br />
** Related to this, made some minor improvements to the dyson sphere check code when hacking them, but frankly it's unlikely to fix whatever the original issue was, since the original issue was actually buried down deep in this other code. The dyson bug itself may or may not be fixed, but at least if we have it happen again, we should know more about why. A savegame prior to doing a neutral planet science hack on a dyson world, if that does produce an error again, would be very welcome.<br />
** Thanks to Isiel and others for various reports that led to this.<br />
<br />
* Set wormhole transit speed bonus modifier to 1 for Trader provided Tamed Macrophage. This should suppress text about the bonus since as a station-keeper it cannot leave the planet anyways.<br />
** Thanks to CRCGamer for fixing!<br />
<br />
* Fixed a potential thread race condition when planets were created on not the main work thread.<br />
** This may never actually have happened, but let's not tempt fate. In multiplayer it was more likely to be a random error on clients, though we had not seen it yet.<br />
<br />
* Fixed an error in ReactToPowerLevel() where it would throw an exception and disable a faction if the faction didn't own or influence any planets at the moment when it ran this.<br />
** This will wind up with these factions who have apparently aggro'ed the exo forces of an AI just not getting any exos against them, presumably because they have no territory for the exo to attack.<br />
** Thanks to Histidine for reporting.<br />
<br />
* Fixed an issue that could happen in various circumstances when the name of factions was being created on the fly on multiple threads at once. This had to do with a static Stringbuilder in all cases, and now we have that marked as ThreadStatic and updated so that it uses one per thread. How did we ever manage with things like this prior to ThreadStatic??<br />
** Thanks to Badger for reporting.<br />
<br />
* Put in a tweak that should probably fix the Raptor Drones showing ??? on the upgrade science list. Can't test for sure, since we don't have a savegame.<br />
** If this doesn't do it, we may just need to remove these specific ships from the upgrade list of info, since as CRCGamer notes they only come from drone guns. So they don't really have a cap, and however many there are at the moment is incidental to how much combat has been happening lately.<br />
** Thanks to samnainocard for reporting.<br />
<br />
* Drones that were shot out of a drone gun belonging to the outguard would not properly be in the outguard faction, and thus would cause errors later. Fixed.<br />
** Thanks to Zeus for reporting.<br />
<br />
* When the game is thinking about despawning outguard because they have been around for long enough, it no longer throws any errors with any members who are missing outguard faction info. Those simply won't despawn. Most likely these are just drones or similar who are going to die soon anyway.<br />
** Thanks to Zeus for reporting.<br />
<br />
* Fireteams now use ConcurrentDictionary instead of ArcenSparseLookup, as apparently these could get a bit wires-crossed with multiple threads, and this may be slightly more efficient in general, anyway.<br />
** This prevents certain nullref exceptions that could happen in BuildShipsLookup, and probably also a few other things.<br />
** It's worth noting that it turns out that the foreach statement with a ConcurrentDictionary is fully thread-safe, and in general supports continuing iteration over the directionary while things are added or removed, which is a strange and wonderful superpower of this.<br />
** Thanks to Sigma7 for reporting an exception in BuildShipsLookup.<br />
<br />
* Fixed a bug with some fireteam tracing always being on, and slow things down because of that, because of a tracing flag having a typo causing it not to be used. This may have only affected the scourge, not sure.<br />
<br />
* In the tooltips, ships that are immune to repair no longer show the repair timer for when they are next able to be repaired -- that was contradictory and confusing.<br />
** However, if such a unit is able to regenerate itself, it shows that timer and says that's how long it will be before it can start regenerating health again.<br />
** Additionally, for ships that can regen AND be repaired, the wording for that has been updated.<br />
<br />
* The "Deals half normal damage due to firing from under forcefield." warning is no longer shown for any units that get a bonus for firing out from under forcefields.<br />
** The actual mechanic was working fine, but the tooltip was still showing this one piece of info, which was wrong.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed a bug where if units like the bastille turret were under a great-forcefield (which does not cause damage penalties to those firing out from under it), then the unit with a bonus would also not get the bonus for firing out from underneath it.<br />
<br />
* Turtle AI types now have a special version of the Troop Accelerator that they can seed that causes no AIP when it dies.<br />
** This also prevents the adaptive AI from just causing tons of AIP that you would have to take whenever it cycles through the Turtle type.<br />
** The description on this is updated to note this, in much the same way that the Zenith Trader version of the troop accelerator is.<br />
** For now, this is still the only type of special structure seeded by the turtle type, but it will no longer be so dire when it happens.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Peacemaker AIs are seeding tons of Orbital Mass Drivers, which was by design, but seemed confusing especially with adaptive AI types.<br />
** Now they are seeding Peacemaker Mass Drivers instead, which have half the durability in exchange for their prevalence.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* The Fortress Baron now seeds a special Baron Fortress that is weaker and has a unique name.<br />
** The fortresses purchased from the Zenith Trader are also now weaker and have a unique name.<br />
** Same with the black hole machines for the one-way doormaster.<br />
<br />
* Added a new Planetary range setting with 70k base range (56k range after the default 0.8 range modifier). This serves the purpose of having weapons with a range that in theory can go from one edge of the planet to another (2x 26k = 52k) without being at the 80k range limit of ships stopping to move.<br />
** Modified a number entities for ZO with this range setting so that they would still move into range.<br />
** Thanks to NR SirLimbo for adding!<br />
<br />
* Added a new can_be_stacked_even_if_would_not_normally for ships, which basically allows us to override anything else that would automatically prevent stacking (including cannot_be_stacked).<br />
** The general idea is that there are exceptions to generalities, and this allows us to override the edge cases.<br />
** This is now applied to the Pulsar Punk, Etherjet, Persuader, and variants so that they don't slow down performance to a crawl when a bunch of them are used. Normally strikecraft either don't have tractor beams, or don't have such a magnitude of them at once.<br />
*** In the future, if we run into a case where we really need to differentiate ships like this, we can make stacking and non-stacking versions.<br />
** Thanks to Democracy for reporting the issues.<br />
<br />
* While we are at it, just to be on the safe side, we are going ahead and reverting the change that made all tractor sources not-stackable. That is probably safer.<br />
** This might mean that things like mosquitos need to cannot_be_stacked set to true on themselves.<br />
<br />
* Fixed a longtime bug that was preventing regular guardians from ever seeding in waves or wave-like things, even when they were supposed to (such as on hacking responses).<br />
** Dire guardians were able to seed on truly massive waves or wave-like things because they are handled differently, but guardians themselves have long been absent. For a third hack of an ARS, this could mean a CPU-grinding amount of tiny ships, rather than offsetting that at least some with guardians to keep things moving and interesting.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed an issue since Feb 25th where all of the beam weapons and other lines other than the new chain lightning had their hdr glow removed, making them pretty hard to see.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed a bug with waves where if they included any dire guardians or regular guardians, they would ONLY include those. This was a simple code error, and now it properly mixes them with strikecraft when relevant.<br />
** Thanks to Democracy for discovering.<br />
<br />
* Previously, if you sabotage hacked a warp gate (and it died without costing you AIP), then if you captured the planet, you would still get the full AIP later. This should be fixed now, though the fix is untested. If anyone can confirm in the next build, that would be appreciated!<br />
** Thanks to Bionic for reporting.<br />
<br />
* Fixed a bug in multi-AI games where it would complain about duplicate factions when you loaded in, with relentless AI wave factions and CPA logic factions.<br />
<br />
=== Endgame Difficulty ===<br />
<br />
* The AI Difficulty xml has a new feature called number_of_ten_minute_increments_before_homeworld_is_fully_defensible.<br />
** This was previously always set to 18, which is 3 hours of time.<br />
** Essentially, the AI homeworlds want to grow to be monsters of defenses by nature, but we introduced this mechanic a few months ago in order to hold them back from being too crazy at the start of the game.<br />
** The problem is, they would still often become crazy, more than was warranted, as they were often reaching a cap because of players alerting few planets. This doesn't make sense to be global for all difficulties, as CRC Gamer pointed out.<br />
** So, by difficulty, the timings are now:<br />
*** 1-5: 60 (10 hours)<br />
*** 6: 50 (8.3 hours)<br />
*** 7: 40 (6.6 hours)<br />
*** 8: 30 (5 hours)<br />
*** 9: 24 (4 hours)<br />
*** 10: 18 (3 hours, previously what everything was set to)<br />
** Thanks to ArnaudB and CRCGamer for helping us discover this!<br />
<br />
* Added a new debug setting to the AI Logging subsection in settings: Track Guard Post Content Details<br />
** Any time ships are added to a guard post for any reason, it will log a 'reason code' on the guard post with why they were added. Useful for hunting down problems with planets with too many guard posts. Not a great thing to leave on long-term or for general play, as this will substantially bloat savegame files. No impact on game speed, however. You can see the results of this tracking data by hovering over the guard post you are curious about.<br />
** Thanks to ArnaudB and CRCGamer for inspiring this addition.<br />
<br />
* The way that we check for external invincibility on units is now a bit more efficient.<br />
<br />
* The way that the game checks for "must have at least this number of something for external invulnerability" is now based on "greater than or equal to" instead of just greater than.<br />
** This was probably leading to things being off by one in a way that folks noticed with AI Eyes.<br />
<br />
* Dire guard posts now have their own SpecialEntityType, of DireGuardPost, rather than GuardPost.<br />
** All of the things that affect GuardPost still affect DireGuardPost, including things like the hacks to weaken them.<br />
** That said, they won't contribute to the invulnerability of AI Eyes anymore, so there's that!<br />
<br />
* The AI Overlord now gets invulnerability only from dire guard posts, rather than all guard posts. However, it gets it from all of the dire guard posts that it owns in the galaxy, rather than just those on its home planet, now.<br />
** For existing savegames, this is effectively no difference.<br />
<br />
* The text for invulnerability provided by outside sources has been cleaned up, allows for plurals properly, and will show on any entity now without need for a special description appender.<br />
** This should mostly apply to AI Eyes and the AI Overlord Phase 1, but it also applies to things like the Custodian with Astro Trains, and it would apply to modded or additional units that use this sort of mechanic.<br />
<br />
* When a former AI homeworld is reconquered by an AI, it should now no longer seed dire guard posts.<br />
** Additionally, whenever any AI world is reconquered by an AI, it should have a different mix of guard posts than it used to.<br />
<br />
* Three new fields on AI types:<br />
** number_of_dire_posts_on_homeworld: How many dire guard posts will there be on the AI homeworld? All other guard posts that are seeded there will just be regular armed guard posts.<br />
*** Given that there is variability in the number of guard posts on AI homeworlds in general, this makes the dire part consistent at least for a given AI type. Dire guard posts costs AIP to destroy, and are way tougher. And also are the ones protecting the overlord.<br />
*** Note that we are not toning down the total number of guard posts, since that would actually make things harder since the same number of units would be concentrated in a smaller number of receptacles.<br />
** number_of_bastion_worlds: how many mark 7 "bastion" worlds are there in the vicinity of the homeworld? No longer is this limited to purely just however many planets are adjacent to the AI homeworld.<br />
*** If there would somehow have been more mark 7 worlds than this based on an extreme map type (lots of links), those will now be mark 6 worlds, instead. Aka, easier.<br />
*** If there would have been very few based on very narrow map topology (x or snake), then the mark 7 bastion worlds will be seeded further out in a line. Aka, harder.<br />
** number_of_dire_posts_on_bastion_worlds: each bastion world will have this number of dire guard posts, allowing the general number of dire guard posts to be similar (or higher or lower, depending on the AI type), while still having fewer on the actual AI homeworld.<br />
*** This makes it so that the AI homeworld is not always just this giant pit of doomstacks of AI units, with them instead being spread between a few nearby worlds. You have to kill the dires on these worlds before you can kill that overlord, after all. Same fight, but less concentrated in one small world, and thus a bit easier but also hopefully more interesting.<br />
** Thanks to ArnaudB and CRCGamer for inspiring this change.<br />
<br />
* AI types adjusted:<br />
** Most of them: number_of_dire_posts_on_homeworld 6, number_of_dire_posts_on_bastion_worlds 2, number_of_bastion_worlds 3.<br />
*** This spreads things out considerably.<br />
** Turtle: number_of_dire_posts_on_homeworld 10, number_of_dire_posts_on_bastion_worlds 5, number_of_bastion_worlds 1.<br />
*** This gives that doomstack turtle effect.<br />
*** The Vengeful AI in DLC2 also works like the Turtle in terms of its balance of these, since that's an interesting paradox.<br />
** Fortress Baron: number_of_dire_posts_on_homeworld 4, number_of_dire_posts_on_bastion_worlds 3, number_of_bastion_worlds 4.<br />
*** This gives the effect of this really big fortress area from several worlds.<br />
*** The Spire Hammer in DLC2 also works like the Fortress Baron in terms of its balance of these.<br />
** Peacemaker: number_of_dire_posts_on_homeworld 7, number_of_dire_posts_on_bastion_worlds 1, number_of_bastion_worlds 5.<br />
*** A bit in the middle, with a slightly more intense homeworld, a LOT more bastion worlds than normal (that's scary), but way less to do on each one.<br />
*** The Geneticist in DLC2 also works like the Peacemaker in terms of its balance of these.<br />
** Beast (DLC2): number_of_dire_posts_on_homeworld 10, number_of_dire_posts_on_bastion_worlds 3, number_of_bastion_worlds 2.<br />
*** A bit of a different flavor, to go with a very brutal AI type.<br />
** Thanks to ArnaudB and CRCGamer and Democracy for various suggestions here.<br />
<br />
* The way that guard posts are chosen for AI-allied Scourge (DLC1) has been updated so that it will never use dires, and is more proper in general.<br />
** If we accidentally broke it, then let us know that also, too, please.<br />
<br />
* The number of mark 7 worlds used to be partly controlled by the AI difficulty, and partly based on map size, but this is now entirely based on the AI type.<br />
** This style of brokering difficulty (mainly lowering it for lower difficulties or smaller maps) is not really required. This will make smaller maps a bit harder, though.<br />
<br />
* Bastion worlds are now unusually hyper metal-rich, which is a nice bonus if you choose to capture them (you certainly do not have to).<br />
<br />
* The initial seeding of AI homeworld strength caps is no longer 2x what it would otherwise be. <br />
** That strength is now effectively spread out among the various Bastion worlds on which you now need to do at least a bit of fighting.<br />
<br />
* Wardens now have a bit more affinity for bastion worlds, like they do for AI homeworlds.<br />
<br />
* Spire cities can now not be built on AI Bastion worlds. That would have generally been a terrible idea, anyhow.<br />
<br />
* AI Instigators can no longer spawn on AI Bastion worlds OR next to them (this can avoid some really nasty situations that previously you could get into).<br />
<br />
* The ZM from DLC2 also can't spawn on AI Bastion worlds.<br />
<br />
=== DLC2 Features ===<br />
<br />
* Forcefields or regular ship hulls can now be "Electrotoxic"<br />
** This is set up with returns_this_percentage_of_damage_if_damaged_by_enemy_attack, which should be a float that is larger than 0 if you want to use it. 0.5 is 50%, 2 is 200%, etc.<br />
** Depending on how strongly electrotoxic a target is, it will deal back some portion of any damage that it takes from incoming weapons fire (beam weapons and AOE and so on are included).<br />
** If a bubble forcefield takes 8000 damage from some ship that has a bonus against bubble forcefields, as one example, and the forcefield was set up to be 150% electrotoxic, then it will deal back 12000 damage to the shooter.<br />
** This has some similarities to the mirror mechanic in the first AI War, but various different applications, and probably will only be used on some specialist units. This is something for in DLC2.<br />
** Not yet tested.<br />
<br />
* On weapon systems, instead of setting firing_timing="OnlyInRange", you can set firing_timing="WhenParentEntityHit"<br />
** This makes it so that the weapon won't fire normally, but will instead only return fire when the ship holding the weapon system has been hit.<br />
** At the most basic level, if ONLY this is turned on, this makes for a "retaliatory" weapon system that can be anything.<br />
** The range and such of a retaliatory weapon is technically irrelevant, if the enemy can hit it, it can fire on the enemy. Reload timings are also irrelevant. It fires only as often as it is shot, but is able to fire every time it is shot.<br />
** That said, if this is set up as a beam weapon, or chain lightning, or some AOE burst, or a "drone gun," or whatever else... those things will all work just fine.<br />
** It's worth noting that the shots that are fired in this way are still able to be blocked by forcefields, and have damage bonuses, and all of the other regular things that a shot does.<br />
*** The one main thing that a shot like this can NOT do is cause a retaliatory shot to be triggered on the other end (you'd get into infinite loops). But if the other end has an electrotoxic effect, that WILL be triggered.<br />
** Please note that at this point, we are not at what you would call a "mirror shot." Rather, this is just a passive weapon system that fires back on enemies whenever it gets shot by a non-retaliatory shot. This is interesting even before we take it to the "mirror shot" level.<br />
*** It is also worth noting that this will not be triggered by semi-passive effects like electrotoxic effects, attrition damage, or similar. But AOE damage will trigger it.<br />
** It is also worth noting that this CAN be given to a ship that is a forcefield generator, and any time anything hits the forcefield -- aimed at the generator or something under it -- it will generate a retaliatory shot. Probably not something to do, but it can be done.<br />
** This is untested so far.<br />
** Thanks to Zeus and CRCGamer for requesting.<br />
<br />
* Mirror time! Your weapon system has to have the above firing_timing="WhenParentEntityHit" set on it already. And then add a new returns_this_percentage_of_damage_when_firing_retalitatory_shot="0.5" or whatever ratio you want on the weapon system.<br />
** This works ONLY with return-fire shots that are not drone-gun style. If you use it with AOE style return shots, or a beam weapon return shot, it's uncertain what the result there would be, too. Ideally this is just used with a general projectile. This also only gets one shot per salvo, and anything specifying more is ignored. It's an entirely reactionary system.<br />
** If you set this to something like 0.5, then 50% of the damage that was just done to the ship with this system on it will be "reflected" back in a retaliatory shot at the ship that originally fired on it.<br />
** You can, of course, set that ratio to be 1 (for full damage) or more than 1 (for amplified return fire).<br />
** Things like forcefields can block these sorts of mirror shots, but other forms of damage reduction (other than temporary or permanent invincibility) will not work. <br />
** Additionally, any weapon damage bonuses are irrelevant with this sort of effect, so combining those is going to be confusing to players (don't do that). If you want that sort of thing, use retaliatory shots without the mirror component.<br />
** This is untested so far.<br />
** Thanks to Zeus and CRCGamer for requesting.<br />
<br />
* Added in a new custom_repair_delay_seconds_after_damaged_by_enemy_max_511 and custom_repair_delay_seconds_after_crippling_max_511, which are on entities and allow for you to set custom amounts of time that a unit is locked out of regen and/or repair after it is either damaged or crippled, respectively.<br />
** Normally it is 300 seconds after crippling (5 minutes), or 5 seconds after being damaged. But for various units it is useful to be able to set other values for one or both things. The max this field can take is 511 seconds, because of the data type it is. Anything set higher will just be reduced to 511.<br />
** It's worth noting that as long as you set it to something more than 0, that will be the new default. So if a certain flagship should recover more quickly from crippling, say only 100 seconds instead of 300, you can set that sort of lower value and it will apply. Anything 1 second and up.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Additionally, we now have tooltips that explain what these values are for each unit in the full tooltip, in grayer text with red for the actual time values, so that people are aware this mechanic exists at all, if they previously were not.<br />
<br />
* There is, in general, a new large background thread of potential features all relating to area boosts of ships against allied ships.<br />
** These get subdivided into two categories: not-evaluated-at-time-of-being-fired-upon, and those which ARE evaluated when a ship is fired upon. Only the latter is used for now, but we can do various things in the future with the other.<br />
** Essentially this provides a bit of a framework for us to implement a number of features, as well as letting us actually implement the one feature we care about today.<br />
<br />
* Added a new attract_range_for_shots_against_allies feature, which should be a range specified like for tachyon or tractor or gravity, and which should be on its own system on a ship.<br />
** This was implemented as a ship system so that we can turn that on and off by mark level of the ship, or via modules later on. All those nice system-based features that are optional based on certain contexts.<br />
** This feature is very simple. UI description:<br />
*** ATTRACTANT FIELD: All shots fired against friendly units within range X are automatically redirected at this unit, instead.<br />
** Thanks to CRCGamer for requesting.<br />
** Untested so far!<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed a bug where the new GetFactionListOrEmpty function would only find "dead" AIs or Players at the start of the game due to them having no king units. This was causing errors with AI-allied, potentially also player-allied Kaizers Marauders.<br />
** Fixed Battlestations and Citadels not being listed under Hackers, as they now TRULY ARE allowed to hack things in Vanilla.<br />
** Simplified the logic for setting up a rollup of abnormal hackers in the ExtendedHackingImplementation.<br />
** Moved and centralized the logic for Placement Condition location searches to the PlacementCondition class and made it static, which makes it possible to access it without any need for variable tags.<br />
** Created a new function within AMU in the galaxy settings under AMU - Topography: Capturable Repositioning:<br />
*** This changes the locations of capturables (Zenith Power Generators, Zenith Matter Converters, Major Data Centers, etc) on a planet to not be near wormholes and somewhat on the outter edge of the system.<br />
*** The result is that there will be less situations where important targets such as MDCs are located right on top of wormholes or in the travel line of Astro Trains, making it extremely difficult to defend them.<br />
** Vastly upgraded the Auto-Juggle Energy assistant:<br />
*** It can now handle different types of converters, with different efficiencies at different marks, and will always find the most efficient way to re-allocate excess power, or make up for needed energy.<br />
*** It also should be more efficient (in CPU and bandwidth, not so much in RAM I'm guessing).<br />
** Fixed a really bad bonehead programming bug where the PlacementCondition.GetLocation() function would not try to seek points at X distance to a specified location all the time - it would wrongfully update the specified location with the current location attempt, leading to greatly misplaced Kaizers Marauders turrets.<br />
* Micro Mod Collection:<br />
** In conjunction with the upgraded Auto-Juggle Energy the Energy and Matter converters were changed:<br />
*** Both can now increase in mark level with Orbital Mining and Economic Command Station techs, and by directly spending science on a command station.<br />
*** Matter Converters were nerfed (initially) to only grant 40k energy for -500 metal/s, but gain 5k yield per mark. At mark 7 they now grant 70k energy.<br />
*** Energy Converters were buffed to now grant 200 instead of 150 metal/s, further increased by 25 per mark. At mark 7 they now grant 350 metal/s. The cost stays at flat 50k energy.<br />
*** At its peak the Human Matter-Energy conversion loss is 2%. So a chunk of 100g of metal converted to energy and back would return as 98g, or a power cell with 100W converted to metal and back would return as 98W. That's pretty amazing!<br />
* Kaizers Marauders:<br />
** Instead of getting the outpost and capital hacks done by battlestations and citadesl through the above logic they now use the new Vanilla logic. This changes nothing for the player but cleans up the code.<br />
** Adjusted them to work with the new PlacementCondition logic.<br />
** Adjusted them to also have color-coded and internally recoded debug toggles.<br />
*** Thus it was discovered that Defector Traces were internally still using Stage 3 General Tracing, and thus the toggle for the player to enable did nothing withle the general tracing one did more than it should.<br />
*** It was also discovered that in no place of the code the Invasion-, Offensive- and Defensive Spawners were traced at all, and internally the debug toggles were entirely unused. This has been fixed.<br />
* Extended Ship Variants:<br />
** Reduced the count of all player-found Etherjets, Ensnarer Etherjet and Thieves by 75% as they are they were made 4x stronger in Vanilla.<br />
<br />
* Extended Ship Variants:<br />
** Fixed the Acidic Support Factory having built drones AND a drone gun for the same drone type, leading to infinite potential drone counts...<br />
** Normalized the amount of Sentry Frigates all the support fleets have to 2 like Vanilla fleets.<br />
<br />
* AMU:<br />
** Updated a few variable overwrites:<br />
*** Received Damage While Under Construction default is now 3, and it correctly stats that its minimum is 1x.<br />
*** Fixed a bug where AMU would disable achievements if a player turned science per planet down, and then back up even if it was below the 2k Vanilla science count.<br />
*** Added the settings to manipulate the amount of bonus hacking points for owning adjacent planets.<br />
*** Added the settings to manipulate the AIP that AI Command Stations, Warp Gates and all stages of the AI Overlord inflict on the player. The first two combined also are the AIP cost for capturing a neutral planet that the player hasn't paid the price for yet.<br />
*** Also added the settings to manipulate the AIP on death or claim of Data Centers, Fortified Data Centers or Major Data Centers.<br />
**** Thanks to zeusalmighty428 for suggesting!<br />
** Updated the Source Code.<br />
<br />
* AMU:<br />
** Fixed the amount of hacking points set in the player faction stating that the default is 100, it actually was 60.<br />
<br />
AMU:<br />
* Fixes and improvements to the Auto-Juggle Energy assistant:<br />
** Fixed the Auto-Juggle Energy not factoring in power gained through planetary resource boosts that even affect Energy and Matter Converters.<br />
** For the assistant to consider something a valid "converter" it now requires it to have 0 raw energy cost, and either positive energy and negative metal generation or the inverse. Structures that cost energy and produce metal no longer apply.<br />
*** This was done to prevent any false positive on converters or modded converters that could be boosted with flagships to exceed the laws of energy converservation (see below in the Micro Mod Collection update notes).<br />
** The assistant now has 2 more "fail" conditions:<br />
** If, even after using all converters, a brownout cannot be prohibited all converters will be blown up. First the player needs to sort out their economy before the assistant can reasonably work, and they will most likely need metal to do so.<br />
** Ditto if using as many converters as needed turns the metal generation negative (even if not accounting for other metal uses) and the remaining time of spending all metal until it's gone is below 10 seconds it will stall until it's safe to convert again.<br />
*** This is to prevent counteracting whatever the player may try to do and displays a warning. Without self-sabotaging on purpose it's quite hard to reach these states anyway.<br />
** Before it was unclear whether or not converters on planets with destroyed command stations were even considered at all. Now they will be considered, but nothing can be built, only destroyed if needed.<br />
** Updated the source code.<br />
<br />
Micro Mod Collection:<br />
* Changed the raw energy cost of the Energy Converter to instead be a negative power production.<br />
** This is so that it also is increased via planetary metal and energy income boosts. Otherwise at Mark 7 the player could begin producing metal and energy out of nothing, literally breaking the laws of energy conservation.<br />
** Known issue: When a game is saved while the player's energy production is negative (which can happen now, although it's not easy to do if not deliberate) it'll throw an exception, it should however have a fairly low impact, possibly UI-only.<br />
<br />
* AMU:<br />
** Fixed the Max Waves From Wormhole Invasions having a default of only 2 when it states (and should have) 5.<br />
<br />
AMU:<br />
* Fixed the Metal Bleed notification from the Auto-Juggle Energy Assistant not working.<br />
* As the planetary range setting is now in Vanilla it was removed in AMU.<br />
<br />
== Beta 2.748 Defaults And Fixes ==<br />
(Released February 25th, 2021)<br />
<br />
* New Show Faction Alliance Details In Escape Menu setting under Debug: Escape Menu Additions:<br />
** This will take up a LOT of processing while it draws, so it's not something to use frequently. But if the allegiances seem off for factions, this will let you see what they even are at a very detailed level.<br />
** Thanks to Bionic for inspiring looking into this, but thankfully all seems well.<br />
<br />
* Fix to a typo in a recent release: Ambush Turret hull was reduced instead of metal cost. This has now been fixed.<br />
<br />
* Fixed a pair of cross-threading issues that could happen when updating the amount of strength available per tech line, often on starting quickstarts but also other times.<br />
<br />
* Fixed another trio of cross-threading errors that could happen in general when fleets were being analyzed while a fleet was still in the process of being added. This was happening at the start of quickstarts in particular as well.<br />
<br />
* Fixed what seems to be the last of the cross-threading issues, potentially mainly on quickstarts, based on fleets calculating what planets they were on.<br />
** Thanks to Metrekec for reporting.<br />
<br />
* Since basically the inception of this game, we've had the ability to say "if a keybind or a setting had its value set in a version older than X, reset it to the default value," which is extremely useful for when we are changing around defaults in ways that should be pushed to everyone without us renaming or removing a field. That's been a very useful tool, although it's not like it's used every day or something.<br />
** However, we have never had that actually in and functioning for galaxy options (the stub was there but it did nothing), or custom fields on faction types (like humans, for instance). Now we have that for both of those categories of data.<br />
** The first two fields to benefit from this are the number of cryogenic pods, and the number of home human settlements, both of which are meant to be a lot higher than they used to be, giving players way more metal income early in the game. But for anyone who was just firing up the game and not doing Reset To Defaults in the lobby (why would you), they were still having the old values.<br />
*** Also, as a side note to this, the defaults as noted in the tooltips for these have both been corrected to the new values, whereas previously the stated defaults were the old defaults.<br />
** Thanks to Suzera for reporting the tooltip issue.<br />
<br />
* Restructured the base sniper unit and children entities a bit.<br />
** Snipers, Trippers, and Railpods no longer get a x8 versus fast enemies moving faster than 1K speed. Instead get a 2x bonus against enemies that have been on planet for under 15 seconds.<br />
** Additionally basic Snipers get a 3x bonus against any enemy held within a tractor beam. From some testing this is *very* satisfying to watch them focus fire anything caught by things like Deathgrip Tackle Drones.<br />
** Additionally un-nerfed Tripper damage from being half that of a regular Sniper since the old potential x24 damage multiplier doesn't exist anymore.<br />
*** This means they will be somewhat more exciting against higher powered engines than previously and a lot more exciting when they get to stack that bonus with the ambush bonus against things new to the planet.<br />
** Thanks to CRCGamer for implementing these changes.<br />
<br />
* Added a new cheat to the game: grantalloutguard<br />
** All outguard are immediately considered contacted and show up on your sidebar, whether they were included in any beacons in the galaxy or not.<br />
** Thanks to Zeus for inspiring this change. It will make testing outguard much easier for everyone!<br />
<br />
=== DLC2 Work ===<br />
<br />
* Added new mechanics which can be used to create "chain lightning" out of beam weapons.<br />
** These are based on general beam weapons, with NOT having "hits all targets on, and having instead these filled in: beam_chains_out_to_targets_x_times, beam_chains_out_to_targets_x_range, and beam_chains_out_to_max_targets_from_each_source.<br />
** An example in DLC2 has been created in the form of Invincible Ohmu Chain Lightning, which will remain around longer-term as a cheat code for fun.<br />
** Video of this here: https://youtu.be/OqSfu8UoBTA<br />
** Thanks to CRC Gamer for suggesting the mechanic!<br />
<br />
* Added a new target evaluator, LowestHealthAsMajorPrimary, which is also useful for large chain lightning weapons, and potentially other AOE items.<br />
** This was added post-video, and makes it work much better.<br />
<br />
* Added a new only_targets_strikecraft_and_frigates, which is useful as a companion to large chain lightning weapons.<br />
** This was added post-video, and makes it work much better.<br />
<br />
* Various chain lightning updates:<br />
** The Chain Lightning attacks now have their own visual effect that looks lightning-like and uses a new variant of the custom shader.<br />
** The chain lightning effect can now also have a minimum distance of travel, which is set to 200 by default in our test unit, so that units on top of one another don't get strange self-lightning.<br />
** The Chain lightning visual effects are now faster, and also last longer on the chain parts rather than the original blast.<br />
** Video of the results: https://youtu.be/wVGZhGtxtBM<br />
<br />
== Beta 2.747 Outguard Usability ==<br />
(Released February 24th, 2021)<br />
<br />
* Made the code for regenerator effects a bit more explicit in not being able to work if they are crippled, or remains, or various other things. I think this part was already working fine, but it's good to be sure.<br />
** However, it was definitely possible for the number of ships to be regenerated in excess of the ship cap, probably most likely when there was also a factory producing things at the same time as ships were dying, but really potentially in a variety of cases. These have now been fixed and that should not happen anymore.<br />
** Thanks to Sol for reporting.<br />
<br />
* New bonus for players!<br />
** If you have captured a planet that is next to another human planet, it will yield an extra 5 hacking points. This is noted on the tooltip when looking at the planets.<br />
** Normally the big incentive is to planet-hop around, in order to reduce total AIP increases. And that's still definitely the overriding factor in play. But we wanted to provide a contradictory incentive for when you DO choose to take a pocket of planets. It's a minor thing, but can give a little bit of a boost to players who are thinking about mid-AIP or high-AIP playstyles.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Long (tall style) popup text now has some extra whitespace under it to prevent it from ever being cut off. This is applicable for things like journal entries.<br />
<br />
* Nerfed the Royal AI guardian variants to start at Mark 2 instead of 3. While certainly not an insurmountable challenge it definitely was far stiffer competition than the other brutal AIs with the general guardians being raised to mark 3 baseline.<br />
** Thanks to CRCGamer and Puffin for catching.<br />
<br />
* Fixed the "Neutral Planet Science Extraction" description from being "old, do not use" to "Hack the AI to distract it as you deploy your science-related nanomachines to the planet."<br />
** Thanks to Metrekec and ArnaudB for reporting.<br />
<br />
* The Warden fleet's ability to increase its strength is now back to what it was for the first 5 minutes of the game, and then its ability to boost itself due to low population cap is only 1/4 as strong until the 10 minute mark, and then only 1/2 as strong until the 20 minute mark. After 20 minutes, it is fully able to self-heal as much as before.<br />
** The Warden is still just as aggressive early on in, but this gives you a change to kick their butt and have them out of the way for the first few planets. It also keeps there from being deadly amounts of warden on early planets.<br />
** While we do want the AI to be more vibrant in the early game, we don't want it putting up this much of a fight until people have a bit of time to catch their breath. We definitely don't want to introduce any difficulty walls for new players.<br />
** Thanks to Daw11 for reporting, and Strategic Sage and TechSY730 for weighing in.<br />
<br />
=== Outguard Updates ===<br />
<br />
* Description of the outguard faction (not even sure if it's shown much of anywhere) now updated some to reflect them a bit better.<br />
<br />
* Integrated Zeus's new journal entry with lore for the outguard into the game, and that now pops up the first time you meet any outguard. This is apparently going to see a few revisions, but it's nice to go ahead and have that in there.<br />
** As part of this, it also notes "Outguard sighted -- potential underlings!" in the chat, which is pretty blatant in terms of what these are.<br />
<br />
* After you have hacked an outguard beacon, it now disappears, although it still exists. We're being tricky about this by setting its "time it was created" into the future continuously, which means that any of the scouting logic thinks that it was not seen in the last scan (since the last scan was the current second).<br />
** This lets us not disrupt how the outguard function from a technical standpoint, but makes the beacon not hang around in a confusing and annoying way.<br />
** Thanks to samnainocard for reminding us of this.<br />
<br />
* In general, the text color for hack targets is now the mark level of the ship line, making it more obvious what is better to hack for.<br />
** The error text is now colorized next to them, saying "Not Possible" when they are not an option, rather than sometimes saying "Invalid."<br />
<br />
* The hack "Access Outguard Beacon" has been renamed to "Make Contact With Outguard."<br />
** The description of the hack now says:<br />
*** Hacking this beacon will allow you to contact some of the Outguard -- remnant anti-ai forces that can come to your aid. Since this is going to be routed through the AI communication channels, expect heavy AI response to this. However, once contacted, the Outguard will be at your disposal as-needed for the rest of your campaign. They can be called directly to planets far from your territory, they don't incur deepstrike or counterstrike penalties, and they can often reach places you may have trouble directly going yourself.<br />
*** Many outguard can also turn the tide of a conventional battle, if you need them to. Some others have other functions that are more utilitarian or economic in nature.<br />
<br />
* The intensity of the Outguard hack has been cut in half, making it far easier in the early game and not so apocalyptic in the later game.<br />
** Thanks to Strategic Sage for suggesting.<br />
<br />
* Rather than getting two outguard groups when you hack an outguard beacon, it now shows you the two groups and allows you to choose one of them.<br />
<br />
* All outguard groups now have a custom amount of AIP that it costs to hire them.<br />
** For anyone creating outguard, you MUST now specify aip_cost_on_contact="10" or whatever to set the amount.<br />
** For now, all of the outguard groups continue to cost 10 AIP -- but now the flexibility is there for many different amounts.<br />
** Note that, technically, all outguard groups used to cost 5 AIP since you got two at a time, but at any rate the transaction cost has not changed.<br />
** Thanks to Strategic Sage and others for inspiring this change.<br />
<br />
* The tooltips for the outguard groups are now generated more efficiently, and include a bit more data.<br />
** Additionally, you can now actually see these tooltips BEFORE you hack for them, so you can see the details of a mercenary group's call conditions and so on when you choose which one to hack for.<br />
** Thanks to Strategic Sage and others for inspiring this change.<br />
<br />
* The game now prevents you from accidentally hacking an outguard beacon to call an outguard faction that you have already contacted, as contacting them again has no benefit.<br />
<br />
* When you C-click an outguard beacon to see the details of the ships in each potential outguard faction, it now also gives you the full details about the group like you could see on the sidebar. Previously there was no way to find this out prior to actually hacking and getting a group.<br />
<br />
* You can now C-click individual outguard options when hacking, and see just what comes from them.<br />
<br />
* You can also C-click outguard who are on-call on the outguard tab, and thus actually see what they contain. Previously once you had hacked them, you could only go back to the original beacon to find that information (and now the beacon is invisible, so that was also not even an option).<br />
<br />
* Outguard beacon description updated:<br />
** Hack this beacon to make contact with extremely helpful groups of allies who you can later call to your aid. They can often strike where you cannot, and are great for emergencies. See hack details for more info.<br />
<br />
* The outguard sidebar has had some color introduced, and does things on three lines instead of four, now. Overall much more attractive.<br />
<br />
== Beta 2.746 Release The Warden ==<br />
(Released February 23rd, 2021)<br />
<br />
* Number of typo fixes in starting fleets.<br />
** Thanks to ArnaudB for fixing.<br />
<br />
* When the general mark level of the AI goes up because of AIP, it now gives you a chat message about that.<br />
<br />
* Fixed a display bug where in various circumstances, it would say "pass" instead of "fail" for the "number of mark X cities other than me" on spire cities. This was purely a visual thing, but quite confusing.<br />
** Thanks to samnainocard and ArnaudB for reporting.<br />
<br />
* Fixed a bug in the prior version that was causing elite ships to still count against the fleet-wide bonus limiter, when they were not supposed to.<br />
** Please note that elite ships already DO get any bonuses from fleet-wide effects, even those that say non-flagship (elites are not flagships). They don't benefit from something like the high capacity transport, though, since that explicitly only benefits strikecraft. But if there were an elite strikecraft line, that would benefit from the HCT.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* Fixed a one-line typo in the prior release which broke all tachyon beams from actually revealing enemies.<br />
** Thanks to Democracy, Metrekec, and others for reporting.<br />
<br />
* The AI Reserves no longer use the Relentless AI Wave faction, as that may have caused some strange logic and wasn't needed at any rate.<br />
<br />
* The Exo waves generated by the Fallen Spire varioos things no longer use the Relentless AI Wave faction.<br />
** Not sure if this will help with their overall difficulty or not, but we'll see.<br />
<br />
* Reconquest exo waves no longer use the Relentless AI Wave faction.<br />
** Same with extragalactic wormhole waves.<br />
** This caused them to sometimes come after players in a way that was not desirable, rather than actually reconquering the planet they were after.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed a couple of annoying issues with the bandbox selection mode popping up even when you click on the UI as the start of what would be a bandbox. Not sure if this was a new issue or not, but it feels like one and was super irritating.<br />
<br />
* Fixed an exploit where you could get a strange speed boost by putting ships into loading mode and then giving them a bunch of orders to attack something in the other direction by spamming the right-click button to get them to go the wrong way at the faster speed.<br />
** Thanks to Democracy for reporting.<br />
<br />
=== Scourge Tuning ===<br />
<br />
* Fixed the Scourge still going over the limit of builder. There was a division by zero dodged by defaulting to 1. I commented out the troublesome part.<br />
** Thanks to ArnaudB for fixing.<br />
<br />
* Scourge warriors now requires the same experience requirement for each Mark (300). <br />
** A failure to realize they went back to Mark 1 after evolving meant they were short-changed, since lower marks are more expensive.<br />
** Thanks to ArnaudB for fixing.<br />
<br />
=== Balance In The Player's Favor ===<br />
<br />
* Reduced cost multiplier for hacking TSS/ARS from 2.0 to 1.5 With the cost increase, the 3rd hack was so expensive it was pointless to offer it, even on owned planet with half cost. <br />
** ODSS multiplier cost similarly reduced from 1.6 to 1.4 for coherence.<br />
** The later costs on repeat hacks were just getting so extreme as to never be worth it or affordable.<br />
** Thanks to ArnaudB for adjusting.<br />
<br />
* Halved the cost of FRS, Cruisers and Destroyers hacks that were too costly, since they also had AIP cost.<br />
** Hacking the above structures only increases hacking response by 66% of the hack cost, instead of 100%.<br />
** Thanks to ArnaudB for adjusting.<br />
<br />
* The number of human home settlements has changed from a default of 2 to a default of 4, with the range still being 0-5.<br />
** Also, the number of cryo pods has increased from 10 to 25, still with a range of 0 to 30.<br />
** Both of these will help folks have enough income in the early game, plus some extra spots of vulnerability.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
* In a way that is almost certainly redundant given the existing code in place, we are now making sure that AI Instigators never spawn on AI homeworlds or planets adjacent to them.<br />
** The method we were using before (and still use) checks for an enemy king unit, which is generally sufficient, but sometimes the king moves (phase 2, for instance), or is already dead but the game is still going on (multiple AIs).<br />
** The new way prevents even former homeworlds from being a place that the instigator can spawn on or next to. The old method is still relevant and is also in place; as noted, this is largely redundant, but there are edge cases where they are not (AI king on the move, etc).<br />
<br />
* Ships that are under construction now only take 3x as much damage as normal, rather than 10x as much.<br />
** Thanks to some folks on discord for requesting this. This will feel better on planets of yours that are under attack, and when you are trying to beachhead. That said, some counter changes to beachheading are also coming.<br />
<br />
=== Player Nerfs ===<br />
<br />
* For thematic and balance reasons, human homeworlds no longer have any science or hacking points on them. It's a strange idea that those would not have already been gathered, and there's no point making players wait for the extra starting science and hacking points. It also was giving even more of a boost in multi-faction MP, throwing those off from single-player.<br />
** Thanks to ArnaudB for noticing!<br />
<br />
* The default number of hacking points for players starting out the game has been dropped from 100 to 60.<br />
** We do want folks to be able to do something right from the start, but it was a bit on the excessive side. Overall we're trying to make sure that players have plenty to hack, and plenty of hacking points, but at the same time that they are not drowning in hacking points.<br />
<br />
* When you are building structures on an AI planet, or you have engineers helping to build a structure or boost ship production on an AI planet, there is now a slowdown in output based on the mark level of the AI planet. The raw output of factories is not slowed down (just engineers assisting the factory).<br />
** At mark 1-2, all is normal.<br />
** Mark 3: 90% expenditure (making things take 111% longer to create)<br />
** Mark 4: 70% expenditure (making things take 142% longer to create)<br />
** Mark 5: 58% expenditure (making things take 172% longer to create)<br />
** Mark 6: 50% expenditure (making things take 200% longer to create)<br />
** Mark 7: 40% expenditure (making things take 250% longer to create)<br />
** (Quick math reminder: just do something like 100 / 0.4 to get a number like 250, which is easy to read as to how much longer it will take).<br />
** Thanks to ArnaudB for suggesting, and Magedrifter for inspiring this change.<br />
<br />
=== AI Buffs ===<br />
<br />
* New pair of mechanics! If you make a minimally-aggressive move on certain AI planets, the mark level of that AI faction (and only that faction, in the case of multi-AI games) will go up permanently.<br />
** In some respects this sounds like a penalty to players, and you could certainly argue that it makes the endgame a bit harder. And that is true, to an extent.<br />
** However, what it also does is allow for players to not fear the cutoff mark for these mark levels from AIP rising, and thus starve themselves of planets during a tense game. The rise in general AI mark level to 3 is now inevitable when you are facing off against an enemy homeworld -- so, that gives you far more latitude to work, even on very high difficulties, with AIP rises without worrying about that trigger point to the next AIP level. It will happen, so part of your mission is now making yourself even more powerful rather than keeping yourself artificially weak to slide under that threshold.<br />
** The actual thresholds in general:<br />
*** If you unload at least 10 strength on any mark 7 planet of an AI, it will gain mark 2 if it doesn't already have it. A message will pop in about this, and there is a note about this mechanic in the AIP tooltip now, too.<br />
**** It's set at this level so that you can still fly transports through if you need to bypass AI planets to get to an instigator on the far side, but you probably can't fly a golem or ark through. Also, ships like etherjet tractors can't drag off substantial enough strength of yours to trigger this, either.<br />
*** Similarly, if you unload at least 10 strength on the homeworld of an AI, then it will gain mark 3 if it doesn't already have it, and all the other same mechanics and tooltips and so on apply.<br />
** Thanks to ArnaudB for the discussion and helping hash this out.<br />
<br />
* Fixed a couple of cases where certain AI logic was not triggering for ships belonging to the PG, the Relentless Wave faction, the CPA faction, or the AI Reserves.<br />
** This more or less meant that units from those subfactions would not trigger a variety of things, including things like the Shark B plot (but realistically probably plenty of other things as well).<br />
<br />
* The Shark B plot of the AI now has a base of 4000 rather than 300, and increases by 20 per AIP rather than 10 per AIP.<br />
** This is substantially more challenging of an optional feature to enable now.<br />
<br />
* The equivalent of shark B has been baked into the main game mechanics now. The level of intensity of that depends on the difficulty level of the highest-mark AI:<br />
** Nothing at diffs 1-4.<br />
** Diff 5: base 500, +1 per AIP.<br />
** Diff 6: base 750, +2 per AIP.<br />
** Diff 7: base 1300, +4 per AIP.<br />
** Diff 8: base 2000, +7 per AIP.<br />
** Diff 9: base 2800, +10 per AIP.<br />
** Diff 10: base 3600, +15 per AIP.<br />
** If you play on a difficulty that has these values, AND you have Shark B on, then those numbers will combine and it will be truly intense.<br />
*** Note that the achievement for Shark B only gets triggered by actually having Shark B on, not by being on a difficulty level that has some of this mechanic in there.<br />
** So what is this feature, anyway?<br />
*** Essentially, any time the humans lose a command station, the AI gets a new "go for the throat" sub-fleet of the hunter. Essentially they're trying to finish the job, and it gives a bit of an extra punch to when you lose some territory even temporarily. Note that this only happens when the AI itself, or an AI-subfaction kills the command station.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
=== AI Warden Aggression ===<br />
<br />
* Previously, the Warden was "overconfident" and would attack your ships when it was outnumbered only on LOW difficulties, but this would lead to the AI actually building up large amounts of warden ships that never did anything on higher difficulties.<br />
** The warden now is almost directly inverted in terms of its overconfidence, where it is now more likely to attack on higher difficulties even if it is outnumbered. Paired with some upcoming progressive income buffs, this should make for more fights with the warden while those fights not all being apocalyptic.<br />
** Thanks to ArnaudB, Magedrifter, and others for noting just how passive the warden is, even with huge advantages against the player.<br />
<br />
* Made a number of changes to the warden danger evaluation for pathfinding and such for its fireteams, so it is far more likely to path through dangerous planets. This will cause minor scuffles and losses, and that's okay. We want the warden to be... brushing up against you a lot.<br />
** Rather than the warden thinking things like "if it's more dangerous than 1 strength, don't call a remote unit," it now only says "if it's more dangerous than 80 strength," which is a big difference. Sure that will get a lot of small units killed, but it also gives a chance for them to rebuild, and some will sneak by anyhow.<br />
** Rather than the warden going "if the total danger to where I want to lurk is stronger than 1/10th of my own strength, then just ignore that possibility," it now doesn't care about that sort of danger at all. The warden isn't here to cower.<br />
** Rather than the warden ignoring possible places to lurk if they "only" outnumber the enemy 10:1 on the way, they now will only go if the enemy outnumbers THEM by 30:1 now. This is basically assuming that the target planet is within about 3 hops, so on average they are outnumbered 10:1 (which is still a complete inversion from them previously needing to be 10:1 outnumbering YOU).<br />
** This means the wardens will give SOME consideration to not blundering into dangerous forces, but overall they will go where they want to. Again, more scuffles and skirmishes.<br />
<br />
* As for potential targets for the warden fleet, they are already not interested if there are less than 2 hostile strength on them, but now there are a few other changes:<br />
** If it's not a planet that was originally a homeworld for the AI, and there is less than 6 friendly strength on the planet, then it's not interesting for the warden to try to defend.<br />
** Aka, if the planet has been neutered, and it's not currently being attacked by the hunter or something, then this is not a hill worth dying on.<br />
** Thanks to Democracy for suggesting.<br />
<br />
* The Warden fleet gets its budget from "donations" from the main AI sentinels, but also sometimes from some other sub-factions that don't need their budget. That's the setup for this explanation.<br />
** However, now that we've got an intentionally-more-reckless warden, we want them to have essentially some progressive extra income based on just how depopulated they are. Rather than giving them a literal secondary revenue stream (which would be complicated), we're instead amplifying every donation they get if their population is heavily depleted at the moment.<br />
*** Bear in mind that the warden is now going to be depleting itself in all sorts of ways that are not all that dangerous to you now, and so the idea is that you're getting more conflict (as with the AI waves), and thus having a more interesting time, but the warden will just evaporate and be gone forever in a game if it did that without having compensation to back it up. Also bear in mind the HUGE buffs that we've been giving to player economy and capturables, so this is also kind of balancing that out a bit, too. This isn't meant to just be cheap rubberband AI, but rather something that adds more flavor and challenge when the players themselves have been reaping buff after buff lately.<br />
** Okay, so when the warden's current population is (pick the first that applies only):<br />
*** Under 1%, get a 10x bonus to donations.<br />
*** Under 2%, get a 8x bonus to donations.<br />
*** Under 4%, get a 7x bonus to donations.<br />
*** Under 6.6%, get an 6x bonus to donations.<br />
*** Under 10%, get a 5x bonus to donations.<br />
*** Under 12.5%, get a 3x bonus to donations.<br />
*** Under 16.6%, get a 2.25x bonus to donations.<br />
*** Under 25%, get a 1.6x bonus to donations.<br />
*** Under 33%, get a 1.25x bonus to donations.<br />
*** Under 50%, get a 1.1x bonus to donations.<br />
** In general, this will hopefully help them maintain a minimal presence in the galaxy at the very least, while still getting into more overconfident scuffles with you on purpose.<br />
*** Previously, the strategy of the warden was to wait and build up doomstacks that it would then use to crush you on planets if it could, but otherwise just lurk and avoid you. This was usually not super effective as a strategy, and when it was effective it did not feel good to be on the other end of that.<br />
*** The general new strategy of the warden is aggression and chaos, and while it will spend some time lurking and growing, a lot of that is going to be situational. It is very unlikely to build a doomstack now (unless there's another place in code where we missed it being overly cautious), and it's highly unlikely that it will come and make a planet absolutely impossible for you to take unless you were already teetering on not being able to take that planet.<br />
*** What the warden WILL do is generally hit you with small to slightly-huge forces, situationally, and it acts as a wildcard as you plot the destruction of various enemy forces. You can thin out the warden a bit, but overall they will just rebound from that, and frankly they will thin themselves out enough that, again, there's not the doomstacks there that you have to worry about in the same way.<br />
** Overall let's see how this does! If they feel too everpresent, or too weak, we can change numbers around. But more conflict, and more wildcards, are something we view as good in this sort of area.<br />
** Thanks to ArnaudB for suggesting a form of progressive income, although we twisted the concept a bit.<br />
** These numbers have been revised down after Democracy had a bunch of fights with the interesting new warden. Thanks for helping us tune those before unleashing them on everyone else!<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Adjusted the default amount of hacking points players can set to 60 to fit with the new Vanilla balance.<br />
<br />
== Beta 2.745 The Unsmothering ==<br />
(Released February 22nd, 2021)<br />
<br />
* Removed a duplicate file that caused an error on startup for Civilian Industries.<br />
<br />
* Fixed an issue introduced in the prior beta build where clicks were often registering twice in quite an annoying manner. It turns out that our new adjustments to do raycasts on FixedUpdate in order to solve a rare problem on some OSX machines needed a bit more nuance.<br />
** Thanks to Timerlane for reporting.<br />
<br />
* Fixed an issue with speed groups that could cause various inefficiencies, as well as also errors in multiplayer and now in single player, too. Not sure if this fixed the multiplayer sync problem with speed groups, but it does at least fix the single player one and the inefficiencies.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Fixed a couple of typos in the deepstrike description, and one strange wording.<br />
** Thanks to Ovalcircle for reporting in detail.<br />
<br />
* Fixed a whole bunch of errors that could happen if you were viewing a tooltip of a unit right as it died. Command stations in particular.<br />
** Thanks to samnainocard for reporting.<br />
<br />
* Fixed a typo from the prior version that was causing only reverse tractor beams to actually draw.<br />
** Thanks to Democracy for finding!<br />
<br />
=== Fallen Spire City Upgrade Mechanics ===<br />
<br />
* On the fleets sidebar popout, for any ship lines that have only a single entry, it now lists the details of the specific ship if there are any.<br />
** This is immediately useful for seeing the spire city details from hovering over the city hub entry in a given fleet, or for seeing flagship info on any fleet.<br />
<br />
* The city-specific information for the fallen spire no longer requires you to unpause the game before it can be viewed.<br />
<br />
* The tooltips for why a specific spire city can or cannot be upgraded are now way more explicit and clear on what is needed for this exact one.<br />
<br />
* Spire cities no longer upgrade in an automated fashion at all.<br />
** For one, that was often happening in a strange way that was not correct.<br />
** For two, it was denying players the ability to choose which city would upgrade when multiple were possible, which was greatly annoying to them.<br />
** Instead, now at the top of the screen you see a notification with the Informational level of priority when you can upgrade spire cities. Clicking on it will actually do the upgrade.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
=== Volume Of Ships/Turrets Reduction ===<br />
<br />
* ARS seeding adjustments:<br />
** There were 2 extra ARSes that tried to seed pretty close to human empires, in addition to 1 for each human empire, in addition to the 1 for each human empire that is VERY close. <br />
** Those extra 2 are now gone, while the other base of "2 per human empire" are still there. So in a single player game, this would move down from 5 close-ish ARSes to 2. In a 2-player game, that's down from 7 close-ish ones to 4.<br />
** There were just way too many choices for people, and an excess of options in general.<br />
<br />
* There were then a bunch more ARSes way out in the galaxy at various points, and the number of those could be tremendously huge, too. We have tentatively cut those numbers in half, given how many extra choices and how much information overload people were having.<br />
<br />
* Last change for ARS, that second one that normally would be close based on the number of humans empires is now just seeded kind of wherever.<br />
** This lets there be more ARSes out there in general in multiplayer, without the near-field being just absolutely riddled with them.<br />
<br />
* For the ODSS, it was previoulsy seeding one near each human empire.<br />
** It now seeds that first one absolutely anywhere, instead of it being close by.<br />
<br />
* For ODSS, it was previously trying to seed the other ones half in the near distance, and half anywhere.<br />
** The half that were going anywhere are now just gone, and then the half that were going in the middle distance now are within 3-11 hops, roughly.<br />
<br />
* Lastly, the TSS. There are way too many of these, too.<br />
** There is still one put very near to each human empire, as these are very important.<br />
** There is another added for each human empire as well, but rather than being within 3-6 hops, it is now within 3-99 hops. Far less congestion in the early game of good things to capture.<br />
** The rest were put out in the main galaxy, some in the vaguely middle distannce, and some kind of whever. It now only seeds half as many, and mostly does them wherever.<br />
<br />
* Overall, hopefully these changes lead to less information overload, and less overload of turrets held by players in general.<br />
<br />
* The hacking point cost of hacking an FRS has doubled.<br />
<br />
* The hacking point cost of hacking an ARS has doubled.<br />
** The hacking point rise per hack on ARSes is now 2x rather than 1.5x, and the response strength increase is now 2.8x rather than 2.2x.<br />
<br />
* The hacking point cost of hacking a TSS has doubled.<br />
** The hacking point rise per hack on TSSes is now 2x rather than 1.8x, and the response strength increase is now 2.8x rather than 1.8x.<br />
** The maximum number of hacks on a TSS is now 3 rather than 4.<br />
*** This eliminates some of the "large number of turrets left behind" that could otherwise happen when you take a planet and don't want to afford that super expensive last hack.<br />
<br />
* Additionally, the TSS now gives you 5 options rather than 6.<br />
** And the ODSS gives you a max of 4 options rather than 6.<br />
** And the ARS gives you a selection of 4 strikecraft and 1 frigate rather than 6 and 2.<br />
** Again, all of these things come down to the sheer analysis paralysis that people could face, and the ability of people to get exactly what they want at all times, and therefore the increasing homogeneity of all galaxies.<br />
<br />
* Bear in mind that we will adjust further if needed, but the goal is to give players meaningful choices that are different each game, and not SO many choices that it is either overwhelming or just a repetitive "choose your favorite thing" every game. <br />
** It's really important to remember that with ship upgrades now, getting to mark 4 is most of the battle, so having more diversity in unlocks (because you can't find exactly what you want) is a good thing and actually can lead to higher overall power versus just getting to mark 7 with a single tech class that you lean into completely. Put another way: if you have 6 ship or turret lines, you get more strength if you have 3 each in 2 groups that have been upgraded to mark 4, versus all 6 being in one group that has been upgraded to mark 7. You also get more strategic and tactical flexibility, but just the raw strength numbers are higher.<br />
<br />
** Thanks to Strategic Sage, CRCGamer, Zeus, Democracy, and Zweihander2021 for weighing in on this, among others.<br />
<br />
=== Balance Updates ===<br />
<br />
* Some updates, mostly nerfs to turrets in response to long-lasting issues for raid-melee ones, and nerf for exotic turrets after Magedrifter's recent Difficulty 10 victory.<br />
** Turrets changes due to TSS shift and balancing:<br />
*** A number of turrets have adjusted costs:<br />
*** Makeshift cost raised from 15 to 20k. Like Ruffian.<br />
*** Scrap cost raised from 10k to 15k. It overshadowed Ambush far too much.<br />
*** Ambush cost lowered from 22,5k to 20k. So its competes properly with raid turrets.<br />
*** Crusher cost lowered from 225k to 150k. Hopefully it'll make it used more.<br />
** Also:<br />
*** Makeshift lost metabolism damage since it has the drones, the description didn't even mention it anymore.<br />
*** Shredder gained Makeshift's metabolism instead, where it'll be useful and make the turret attractive. Description changed to mention this.<br />
*** Reduced Subverter zombification multiplier from 20 to 5. Its damage was buffed due to being too low, but its parasitism was far too strong even at low mark.<br />
*** Harmonic maximum damage and damage per mark reduced by 25%.<br />
*** Thanks to Magedrifter for the feedback on these last two, and ArnaudB for implementing all this.<br />
<br />
* Prevented the Scourge from getting builders over the limits. Also fixed the experience needed for the initial armory and spawners.<br />
** Thanks to ArnaudB for discovering and fixing!<br />
<br />
*Sentry Frigate reduction: with constant max caps they ate too much metal.<br />
**Reduced combat sentry frigate count on starting support fleets from 4 to 2<br />
**reduced combat sentry frigate count on seeded support fleets from 4 to 2<br />
**Reduced Sentry Frigate on command stations from 12 and 4 to 2.<br />
<br />
* Adjusted all basic guardians to start at Mark 3.<br />
** Additionally bumped a small number of basic guardians that rely on weapons one speed step.<br />
** Note that units like Carriers or Tethuida with special properties were not included in the speed step increase.<br />
** Thanks to CRCGamer for identifying how weak guardians were in the new pantheon of player ships, and addressing this.<br />
<br />
=== DLC2 Feature Items ===<br />
<br />
* Cruisers and Destroyers have been added as new SpecialEntityType entries, and rollups.<br />
** They also have their own mark level scaling styles, although right now those are identical to how Frigates scale up.<br />
** These are primarily to be used in DLC2 and DLC3, respectively.<br />
** Usage: special_type="Cruiser" where you would use special_type="Frigate" or similar in the past.<br />
<br />
* There is a new is_elite="true" that can be applied to entities directly (like we do with is_strikecraft="true").<br />
** Anything with a special_type="Cruiser" or Frigate will automatically also be marked as IsElite, so you don't need to also specify that one.<br />
** Any ship lines that are elite no longer count against fleet-wide bonus caps, and this is noted in the tooltips for the fleet-wide bonuses (along with the fact that flagships don't count).<br />
** The logic for making sure that only one elite line can be placed in a given fleet is not well-tested, but we'll get to that as we have units of that sort.<br />
<br />
* Cruiser and Destroy Construction facilities now seed exactly two per any size of galaxy, plus an additional 1 per each 2 additional multiplayer human empires beyond the first (so a 3-player and 4-player game both have 3 cruiser facilities, and a 5-person game has 4).<br />
** These only seed if there are actually any cruisers or destroyers in the mods or expansions you have installed.<br />
<br />
* Reorganized a fair bit of the order in which code is read in for ships, so that when they are being added to fleets or AI ship groups more of the info is present. This lets cruisers and destroyers actually be read in properly to their other categories.<br />
<br />
* Added a new tractor_hits_engine_gx_greater_than, tractor_hits_albedo_greater_than, tractor_hits_mass_less_than, and tractor_hits_mass_greater_than.<br />
** The text on the tooltips has also been updated to dynamically write these various things for units affected.<br />
** We probably need some checks to make sure that none of the existing logic broke, let alone any new units that use these. This was complicated, but looking at one unit seems okay so far.<br />
** Thanks to Zeus and CRC Gamer for requesting.<br />
<br />
=== Mod Updates ===<br />
<br />
* Update to More System Defenders v1.23<br />
** Artillery Cruiser renamed to Artillery Destroyer in response to some other stuff elsewhere. Power cost and tX adjusted as well.<br />
** Basic AI Guardian units added by the mod have had their base starting mark level adjusted up to 3 to match base game changes.<br />
** Fixed the station keeping frigate entries that can be acquired via ODSS to not show up in the valid build entries for battle stations and citadels.<br />
<br />
== Beta 2.744 Scourge Industries, Inc ==<br />
(Released February 20th, 2021)<br />
<br />
* Fixed a one-line typo in the prior version that was causing tractor beams to not work in general, and exception popups on startup. Essentially the tractor beams would only work on ships with no engine strength at all, because tractor_hits_engine_gx_less_than was no longer being read from xml at all.<br />
<br />
* Added wording in the tooltips for hacking ARS and TSS that says " The last sector can also be prohibitively expensive to hack, so unless you have no other options you may wish to leave it at just three." (or two in the case of ARS.<br />
** Thanks to Zweihander2021 for alerting us to folks running into confusion there on the pros and cons and expectations.<br />
<br />
* The old hacking tooltip was really not accurate anymore. It read:<br />
** Hacking: Used to exploit flaws in the AI internal network. The more hacking points you use against an AI, the stronger that AI's response to your hacks will be. Only points spent against an AI owned structure count.<br />
** New version reads:<br />
*** Hacking: general-purpose nanomachines used to improve your own units, sabotage enemies, or steal from enemies. Note that you are in a target-rich environment, and likely cannot afford even a third of the hacks available to you. Choose your hacks wisely, and capture more planets or destroy distribution nodes to get more hacking points. Also note: the more hacking points you use against an AI, the stronger that AI's response to your hacks will be. Only points spent against an AI-owned structure count.<br />
** Thanks to Zweihander2021 and ArnaudB for suggestions in this area.<br />
<br />
* Fixed a bug with the new burst fire weapons that was causing them to not reset their timings properly, and thus generally switch back and forth every shot after their initial period.<br />
<br />
* All of our camera handling logic and mouseover logic (mainly stuff that uses raycasts) is now being run on Update and on FixedUpdate. There was a rare issue where sometimes no raycasts were working for someone, and it is most likely the fact that we were only doing that in Update, when the main physics work is done in FixedUpdate instead.<br />
** We'll see if this solves the problem for the user in question, but it shouldn't cause any problems for anyone else and seems to be working fine so far.<br />
** Thanks to Badger and his play group for discovering.<br />
<br />
* You can once again swap ship lines into/out of mobile support fleets.<br />
** Thanks to tadrinth for raising the issue.<br />
<br />
* Fixed "Max Planets To Scout At Once" referring to the removed "Scout Adjacent Only" feature.<br />
** Thanks to Asirito for reporting.<br />
<br />
* The max of "Max Planets To Scout At Once" is now 10 rather than 40, to keep things from getting too crazy. The default is still 8.<br />
<br />
* The Other Defensive Schematic Server now has a unique icon separate from the Turret Schematic Server.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Put in some defensive code against tech vaults throwing errors when you mouseover them.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Fixed an issue where in recent beta builds, you could get seemingly-higher-level unclaimed golems on certain planets. They would then revert to their proper mark level of 1 when you actually capture them.<br />
** Thanks to NullZwei for reporting.<br />
<br />
=== Tractor Balance Tweaks ===<br />
<br />
* Any ship that produces tractor beams can no longer be stacked.<br />
<br />
* Any ship that has a reverse tractor beam locked onto an enemy cannot be knocked back (aka knocked off the ship it latched onto). If the thing it is targeting is knocked around, then it will be knocked with it of course.<br />
<br />
* Updated the way that tractor beams work in general (reverse or otherwise) so that if there is not a unique new ship to grab that no other tractor beams are grabbing, they will instead just grab onto one that someone else is grabbing. This is particularly relevant for reverse tractors.<br />
<br />
* Fixed a number of bugs with reverse tractor beams. The now work, and they look AWESOME.<br />
<br />
* Etherjet, Thieves, Persuaders, and similar all now have 1/4 the ship cap, cost 4x as much for players and the AI, have 4x the attack power and hull health, and have updated descriptions.<br />
** Existing savegames may still have too many of these on the side of players or the AI, which will make that local force far stronger than it should be.<br />
** Thanks to ussdefiant60 for pointing out how the fact that these will no longer stack is going to be problematic.<br />
<br />
=== Fallen Spire Balance Tweaks ===<br />
<br />
* Spire relic train reduced from 700 to 500, to give you more time to hack it.<br />
** Thanks to users on discord for suggesting.<br />
<br />
* All of the various fallen spire notifications are now part of the Fallen Spire code file, which may not sound important (and it's not, directly), but shows how DLC or mod content can be added without having to update a central non-moddable file. At any rate, moving this over shows more easily how this is done, since we don't know of any mod factions that currently use notifications on the top bar (or maybe they do and we just don't know it).<br />
** We also have started on a new way of handling spire city upgrades, using the notifications on the top bar, but it's not ready yet.<br />
<br />
=== Scourge Major Rebalance ===<br />
<br />
* Scourge major rebalance:<br />
** Scourge mess of an economy got greatly simplified. Its buildings and units have the same experience cost at all intensities. Metal production is also the same for spawners and builders at all intensities. Now only two variables balances the Scourge's economy: Experience per second and Neophyte cost.<br />
** The Scourge does get nastier in others way at higher intensity, even without considering the two variables above.<br />
** Previously Scourge got the cheapest and most strongest upgrades first and the most expensive and weakest upgrades last. This is now changed. Scourge get the most expensive and strongest upgrades first, and the cheapest and weakest upgrades last.<br />
** This means Scourge stay at low marks much longer, but once units or buildings reach higher mark, they upgrade to the next faster and faster.<br />
** However this also means that killing high-marks buildings or builders will truly hurt the Scourge, whereas it was essentially meaningless before. At start, a spawner Mark VII has 300% the production of the Mark I. This gap narrows as the Scourge gain power.<br />
** Said power increase still happens as you spend science. The Scourge get a flat bonus to metal production every 3 planets worth of science. Do this enough time and, like AI mark, the Scourge will "mark up" and all its buildings will start Mark II. This means it gets the most expensive and strongest upgrade for free. The Scourge can "mark up" again to mark III if you play a high-enough AIP game. This gives it the 2nd most expensive and 2nd strongest upgrade. Watch out.<br />
** Overall the Scourge start up more slowly but scale up more compared to before, where it quickly reached a peak and stalled.<br />
** Killing builders is much more meaningful, destroying high-marks buildings is more meaningful, it's more clear on the galaxy maps that you're having an effect on the Scourge by killing them, as newly-built buildings stay at low marks much longer.<br />
** With the new intensity: Scourge first spawner can reach Mark VII at intensity 1/3/5/7/10 in 7h40/5h10/3h50/3h10/2h30. Those values are less extreme than the previous ones and more forgive, so that Rogue-like DLC2 options limits the number of scenarios unwinnable for most players.<br />
** All those changes affect all three Scourge: Ai-Allied, Friendly one, Minor-Faction one.<br />
** Thanks to ArnaudB for doing all this!<br />
<br />
* Since the scourge now have fewer builders (which are more important), the scourge now dedicates units to escorting their builders.<br />
** Thanks to Badger for the awesome new fireteam mechanic!<br />
<br />
=== Civilian Industries Updates ===<br />
<br />
* Civilian Industries Update<br />
** Updated to support the new galaxy settings system.<br />
** Updated to support new pathfinding code.<br />
** Updated to support new hacking code.<br />
** Updated to use new tech names where applicable.<br />
** Added in some restrictions on Cargo Ship capacity.<br />
*** Scales up based on trade stations, militia leaders, and intensity.<br />
*** Previously there was no limit other than unfulfilled trade requests, meaning there could be some insane late game cargo ship counts.<br />
** Experimental unit stat update.<br />
*** All regular entities spawns for a Civilian Industry faction will have increased hull and damage stats compared to their regular variants, but no shields.<br />
*** This should hopefully help cut down on their unit counts late game, and make any damage they take mid fight more permanent, allowing them to be more easily sniped off whenever they attack something.<br />
*** Turrets and Protectors are unchanged.<br />
** These changes combined may be a notable nerf to their power level, so please let StarKelp know if you feel like they need any complimentary buffs, or if they still deserve more nerfs.<br />
<br />
== Beta 2.743 Scourge Growth Chart ==<br />
(Released February 19th, 2021)<br />
<br />
* A number of updates to the text in the lobby and in the intel sidebar to make the advice on how to handle the Scourge more nuanced, particularly as it relates to higher intensity and/or AI difficulty combinations.<br />
** Thanks to ArnaudB for providing the insights and updates!<br />
<br />
* Fixed the lobby still saying "Defensive Schematic Servers To Seed" rather than the TSS and ODSS variants.<br />
** Thanks to ArnaudB for noticing!<br />
<br />
* Added lobby intensity description for Fallen Spire.<br />
** Thanks to ArnaudB for adding!<br />
<br />
* Improved the efficiency of some of the tractor beam and tachyon beam code to a minor degree.<br />
** On planets where no player is looking, this effect is particularly pronounced now. So it might help some minor factions more than anything else.<br />
<br />
* Fixed a bug where if you had tractor beams disabled visually, some of the functionality of them would actually be handled incorrectly.<br />
<br />
* Updated the cloaked variant of the Mugger Frigate to follow the same dual-tech rules as its base version.<br />
** Thanks to CRCGamer for fixing.<br />
<br />
* Fixed a bug in the drone-line removal checks that would remove a drone line and destroy all its members even if the centerpiece had a drone gun that would produce this kind.<br />
** This most notably lead to the Extended Ship Variants' Rescue Factory not working.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Starting Fleets received several buffs and corrections:<br />
** Classic trade the Fusion Bomber for the Heavy version, with a lightly oversized cap.<br />
** Doorkicker had its Siege Frigate cap raised from 4 to 6.<br />
** Consumer had its Fusion bomber cap raised from 30 to 40.<br />
** Sniper had its Tackle Drone Frigate cap raised from 4 to 6.<br />
** Undying had its Warbird Hydra Frigate cap lowered from 6 to 5.<br />
** Omniscient had its Apparition Frigate cap raised from 6 to 9.<br />
** Broadside had its Siege Frigate cap raised from 4 to 6.<br />
** Thanks to ArnaudB for finding and fixing.<br />
<br />
* Other balance tweaks:<br />
** Heavy bomber default cap raised from 20 to 35<br />
** Parasitic bomber cap raised from 20 to 25<br />
** Thanks to ArnaudB for tuning.<br />
<br />
* Scourge has been rebalanced to grow in strength a bit less exponentially than it used to, so that it still gets strong but is not an overwhelming death squad in the late game.<br />
** Made the Scourge builder and its cloaked version much tougher, as well.<br />
** Thanks to ArnaudB for the analysis and changes.<br />
<br />
=== DLC2 Features ===<br />
<br />
* Added is_reverse_tractor_beam="true" as two options on tractor beam systems.<br />
** This is was quite an interesting coding challenge, but essentially what it does is attach one of more ships to a target, and have them get pulled along with it, rather than them holding it in place. They do prevent if from leaving the current planet, even though they drag it around, though.<br />
** This needs a LOT more testing.<br />
** Thanks to zeus for requesting for some DLC2 content.<br />
<br />
* If a ship is being tractored, it can no longer go through a wormhole unless the ship that is tractoring it drags it through.<br />
** Essentially if you have tractored an enemy ship and it is sitting on a wormhole, it can't escape your tractor by going through.<br />
** Or if you have reverse-tractored an enemy, it can't drag your attached ship through a wormhole.<br />
** But if an enemy has tractored you, and it wants to drag you off to another planet, that still works A-OK.<br />
<br />
* Added use_alternate_rate_of_fire_after_x_shots, alternate_rate_of_fire, and use_alternate_rate_of_fire_for_x_shots_before_reverting.<br />
** If the alternate_rate_of_fire is specified, then the other two must be also specified to be at least 1 or more.<br />
** This allows for a new BURST FIRE mode.<br />
** More testing needed.<br />
** Thanks to zeus for requesting related to DLC2 ships.<br />
<br />
=== Mod Updates ===<br />
<br />
* Extended Ship Variants:<br />
** Increased the strength multiplier (not the actual combat strength) of the Sharpener Frigate from 1.5 to 2.5 and the Wedge Frigate from 1.5 to 2, as they had a lower displayed strength compared to the Shredder Frigate.<br />
*** Thanks to tadrinth for reporting on Discord.<br />
<br />
== Beta 2.742 Hacking Balance ==<br />
(Released February 17th, 2021)<br />
<br />
* Add an xml option to have a weapons systems beam rotate over time, 'seconds_for_beam_to_rotate_fully'; if set to 360 then in 360 seconds the beam will sweep a full circle.<br />
<br />
* Fix a bug where the Dyson Bastion was using the same model as the Dyson Bulwark.<br />
<br />
* Put in yet more defensive code against a persistent cross-threading issue in the fleet factories-supporting code.<br />
** Thanks to Lictuel and Magedrifter for the most recent reports.<br />
<br />
* Fixed a rare error that could happen in CheckForOwnershipChange() if the game was in just the wrong state when you exited to the main menu.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Fixed a bug where mobile support fleets were able to swap ship lines between fleets. Not sure how recent that is.<br />
** Also fixed a bug where the spire city lines could be swapped between fleets. Again not sure how recent that is.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* When planets have mark levels swapped around because of that new randomization in mapgen, it now properly actually swaps the mark levels of all the ships and structures on the affected planets! This won't change existing savegames, but will keep it from happening in new ones.<br />
** Thanks to Democracy for reporting.<br />
<br />
=== Revisions To Recent Beta Features ===<br />
<br />
* Distribution nodes now cost 3 AIP to shoot rather than 1, and provide 35 HaP instead of 80. They now give 1200 science rather than 1000.<br />
** Thanks to ArnaudB for reporting how much they were skewing things.<br />
<br />
* Superterminals are the one kind of hack that actually still destroys its target even when you cancel a hack. A superterminal hack is by definition a "hack until you can't take it anymore" sort of endeavor, so this not being there was quite unbalanced.<br />
** Thanks to Asirito and ArnaudB for reporting.<br />
<br />
* hacking_does_not_increase_difficulty_of_future_hacks_against_this_faction has been removed from hacks, and replaced with hacking_points_against_this_faction_percentage_recorded_modifer<br />
** The ARS, TSS, and ODSS all now have a multiplier of 0.33 in this field.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
* Fixed a typo in the prior build that was listing the ODSS as having four internal sectors and being hackable four times when it was really two.<br />
** Thanks to CRCGamer and ArnaudB for reporting.<br />
<br />
* hacking_points_against_this_faction_percentage_recorded_modifer can actually be used to make hacks MORE noticed by the faction you are targeting, incidentally.<br />
** At this point, because of its extreme power and comparably low cost in HaP, we're having the superterminal hack actually now record twice the normal response rate.<br />
<br />
* Direct battelstation science upgrades:<br />
** Were: 250,800,1800,2800,3600,5500<br />
** Now: 450,1400,2800,3800,4600,6500<br />
** Thanks to ArnaudB reluctantly suggesting this nerf to a thing he loves.<br />
<br />
* Direct citadel science upgrades:<br />
** Were: 400,1100,2200,3300,4400,6500<br />
** Now: 500,1500,3000,4000,5000,7000<br />
** This value is now the same as a command station, for context.<br />
<br />
* The "Neutral Planet Science Extraction" hack makes a return, as many people missed it. However, the balance is a bit different:<br />
** Previously, it gave you a discount in hacking point cost if you had already partly extracted the science from that world. It no longer does.<br />
** Previously, in multi-empire multiplayer games, it made you spend more hacking points for each empire beyond the first. It no longer does.<br />
** It used to take only 10 seconds (although more on higher difficulties), but now takes 60 seconds instead, making it one of the longer hacks around.<br />
** The response strength on completion is now 3x higher than before.<br />
** It now costs 30 HaP rather than 10 HaP.<br />
** Thanks to ArnaudB and others for suggesting.<br />
<br />
* For hacks that require a local hacker, it now says what kinds they can be.<br />
** Hacks in general that require a local hacker can only be done by an officer or a transport, and the tooltip now says that.<br />
** We now have hacker_can_be_battlestation, hacker_can_be_support_fleet, and hacker_can_be_lone_wolf for hacks to make it so that we can use those if they are around.<br />
<br />
* With hacks in general, it now tries to find them in the following order (which decreases the chance of you getting the annoying "you have multiple hackers and we can't tell who to use" message):<br />
** If it must be a battlestation, then first check selected citadels, then all citadels, then selected battlestations, then all battlestations.<br />
** If it can be something else:<br />
*** If lone wolves are allowed, check them first (first selected, then any in general).<br />
*** Then officers; then strike fleets.<br />
*** Then if support fleets are allowed, check them.<br />
*** Then if battlestations are allowed, check citadels, then battlestations/<br />
** For this whole process, it checks in this priority order JUST for selected ships, with no errors, and if you have one selected that's allowed, it will use that. Then it checks by group in selected, then all fashion.<br />
<br />
* The following hacks can now be done by support fleets:<br />
** Weaken Turrets or Guard Posts<br />
** Hack GCA (if in old save)<br />
** Extract science from neutral world<br />
** TSS or ODSS hack for all fleets<br />
** Search for Spire Relic, Analyze Spire Debris, and Steal Macrophage Debris (DLC1)<br />
<br />
* The following hacks can now be done by battlestations:<br />
** Weaken Turrets or Guard Posts<br />
** Hack GCA (if in old save)<br />
** Extract science from neutral world<br />
** TSS or ODSS hack for all fleets<br />
** Search for Spire Relic, Analyze Spire Debris, and Steal Macrophage Debris (DLC1)<br />
<br />
* The following hacks can now be done by lone wolf fleets:<br />
** Spire Archive Extraction<br />
** Weaken Turrets or Guard Posts<br />
** Hack GCA (if in old save)<br />
** Extract science from neutral world<br />
** Subvert Super Terminal<br />
** TSS or ODSS hack for all fleets<br />
** Sabotage An Enemy<br />
** Reprogram An Enemy<br />
** Access Outguard Beacon and all the faction beacons<br />
** Provoke Vengeance Strike and Render Vengeance Generator Vulnerable<br />
** Dyson hacking (other than granting of ships)<br />
** Search for Spire Relic, Analyze Spire Debris, and Steal Macrophage Debris (DLC1)<br />
** Pretty much all the DLC2 hacks other than those that grant ship lines.<br />
<br />
* Updated some code to allow support for the spirecraft fleet leaders from the fallen spire to act as hackers in general. This has never been possible before now, with any hack.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Updated the ExtendedHackingImplementation:<br />
*** There no longer is a specific type for "this is done by battlestations or citadels". Instead this has been extended to literally EVERYTHING.<br />
*** There now are specific filters for what unit type can hack: Transports, Arks, Fleet Golems (Golems that can have fleet ships), Lone Wolves, Mobile Support Factories, Battlestations, Citadels and others (in case there ever is).<br />
**** These others can be defined in a rollup. It's now possible to make a hack that only a Battlestation, VWing, Metal Harvester, Spire Dreadnought or anything else can execute.<br />
*** In case the hack requires a local hacker (even an abnormal one) this list of potential hacker types will be displayed in the tooltip if none are present on the planet.<br />
*** This required a new approach to the duplicate hacking notifier, which now uses a ConcurrentBag to store hackers and uses them for making the notifiers.<br />
**** This should remove any chance of cross-threading exceptions.<br />
*** Hacks of this kind still need to be set up in XML as requiring no planetary hacker, thus the hacker initially will be Home Command. The special hack will simply transfer the hack onto the actual abnormal hacker at the first second.<br />
**** It requires them to be non-crippled and non-destroyed, have no active hacks and prefers selected over all, though will use the closest hacker if more are present.<br />
*** With this capability a lot of future hack ideas become possible...<br />
** Introduced new functions for faction filtering and caching:<br />
*** Every SmartFactionImplementationBase now has 8 faction lists that are cached, and refreshed at most every game second, otherwise recycled, and if never used stay dormant.<br />
**** These are AllHostileToMe, AllIAmHostileTo, AllFriendlyToMe, AllIAmFriendlyTo, AllLivingAIsHostileToMe, AllLivingPlayersHostileToMe, AllLivingAIsFriendlyToMe, AllLivingPlayersFriendlyToMe. Two more, AllLivingAIs and AllLivingPlayers are stored inside the GlobalImportantRollupHolder as these are universal for all factions.<br />
***** These help to reduce CPU cost through constant recalculations, and even more in GC Churn. The overall effect will most likely be minor, but it's easy to do and costs very little memory, and most importantly: Makes the lists future-proof.<br />
***** They support random draws, getting the first or null, average base marks, average power level and combined power level calculations, and potentially more in the future as needed.<br />
***** They also replace the GetFirstLivingAIOrNull and similar functions, which are now available in the form of a very complex GetFactionListOrEmpty and similar functions within the AMU Core.<br />
***** The filters include searching for living, dead or both, in combination with searching only for a specific type or all but a specific type, and all with a specific relation to a faction (or vice-versa), or all but this.<br />
** Updated the included source code.<br />
* Kaizers Marauders:<br />
** Implemented all the above changes. Hacks should now work again, and better than ever.<br />
** Fixed a bug in displaying capturable ship or turret lines that could potentially occur when being a spectator in multiplayer.<br />
** Fixed a bug that potentially allowed for more Marauder Capital hacks than should be allowed.<br />
<br />
== Beta 2.741 Refining The Big One ==<br />
(Released February 16th, 2021)<br />
<br />
* '''This version breaks any savegames from the prior version, which is not something we usually do. However, the prior savegame balance was off enough that we don't want to test anymore with games started in that version (that will just be confusing data), and we are on the beta branch after all.'''<br />
<br />
* Added Denial Fleet to the starting options, bringing the suppression frigate to the roster. As a visually impressive frigate, it was sorely lacking.<br />
** Thanks to ArnaudB for adding!<br />
<br />
* There is a new Minefields category on the build sidebar, and all of the main-game mines are now in that. Any mod minefields will want to set build_sidebar_categories_i_am_part_of="Minefields".<br />
<br />
* All of the remaining "Grant Ship Line" hacks have been renamed to be more thematic and clear, and the tutorial has also been updated to use the correct hack name.<br />
<br />
* The annoying "Civilian" voice group is no longer used for any of the civilian-style structures. Instead those are now just silent.<br />
** This keeps spies, engineers, combat factories, battlestations, etc, from all being incredibly annoying.<br />
** This was meant to be a bit of an easter egg feature on a few civilian craft, but right now there are none using it anymore.<br />
** Thanks to NullZwei for reminding us.<br />
<br />
* Decoy drones now use the annoyed civilian voice line. Other ships may in the future, but for now this is the only one. As has been pointed out, he's so annoying that the AI shoots him first.<br />
** Thanks to Puffin and others for suggesting.<br />
<br />
* When there are members of a "relentless AI Wave" subfaction, if they are on a planet that is allied to them, and there are at least 3 strength of enemies to them at that planet, then they now fight at that planet before running off to attack somewhere else.<br />
** This applies for things like counterattacks, and hacks against the AI, etc. They now directly try to engage your forces at the planet where you are hacking them, unless your forces are pathetically weak. Previously, the challenge was fighting them before they could all run away to go destroy your home planet.<br />
** Thanks to AxiomExotic for the idea.<br />
<br />
=== Revisions To Prior Beta Version ===<br />
<br />
* Apparently the Warbird changes went missing amidst everyone's commits last patch.<br />
** So went with a somewhat different approach this time that is fairly similar overall but is somewhat less harsh overall and hits the truly OP parts more accurately.<br />
** Still gets a 15% hull and shield cut for base hull and all following variants.<br />
** Decloaks against the AI in 1 shots instead of 5.<br />
** Hydra heads of the Warbird have their health and shots cut in half since each is "half" a Warbird.<br />
** Undid the cap nerf to the Cloaked starting fleet since this time around the cap nerfs are only to the Warbird Hydra which is absolutely deserving of the nerf.<br />
** Additionally went over and applied the same balance logic to the Ambush Carrier.<br />
** Thanks to CRCGamer for implementing!<br />
<br />
* Added a new setting for hacks: hacking_does_not_increase_difficulty_of_future_hacks_against_this_faction<br />
** This is now set to true for the ARS and DSS (but not the FRS or anything else).<br />
** When true, the overall response of a faction to being hacked does not increase from the hack in question.<br />
** Thanks to Democracy for reporting how crazy this made the late-game hacks.<br />
<br />
* The DSS has been split into two structures: the Turret Schematic Server and the Other Defensive Schematic Server.<br />
** The hacking costs of both are higher than what the DSS was in the prior build, as things were coming too cheaply to players, making the game pretty trivial.<br />
** However, the TSS is substantially more expensive than the ODSS, which makes it so that the other items are actually viable to get cost-wise.<br />
** The ODSS can also only be hacked twice.<br />
** Thanks to a variety of players for feedback on this topic.<br />
<br />
* Fixed a general bug in the game where the "did campaign start on at least this version" code was not working at all.<br />
** This made it so that things like showing the GCA basic tip was happening instead of showing the DSS/TSS tip.<br />
<br />
* The defensive_structure_cap_multiplier was set rather high, it turns out. So we're adjusting these across the board:<br />
** For those that were 0.33, they are now 0.25. (That's basically just the economic command station).<br />
** For those that were 0.66, they are now 0.48. (That's just the logi command station).<br />
** 0.7 to 0.5 (shieldwall battlestation)<br />
** 1 to 0.7 (most battlestations)<br />
** 2 to 1.33 (most citadels and mil stations)<br />
** Thanks to a variety of players for griping about how plentiful turrets were, but special thanks to Ozone Grif. This was partly due to turrets being too cheap in HaP in general, and partly due to them being too prolific in the first place.<br />
<br />
* The ship cap of all minefields has been doubled compared to what it was before (though, bear in mind, the other multipliers that are lower are still applied, so it comes out somewhere in the middle). We may need some further tuning to this.<br />
** Thanks to zeus and ArnaudB in particular on this.<br />
<br />
* If players intentionally pick the same two starting battlestations, the game now makes one of them something else at random.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Put in a fix that should cause planets that are "influenced" by a hostile faction (like those taken over by marauders) to still count as being hostile to you for purpose of hack costs.<br />
** Thanks to Eonfighter for reporting.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a cross-threading exception in removing invalid orders for ships.<br />
** Thanks to NullZwei for reporting.<br />
<br />
* When warden fleet members can't find a way to regroup and thus join the hunter fleet, it no longer logs messages to your debug log. These were silent, but cluttered things up and were there just as a preventative/testing measure.<br />
<br />
* Turned off some extra debugging that was left on when you were changing galaxy options during gameplay.<br />
<br />
* Put in some extra protections against null entries in GetFromPoolOrCreate() for entity orders. This is again a cross-threading thing.<br />
** Thanks to NullZwei for reporting.<br />
<br />
* A variety of our low-level pools now have prevention code in place for putting null data back into them. This could happen in certain cross-threading situations, and would yield random errors and memory usage problems.<br />
** Thanks to NullZwei for reporting.<br />
<br />
* Our internal TimeBasedPool class now uses ConcurrentBag<> internally, instead of Queue<>.<br />
** This allows for more flexibility with cross-threading, including hopefully fewer/no errors as well as more speed ideally.<br />
** This is heavily used by GameCommands and EntityOrders, so having this perform really well on a variety of threads at once is a pretty big deal. It has been doing a pretty solid job for a few years now, but some of the newer hex-core-and-better AMD CPUs in particular are reliably causing many more cross-threading issues these days.<br />
*** This is in no way a sleight against those AMD CPUs, incidentally; most likely it is happening because of their extra efficiency and speed allowing for subtle timing issues that were always there to come to light now that a new performance threshold has been hit. So we're just adapting to that.<br />
<br />
* Our internal LoosePool class now uses ConcurrentBag<> internally, instead of List<>.<br />
** This has all the same benefits of what we just di to TimeBasedPool, although this is probably going to affect less since the LoosePool is not used across threads nearly so much. But better safe than sorry with it.<br />
<br />
* Our internal ExternalizedPool class now uses ConcurrentBag<> internally, instead of Queue<>.<br />
** This has all the same benefits of what we just di to TimeBasedPool, although this is probably going to affect less since the LoosePool is not used across threads nearly so much. But better safe than sorry with it.<br />
<br />
* Fixed the expected release date on the DLC2 expansion from saying January to saying March.<br />
** Thanks to Mac for reporting.<br />
<br />
* Fixed some rare but possible bugs that could happen in ClearForReturningToPool().<br />
** Thanks to Kendrickorium for reporting.<br />
<br />
* Fixed a bug where any hacks that were supposed to complete more quickly on non-hostile planets would say they would, but then would count into the negative seconds remaining and take the normal amount of time.<br />
** Thanks to Ryulong and ArnaudB for reporting.<br />
<br />
=== Mod Updates ===<br />
<br />
* Updated Histiocytes to support the new galaxy settings options.<br />
<br />
* Adjusted the FRS version of the Artillery Cruiser in my More System Defenders mod to start at a higher mark level like the rest of the FRS options.<br />
<br />
* Updated the Supercharged Raiders mod by ArnaudB to work with the new cap limits.<br />
<br />
* Slotted the Laser Mine into the new proper sidebar build category. (More System Defenders)<br />
<br />
== Beta 2.740 The Big One ==<br />
(Released February 15th, 2021)<br />
<br />
=== New Hack! Transforming Fleet Leaders ===<br />
<br />
* Added a new FleetLeaderType xml class, which lets us define certain types of fleet leaders which can transform between one another.<br />
** Not all fleet leader types need to be defined or use this at all. For instance, at the moment golems and arks are completely absent from this because they stay what they are.<br />
** But for transpors, battlestations, and citadels we want to be able to have them convert from one to another and back and forth with a new hack.<br />
** With this in mind, anything that is going to be able to use that sort of hack needs to have a fleet_leader_type="Transport" (for example, with transports).<br />
*** Anything that has that type on it can be transformed AWAY to something else.<br />
**** So if you are a modder and you designed a citadel that must stay what it is, don't assign this fleet_leader_type="Citadel" to it or else it can be changed into another type.<br />
** Anything that has this type and that is a target that we can transform TO needs to have a hacking_cost_for_other_fleet_leaders_of_same_type_to_become_me set to greater than zero.<br />
*** For the things that we want to be able to transform FROM, but not TO (like there are actually seven or eight variants of basic transport), set this to 0. Out of the basic transports with identical stats, we only selected one to have a value greater than zero, so that you only see one entry for that type.<br />
*** For all the other types that are unique targets, being able to swap over to those types can have a cost that is built in based on however unique and valuable that specific type is.<br />
** Note also that the costs are relative within a category. The citadels are relatively cheap to change types on (for the moment) because they are already more rare and you already paid a lot for them. But transports are in your face from the start of the game, and upgrading one can be a big deal.<br />
** Ah! This is also really useful for the support factories. So those now have this ability, as well.<br />
** And, surprisingly, the Spire Lost Frigate is also a great candidate for this. Did you know there are actually three different forms of it?<br />
*** Now you can swap between the three forms for a really inexpensive amount of hacking points, which makes them all a lot more versatile!<br />
<br />
* Added a new button in the fleet management window, under where you would give science upgrades to a fleet. <br />
** This button only applies for fleets with fleet leaders that can be transformed, and it shows information about the range of hacking point costs it might cost to do that.<br />
** Once it's clicked, you can see details about the types that this ship would become, and actually become that type if the ship isn't crippled.<br />
** Thanks to a variety of folks for suggesting this in many forms over the years! Fluffiest, Ecthelon, CRCGamer, and definitely some others.<br />
<br />
* If a fleet leader transforms types, and that fleet leader's fleet has been upgraded, AND the amount that it costs to upgrade the old type of the fleet leader is different from the new type of the fleet leader (whew), then it will revert the upgrades on that fleet to 0 and refund you the science.<br />
** This prevents you from having a basic transport upgraded more cheaply, and then swapping it to the more-expensive-to-upgrade Cloaked Transport type and getting the higher mark level for free.<br />
** Thanks to NR SirLimbo for warning of this cheese.<br />
<br />
=== ARS Expansion And Overhaul ===<br />
<br />
* The reroll hack for ARSes has been removed. That sort of blind gambling for something good is something we want to avoid.<br />
<br />
* The base hacking cost of ARSes has moved from 7 to 4 (double on hostile worlds).<br />
** A single ARS can be hacked 3 times, now, rather than just once. The price increases by 1.5x each time that specific ARS is hacked.<br />
** At each stage, an ARS now gives 4 strikecraft and 2 frigate options rather than 4 strikecraft and 1 frigate option, and does a complete reroll of its contents after you make a choice.<br />
** This gives you more choices, but not EVERY choice, and once you have chosen the thing that best fits with your empire, you get a new slate of options.<br />
<br />
* Added a new response_strength_multiplier_per_time_hacked_same_target. We are now using this on the ARS to make it so that, as the cost increases for each of the 3 attacks you make on a single target, so too does the response in terms of enemies coming out of the structure.<br />
<br />
* Actually, the hacking intensity increase of the ARS is now 2.2x rather than 1.5x, which means that on the third time hacking a single ARS the enemy forces are truly terrifying. You definitely have to want it, when it comes to that third hack. It's possible that you will fail the hack because your hacker gets crippled, and you'll lose that last chance to get a new ship line. But it doesn't charge you hacking points in that case, it just destroys the ARS, so it's a disappointment but not save-scum worthy.<br />
<br />
=== Intra-Galactic Coordinators Removed ===<br />
<br />
* Intra-Galactic Coordinators have been removed from the game (though they remain in existing savegames).<br />
** These were funky and a bit fiddly, and there are now better ways of accomplishing more or less the same thing.<br />
** These were either going to be wildly unbalanced (turrets and frigates), or extremely redundant and not worth it (strikecraft).<br />
** It's nice to have a bit less chaff out there to sort through, particularly one with a confusing name, as your deciding how to approach your empire.<br />
<br />
=== Global Command Augmenter Out, Defense Schematic Server In ===<br />
<br />
* The Global Command Augmenter (GCA) has been sunsetted for new games. It's still in existing campaigns, but new campaigns no longer seed them and likely never will again. We have a better replacement!<br />
<br />
* The new Defense Schematic Server (DSS) has been added for the game, and is what seeds in place of GCAs in all new campaigns. It has the same icon and graphics, and uses basically the same seeding rules. However, these are owned by the AI (like an ARS) rather than being un-claimed neutral entities. These cannot be claimed, unlike a GCA.<br />
** The DSS would like to give you 6 turret lines to choose from when you hack it, and 6 "other defenses" lines. However, it will not give you more than 40% of the total options available to you based on the mods and DLC you have installed in the game for the turret category, and not more than 25% of those available in the other defenses category.<br />
** Unlike tha GCA, it also tries very hard to give you individual basic lines of turrets and defenses, rather than so commonly doubling up a line and giving you a 2x or 3x cap for a line. However, if there are very few turrets or defense types in your game, there is a chance that you might get lucky and get only a few options including some doubled ones.<br />
** Also unlike the GCA, the hacks from the GCA are NOT shared among all of the empires in multiplayer. The new lines are locked to the empire that hacked for them, and can never be traded or refunded or altered in much of any way.<br />
*** There are, however, far more options for how to granularly hack for each line of defensive structures, and they provide an even broader amount of power per empire, so there's still plenty to go around.<br />
<br />
* The "Global Command Augmentation Mulitplier" has been renamed to "Defensive Structure Cap Mulitplier."<br />
** The old commandstation_addedtocommandstation_multiplier xml tag has been removed, and now is called defensive_structure_cap_multiplier.<br />
*** Note! If you are a modder and you are creating new battlestations or citadels, normally this defaults to 1. If you want your structure to grant more or fewer turrets/etc, then you can set this to something like 0.5 to make it give half as much or 1.75 to give 175% as many, etc. You can ALSO set it to zero or less, and your battelstation or citadel will get no bonuses whatsoever.<br />
** Refresher on amounts for various structures:<br />
*** 2x on home command station, that seems fine.<br />
*** 0.5x on economic command station, that still seems high. Let's take that down to 0.33x.<br />
*** 1x on logistical command station, which again seems high. Given the insane usefulness of logi stations in general, let's set this at 0.66 instead.<br />
*** 2x on military command station, that seems fine.<br />
*** All of the battlestations are defaulting to 1x, and that's a good start.<br />
**** For the shield wall battlestation, let's have 0.75 to balance that one out a bit.<br />
*** For all the citadels, let's set this to 2x for now. Maybe some more nuance with some of them will be good at some point.<br />
** Thanks to tadrinth for the idea of applying this to things other than just command stations.<br />
<br />
* There is a second version of the DSS hack that is slightly cheaper in hacking points and which gives a triple-powerful amount of the chosen defensive line to just the hacker (which must be battlestation or citadel).<br />
** This is probably usually the inferior option to pick... except wow, this can be pretty crazy with citadels.<br />
** Thanks to tadrinth for the idea.<br />
<br />
* Added is_blocked_from_dss_grant_to_battelstations_and_citadels and is_blocked_from_dss_grant_to_commandstations, which, when set to true on a ship/structure type, will make it so that a DSS grant will not include them in the respective group. That way the DSS can provide some things for command stations only, or for battlestations/citadels only.<br />
** This will hopefully be used very sparingly, but it's handy in general as an option for certain high-value things.<br />
** When this is in use, it should show a message on the ship line that says where it won't be applied, right up at the top. This is not well tested yet.<br />
** Thanks to zeus for suggesting.<br />
<br />
==== Turret And Defenses ====<br />
<br />
* The turret counts on the starting battlestations are now a middle-ground between what they were previously and what they were last build.<br />
** Thanks to various players for giving input and suggestions on this, and to ArnaudB for making the changes.<br />
<br />
* The starting defensive fleets from the More Starting Options mod have been updated to also follow the new guidelines.<br />
** Thanks to CRCGamer for implementing that.<br />
<br />
==== Battlestations and Citadels ====<br />
<br />
* The speed of citadels has been increased from 300 to 600.<br />
** The "Speedy Citadels" save-safe mod has now been removed, since this is what it did.<br />
** Thanks to ArnaudB in particular, but also others, for suggesting.<br />
<br />
* The More Starting Options mod has been integrated into the main game itself (mostly as part of DLC1, but it varies).<br />
** Huge thanks to ArnaudB for creating this mod, and then also for allowing us to integrate this for everyone.<br />
<br />
* Added a new XmlModNamesToIgnoreNow table, which lets us basically ignore certain mods that used to exist but now are part of the game (or for other reasons).<br />
** This applies now to the "More Starting Options" mod, so that any games started with that mod on will still work, since it was not a save-safe mod (but still has content that exists in the game itself, so is safe-safe in that NEW way).<br />
<br />
* Players now get two battlestations at the start of the game, rather than just one!<br />
** The battlestations now default to Random, but the combat and support fleets continue to default to some basic easy types.<br />
** When at least one of your battlestations is set to random, then it ensures that the other one will not be set to a duplicate type of it.<br />
<br />
* Citadels now all cost 60 AIP to claim. These things are MAJOR power boosts for you, and being able to potentially even stack them on a planet is incredibly potent.<br />
** The cost of these should all always be the same to claim, since once you have one you can switch it to any other type.<br />
** 60 AIP may be judged to be too expensive in the end, but this is something we want to have as a rather extreme defensive option that gives you such high defensive bonuses that the AI just has to take notice. These things are in mamy ways more powerful than any Golem now.<br />
** Note that when viewing a citadel for capture, it will include all of the turrets and other defenses that are relevant based on your past DSS hacks.<br />
*** Worth noting that in multiplayer, this will look different for each player, which is fine. Gifting a citadel between player empires in multiplayer will also change the loadouts based on that.<br />
<br />
* The game no longer seeds any battlestations at all for you to capture. You start with two now right off the bat, and because of the new DSS mechanics they are each far more powerful.<br />
** If there's a need for more of the sort of thing that battlestations provide, then you should look for a citadel to fill that role.<br />
<br />
=== Other Hacking Updates ===<br />
<br />
* The way that rerolls work is now wholly deterministic, meaning that you can't keep reloading and trying again in order to get a new value.<br />
<br />
* When viewing the ARS tooltip for the ship, it now shows you how many hacks you have done on it out of how many times you can do it.<br />
** A bunch of other sidebar bits in the hacking menu also now show this information clearly and in the proper places.<br />
<br />
* In the event that you cancel a hack, it no longer destroys the target (or counts as a full hack attempt).<br />
** So for instance, if you decide to hack an ARS for one ship, and then change your mind, you can cancel the hack and just try again from the same list.<br />
<br />
* In the event that you fail a hack, it does the "counts as a hack attempt" full logic. So if you're about to fail, canceling will save you from that.<br />
<br />
* A new feature under the hood lets us require that a hacker be a battelstation (that also includes citadels).<br />
<br />
* Another new feature under the hood allows us to count the "number of completed hacks" against a target as being the number from any type of hack, not just a single hack type.<br />
** This is useful when there are multiple hacks that do a similar thing, and you want either option to count against a total that both have.<br />
<br />
* A bunch of other little hacking sub-features that you can see on the new hacks, frankly.<br />
<br />
==== Hacking Time/Intensity ====<br />
<br />
* The multiplier_to_global_hacking_times has been removed from AI difficulty.<br />
** This made hacks take longer on higher difficulties, giving the AI response more time to hit you.<br />
** This actually is interesting as well because it did not affect something like the superterminal at all, since that's an at-will hack that lasts as long as you want.<br />
** Overall this could lead to tedium with hacks on high difficulties, and the sole purpose was for extra difficulty.<br />
** Previously, for difficulties 5 and down it took 1x the normal amount of time, at difficulty 7 it was 1.5x, 8 1.6x, and 10 was 2x.<br />
<br />
* In place of that mechanic, we now have multiplier_to_global_hacking_event_intervals on the AI difficulty.<br />
** The overall length of time it takes to do a hack (say, 30 seconds) now stays the same. But the interval on which "things happen to you" is now multiplied by this number.<br />
** So, instead of having a longer, more drawn-out period on a high difficulty to get attacked by more enemies in response to your hack, you just get a (potentially much) more vigorous reponse in the original timespan.<br />
** We are actually making difficulties 1-4 easier by making difficulty 1 have an interval multiplier of 2, and then on down to a mult of 1 for diff 5.<br />
*** Diff 6 is 0.8 now, diff 7 is 0.7, diff 8 is 0.6, diff 9 is 0.5, and diff 10 is 0.4. That's going to be nightmarishly hard, but hopefully survivable. We can tune as needed, but at any rate folks shouldn't be bored waiting for a hack to finish!<br />
** Thanks to ArnaudB for suggesting that the timeframes not be increased on hacks on higher difficulties, since that does get boring.<br />
<br />
* Note to modders: if you were previously coding some hacks and directly used PrimaryHackResponseInterval, SecondaryHackResponseInterval, TertiaryHackResponseInterval, or BaseHackDuration, you now have to use the getter methods instead, which handle all this logic for you.<br />
<br />
* If you have gone to the trouble of capturing an AI world (or at least it no longer belongs to an enemy), then some hacks will also go faster now on that world, which also means that the overall AI response from them are substantially weaker.<br />
** The ARS and FRS hacks are the first to have this, and just like they cost half as much HaP to do on non-hostile worlds, they now also go twice as fast. Getting a third hack out of an ARS is a lot easier on a world not controlled by the enemy, since they intensity of the ships coming out of the ARS won't have nearly as much time to ramp up.<br />
<br />
=== Basic Transports ===<br />
<br />
* The Agile Transport now has 85% of the health of a normal transport, rather than 50% of the health of a normal transport.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* The ability to build custom fleets from the build sidebar, which was something very few people did (and it was generally for purposes of cheese), has been removed.<br />
<br />
* For regular transports (the most boring kind), if they sit around on a planet for 5 minutes without being crippled or leaving, they will start giving a 10% bonus (that stacks!) to any player-based metal and energy production happening at that planet.<br />
** For the awesome cloaked transports, they do not get this bonus at all.<br />
** For the agile transports, they provide only a 4% bonus.<br />
** Why have this? Well, sometimes you have extra transports sitting around, based on how you've organized your fleet, and it seems like they ought to be good for something. Rather than being an annoyance you want to delete, what if they were instead a commodity well worth protecting? So here we are.<br />
** Note that none of the officer fleets, or the combat factories or whatever else, provide this sort of bonus. They already have things to do. But this is now a mechanic that can be used in new ways in the future if we want to.<br />
** Thanks to Badger for inspiring this idea.<br />
<br />
* New ship: High Capacity Transport Flagship<br />
** Upgraded version of the basic transport which can double the ship cap of up to three strikecraft lines contained within it.<br />
** This cannot be found anywhere by chance, but for 60 HaP you can switch one of your transports over to this type at any point, even right at the start of the game.<br />
** Why take time out to add this in right at this particular juncture? Well, the FRS mechanics already encourage having some smaller fleets, but the bonuses from idle basic transports encourage giant blobs. This is another argument in favor of small fleets.<br />
*** Honestly we're fine with however people want to play, so long as there isn't one overwhelmingly obvious "best" way to play. At the moment, the best choice is probably an interesting mix of large and small fleets for different purposes.<br />
** Thanks to zeus for suggesting this new ability and new transport type!<br />
<br />
=== UI And QoL Improvements ===<br />
<br />
* Added a new Sidebar subsection to the Display section of settings.<br />
<br />
* Added a new setting to that subsection (defaults to off): Build Menu By Unit Type Before Fleet Type<br />
** Normally the game sorts the build sidebar by fleet type, then fleet, then by unit type. Enable this if you would prefer it sort by unit type first (aka grouping all turrets of a specific sort together).<br />
** Note: this is flipping the old default behavior, which was unit-type first.<br />
** Thanks to tadrinth for suggesting.<br />
<br />
* It is now possible to select "Random" for all of the starting fleet types (combat, battlestation, and support).<br />
** Thanks to cml and others for suggesting.<br />
<br />
* Fixed a minor issue where on player home planets it was likely for a few types of the structures to be seeded on top of one another. They now try hard not to do that.<br />
<br />
* Ships that produce metal or energy now properly include whatever bonuses they have from their local planet in what they show in their tooltip. Previously, that was not shown for any of the various kinds of bonuses that can cause this.<br />
<br />
* The way that the fleet-wide bonuses are calculated is now based on JUST the ship line counts that are non-flagship style.<br />
** This is more what people were expecting anyhow, and with the ability to switch flagship types we were running into some trouble.<br />
** With that in mind, all of the FRS ships have had their lines lowered by 1<br />
<br />
* Made a couple of minor adjustments that makes it so that ships move a bit more directly between positions, potentially when they are coming to a stop (easing into place less, and more just doing a hard stop).<br />
** There's a chance that on certain machines this may cause a bit of visual jitter as ships move. If that happens, we'll walk this back or make it optional. But for now this seems to make ship movement on 1x speed more smooth. If you play on a simulation speed of 1.5x or 2x or higher, the movement is incredibly smooth, and we'd like that for folks that play on the slower (aka normal) speeds.<br />
<br />
* Hacking a superterminal previously just filled the chat log with spam of the AIP reductions. We now are only reducing AIP every 3 seconds instead, and thus having 1/3 as many messages.<br />
** We also are now putting a timestamp next to every AIP change message in general, so that when there are multiple in a long cycling run like this you can tell something is happening.<br />
<br />
* The hacking section of the 'how to play' section has gotten a major overhaul, with a lot of more up to date information in there (from the new beta builds) as well as with a big lore dump explanation on what hacking points even are.<br />
** Thanks to Leif for asking about this.<br />
<br />
* The vicious raider AI type has been updated to note its wave budget bonus in its description.<br />
** Thanks to ArnaudB for inspiring this change.<br />
<br />
* Various player tips and journal entries that talk about GCAs still work for older savegames, while newer savegames it advises about DSSes instead.<br />
<br />
* A few places have recently referred to the player as "Admiral." These have been corrected to now refer to the player as "Commander," as is the case in all prior direct addresses.<br />
<br />
* Updated the "about science points" section of the retrieve science screen to no longer refer to the removed ability to hack to gain science from neutral planets.<br />
<br />
=== Balance Adjustments ===<br />
<br />
* Players now start with 100 hacking points, rather than zero. This is for much the same reason that they start with 15,000 science: let's get the game started, and let them make some interesting decisions right away.<br />
<br />
* Revised Warbird Frigate balance:<br />
** Roughly 15% hull and shields cut. Also carries over to the Ripper and Hydra variant of the Warbird.<br />
** Paralysis duration on shots lowered from 4 to 3 seconds.<br />
** Shots per volley reduced from 16 to 10 but gains 1 extra shot per mark level to the full 16 again at mark 7.<br />
** Additionally ship cap reduced from 6 to 5 in most fleets and then additionally adjusted the cap from 6 to 5 in the cloaked starting fleet as well.<br />
** Thanks to Mac for raising the issue of how OP these are, and to CRCGamer for crunching the numbers and making the changes.<br />
<br />
*Outguard updates<br />
** Updated Outguard to be "Expatriate" -- changed preexisting hull tech accordingly. <br />
** Also, buff to "outguard (merc) flagship stats, as this was always a mediocre flagship at best.<br />
** Thanks to zeus for updating for us!<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a general bug where if flagships ever transformed, they would form a whole new fleet instead.<br />
<br />
* Maybe made the Miffed and Angry achievements less likely to trip erroneously.<br />
** Thanks to Mac for reporting.<br />
<br />
* Fixed weapons with restrictions based on whether or not the target must be mobile or must be static (i.e. the Botnet Golem) being able to circumvent the attack restrictions if the player orders so.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Put in 2 more restrictions for weapons to ignore targets:<br />
** If the target is invulnerable by any means, skip it.<br />
** If any damage modifier has a multiplier of 0 (artificially used to NOT make something attackable) and that multiplier applies, skip it.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Fixed a bug in the weapon attack-ignore code that was leading to not attacking any unit as long as any other unit was providing invulnerability, even though the first unit should've been vulnerable already (i.e. with AI Eyes).<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Fixed an issue where if you had multiple local IP addresses and view the networking tab, it could cause an endless string of errors.<br />
** Thanks to athros for reporting.<br />
<br />
* Several static working lists on the Fleet object have been made ThreadStatic, so that if they are used by multiple threads they will not clash or cause any problems.<br />
** We had several reports of strange errors, thanks to Leif and Rifi for reporting.<br />
<br />
* Fixed a bug where player melee ships were often going back to the same point over and over again when there were no enemies present, leading to what seemed like an instant dance. <br />
** This will mean that melee ships get caught out of position more after a fight, but that's fine.<br />
<br />
* Fixed a bug in the prior version that was causing the Subvert Superterminal hack to show up as blank, and then throw errors if you hovered over it.<br />
** Thanks to Edicitsep and poljik2 for reporting.<br />
<br />
* Fixed the reprogram hack cost of OMDs to be 24 instead of 5.<br />
** Thanks to tadrinth and CRCGamer for reporting.<br />
<br />
* Fixed an issue in the hacking log where it was not showing the ship type you had hacked for properly.<br />
<br />
* Fixed an issue where certain hacking errors just silently went to the log rather than popping up and showing you the error visibly.<br />
<br />
* Removed the reinforcement point tag from the AI Plasma Eye to match the AI Ion Eye. The reasoning behind eyes not being reinforcement points still applies because of garrisoned units disappearing if still attached when the eye swaps to an alerted version.<br />
** Thanks to CRCGamer for catching and fixing!<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed Drones from the AMU_DroneBase... Not actually being drones.<br />
*** As they now count as Strike Craft adjusted the health and damage values from the Drones within Extended Ship Variants to compensate.<br />
** Fixed and ajdusted all manner of things related to hacking that broke through the recent changes in Vanilla AIW2.<br />
** Hacks that are done by Battlestations or Citadels will now, if but one is selected, honor that selection or if none are selected will use the closest one as the actual hacker again.<br />
** Hacks that are done by Battlestations or Citadels will now display the current actual hacker if any are found.<br />
** Hack Text Snippets, as they rarely change, have been made much more efficient for the Garbage Collector, hopefully improving performance a bit.<br />
** Shifted the additional shot speeds from Kaizers Marauders to AMU, and added one more EXTREMELY slow shot speed type.<br />
<br />
* Kaizers Marauders:<br />
** Hopefully put in a fix for an error in GetDangerOfPathAndTargetIgnoreNegligible(). If not, next time it appears there will be more debug data.<br />
*** Thanks to Leif for reporting.<br />
** Fixed the broken hacks.<br />
<br />
* Micro Mod Collection:<br />
** Tripled the amount of Hacking Points in Distribution Nodes in light of the recent HaP "inflation" as Vanilla DNs now grant much more too, added to that the starter Hacking Points.<br />
<br />
* Extended Ship Variants:<br />
** As the Vanguard is now a vastly better ship due to damage amplification the Vex Guard was a bit overpowered. Reduced its damage amplification to 5 (down from inherited 30).<br />
** All the transport and mobile factory variants can now be transformed into each other.<br />
** As the Agile variant has been buffed in Vanilla in return the radar dampening effect that ESV granted to it has been removed. It does retain the speed buff on entering a new planet, and the 21gx engine power.<br />
** Reduced the strength (and thus threat level) of the Target Painter variant by 20% as enemies were targeting it a bit too often.<br />
** Shortened the name of the Vanilla Rejuvinator support starter fleet so it doesn't have to break line any more once (due to the multitude of ESV support starter fleets) the scroll bar appears.<br />
<br />
* Extended Ship Variants:<br />
** Implemented the "resource-bonus-if-idle" mechanic for the modded transport centerpieces:<br />
*** The Engineering Transport has an improved bonus (15%) and gets it sooner (after 4 minutes).<br />
*** The Tugboat Transport only gets the same 4% bonus that the Agile Transport has.<br />
*** All other transports have no bonus.<br />
<br />
* Extended Ship Variants:<br />
** Converted the Tugboat Drones into Drone Projectiles and made the Tugboat Transport Flagship launch them.<br />
*** This was necessary due to the swap-centerpiece mechanic, as it was causing the original fleet to get "lost" without a flagship, literally costing the player the entire fleet.<br />
*** This is only a temporary solution, as this "cheats" the player out of the buff when no Tugboat Drones have been present since loading the game. 90% of the time that won't be a problem, but it still is inconsistent.<br />
<br />
* AMU + Extended Ship Variants:<br />
** Created a simple Executor Fake Faction-script in AMU that only activates itself if Extended Ship Variants is installed.<br />
** It will scan through all player-owned fleets with a Tugboat Transport as flagship and, if it doesn't have a fleet membership group for the Tugboat Drones, will add one.<br />
** Thus, at worst 1 second after unpausing the Tugboat Transports will gain their previous speed boost of 700 for all ships in it.<br />
** Inversely the script will remove the fleet membership if no more Tugboat Drones are alive AND the flagship is any other than a Tugboat Transport, thus also removing the speed buff.<br />
<br />
* Updated AIShieldGenerators mod to work with the hacking time/intensity changes in Beta 2.735<br />
<br />
* More System Defenders 1.22 - FRS Revision & Ark Hacks (by CRCGamer)<br />
** Most recent changes:<br />
** Revisions to the Augmented Artillery Cruiser available in FRS<br />
*** Cap reduced from 3 to 2<br />
*** Shield bonus boosted from 1.25x to 1.5x<br />
*** Boost only works with 5 lines or less<br />
*** AIP cost reduced from 30 to 10<br />
** Stormfront Ark given the same self-hacks for shield boosts as various vanilla ark choices<br />
<br />
== Beta 2.734 Bugfixes ==<br />
(Released February 12th, 2021)<br />
<br />
* The AI Shield Generators mod by cml has been updated to work with the new hacking mechanics.<br />
** Thanks, cml!<br />
<br />
* The way the fleet bonus limits are written is now more brief, and if they are hit the entire fleet bonus text is shown in a different color. It's way easier to see what's going on at a glance.<br />
<br />
* Fixed a bug in the prior version that was causing fleet-wide limits to sometimes not work because it thought it had more ship lines than it really did.<br />
** This may not have affected any players, but it affects the player potluck cheat, and could in theory affect some real fleet someday.<br />
<br />
* Fixed a bug with the fleet-wide limiters in the prior beta build, where it would only turn on if you had exactly the number you were supposed to or MORE.<br />
** This was backwards from what the UI actually told you, for extra confusion.<br />
<br />
* Fixed a bug with some of the caching of hull and shield values (for performance reasons) that often caused various things like FRS ships and hull/shield hacks to not apply properly to ships in various circumstances.<br />
** Thanks to CRCGamer for reporting the hack-related side of these.<br />
<br />
* The FRS fleet-wide bonus for move speed does NOT apply to the flagship, and that was both working correctly and also stated correctly on the interface.<br />
** However, the other fleet-wide bonuses (shields, hull, attack power) DO apply to the flagship, and the interface was reporting that incorrectly. On those it now explicitly says that they work with flagships.<br />
** Thanks to Jordan K for reporting the inconsistency.<br />
<br />
* Turbo Raiders now work on any fleet with 6 or fewer ship lines, since flagships are counted in the total line count, but this is the one kind of bonus that doesn't actually help flagships.<br />
** Thanks to ArnaudB for inspiring this change.<br />
<br />
* Fixed an issue with the EarlyOfficers where we were seeding one per human empire rather than 1 overall.<br />
** Also fixed a bug where extra officer fleets in general (not just the early sort) could seed because of some random noise from things above them. On a standard single-player game, you should have about 4 on the map.<br />
** Thanks to CRCGamer and ArnaudB for reporting.<br />
<br />
* Fixed a bug that could happen when you did a hack from a pop-out window, and then exited to the main menu and re-entered to do any other hack from a popout menu.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed an issue in the last couple of versions that could lead to an infinite loop of "multiple hackers present" messages when you opened the hacking sub--menu for certain hacks.<br />
** Thanks to Strategic Sage, Firewoven, and Leif for reporting.<br />
<br />
* The starting defensive fleets were indeed a bit over-tuned and have now been nerfed.<br />
** In the starting fleet, for instance, you mostly got about 60 of things that you got 30 of in the actual command station, and 30 of things you would get 15 or 16 of elsewhere. We've toned this down to half values.<br />
*** Similarly, you had 30 tractor beams rather than something more normal like 15.<br />
** In the fleets with minefields, we also cut those numbers in half, because 70 was way too many -- 45 seems better in most cases.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Fixed another issue that was causing turret counts to be drawn 5x too high when viewed in places like the lobby and looking at a starting fleet. Essentially some code that was in several places needed to be moved to a central consistent place.<br />
** Thanks to ArnaudB and Daw11 for reporting.<br />
<br />
* One last fix to misleading tooltips, with GCAs reporting about 5x more turrets than they were actually going to grant you. Now they actually give you the proper numbers on things.<br />
** Thanks to CRCGamer and Lictuel for reporting.<br />
<br />
== Beta 2.733 Arks, Reprogramming, And FRS ==<br />
(Released February 11th, 2021)<br />
<br />
* In general, passive attrition from ships is now boosted by boost hacks against their ship, as well as from fleet-wide bonuses.<br />
** Previously, neither of those boosted attrition.<br />
<br />
* Attrition is now better color-coded in tooltips, and it now only shows the full explanation if you are on the full tooltip. Instead it just shows a more concise "ATTRITIONER: Amount/s" for lower-detail tooltips.<br />
<br />
* Fixed a minor issue in tooltips where the DPS per weapon was not shown with commas, making large numbers harder to read than they should have been.<br />
<br />
* Updated the scouting tutorial to mention spy units and how those work, since that's relevant.<br />
** Thanks to Puffin for reminding us.<br />
<br />
* If the mark level of a drone would naturally drop to be lower than the centerpiece of its fleet, then it now marks up to match the centerpiece of its fleet.<br />
** This is similar to how it worked in the past.<br />
<br />
* Under the hood, there is a new CustomBaseMark on units, which can be set to a value at some time. Their mark level will then not drop below that.<br />
** For units that are reprogrammed, we now set this, so that you get the mark level of whatever the unit was when you captured it (it can still go higher based on techs, but it won't go lower).<br />
** Additionally, for ships fired from a drone-gun, they will now use this for the mark level of the firing ship (for example, makeshift turrets). This keeps behavior how it used to be prior to the new tech respec code.<br />
** Thanks to DEMOCRACY_DEMOCRACY for reporting.<br />
<br />
* The achievement "FOR SCIENCE!" used to be related to hacking ARS or TVs to convert them into science, but that's no longer a thing.<br />
** Now it is: "Retrieve spent science so that you can re-spec part of your fleet in response to a changing situation."<br />
<br />
* On the galaxy map filters, a few quality of life adjustments:<br />
** Normal is now shown with a golden text color, and is at the very top of the list, so you can easily scroll to it.<br />
** Deepstrike Danger and Threat are both shown in purple, as they are both unusually useful as well as being about dangers.<br />
** Strength and Spy Network are both shown in blue, as they are also unusually useful and about reading the topography of the map.<br />
** Capturables are shown in light green, as they are very useful and one of the things that is most goal-oriented.<br />
** Thanks to gaz and themouthofsauron for suggestions in this area.<br />
<br />
* Fixed some exceptions that could happen because of cross-threading in EmitOnAOEParticles.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Silenced a couple of knockback errors that were harmless but that could happen in particular in multiplayer (but also in single-player) if things died in just the wrong order.<br />
** Thanks to Tydorius for reporting.<br />
<br />
=== Hacking Updates ===<br />
<br />
* The "Double Ship Line Cap" hack now only works on "basic strikecraft" ship lines, which means nothing that starts at a mark level higher than 1. The tooltip explains this, now.<br />
<br />
* The sabotage hack now gets 1.25x more expensive to use for each mark level above 4 of a target.<br />
** So if something costs 10 to hack at mark 4 and down, at mark 5 it will cost 12.5. At mark 6 it will cost 15.6, and at mark 7 it will cost 19.5.<br />
** This keeps the bulk of the galaxy in one similar cost spectrum, but then for the really intense planets does make those more costly to do.<br />
<br />
* In multiplayer, hacks that increase in cost for every attempt now use the hacking history of all players, not just whoever is doing the hack.<br />
** Also new? If you failed the hack, it now doesn't count that against you, even in single-player.<br />
** Thanks to Arides for reporting.<br />
<br />
* The maximum amount of time a subvert-superterminal hack can last is now capped at 20 in-game minutes.<br />
** It seems like it was maybe capped at 3 in-game minutes before, but it's hard to tell from the code. It was supposed to be indefinite.<br />
** Our goal was for people to be able to push it for as long as they can hold out, though, so unless this winds up being unbalanced this might be better. Feedback welcome.<br />
<br />
* Fully fixed it up so that now if you are unable to do a hack in general, but it has a pop-out for sub-options, you can still get the sub-options and see their details while at the same time seeing why the hack is invalid on each one.<br />
** This is most common when you don't actually have a hacker present, but this makes it so that you can easily peruse distant planets and look at the various options inside for instance an ARS or whatever.<br />
<br />
* Fixed a number of places where the number of ships you will be getting was misrepresented -- either too high or too low.<br />
** There was an ApplyFleetCapMultiplier() that has been removed, as it was redundant with the newer GetResultingCapFromSquadCapMultiplierList().<br />
** In places where both were used, it was reporting too high. In places where just the former, it was showing too low and now uses the latter.<br />
<br />
* Both the FRS and ARS now show the total strength of the lines that you would be getting in their options area.<br />
** They also show the mark level as a roman numeral and a color and not just a color alone. This is a lot more clear at a glance for this screen.<br />
<br />
* A large number of hacks just said "Grant Ship Line," which was vague and annoying, particularly when there were a lot of structures of the same sort on a planet.<br />
** The FRS now says "Steal Experimental Ship Line" and has a much more specific and informative description.<br />
** The ARS now says "Steal AI Ship Line" and has more lore flavor in its description.<br />
** Others will be coming soon in terms of having better names and descriptions.<br />
<br />
==== New Hacks ====<br />
<br />
* Two new hacks!<br />
** Increase Shields<br />
*** Increase the shield durability for one of your units at this planet (works for both personal shields an bubble forcefields).<br />
*** In terms of the interface and so on, works just like Increase Hull Health.<br />
** Increase Weapon Power<br />
*** Increase the attack power for all weapons on one of your units at this planet.<br />
*** In terms of the interface and so on, works just like Increase Hull Health.<br />
<br />
* Most (but not all) Arks now have the Increase Shields hack, similar to how all the golems that players can capture have the Increase Hull Durability hack.<br />
** Rorqual Hegira: cost 40 HaP, can do 1 time, gives 1.5x boost to the bubble forcefield.<br />
** Gyrn, the Voidhome: cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
** Orchid: cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
** Ark One: cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
** Great A'Thomek (DLC1): cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
** Sol Ater (DLC1): cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
<br />
* The remaining Arks now have the Increase Weapon Power hack, since that's better suited for them.<br />
** Thanatos: cost 24 HaP, can do 2 times at increasing cost, gives 2x boost to attack from all weapons.<br />
** Belle Prime (DLC1): cost 24 HaP, can do 2 times at increasing cost, gives 2x boost to attack from all weapons.<br />
** Nodorian Tortoid (DLC1): cost 24 HaP, can do 2 times at increasing cost, gives 2x boost to attack from all weapons AND the passive attrition damage.<br />
** Grand Salvage (DLC1): cost 24 HaP, can do 2 times at increasing cost, gives 2x boost to attack from all weapons.<br />
<br />
* New hack! Reprogram An Enemy<br />
** Hack into and turn one of a few enemy structures on this planet to become yours! Not many enemy units are vulnerable to capture in this way, but there are a few. If the structure would normally increase AI Progress on death, capturing it this way does not cause that increase. Hack runs very quickly, due to the likelihood that the target is trying to kill your hacker.<br />
** This works much like the sabotage hack in terms of how you select targets and all that sort of thing, but instead of destroying them you get to keep them.<br />
** Both ion cannons and mass drivers are the first ones to now support this.<br />
*** They now have proper costs that rise as their mark levels go up, and you can hack even mark 7 ones, unlike before (it's just bloody expensive).<br />
<br />
* AI Fortresses and Superfortresses can now both be reprogrammed (and the latter can also be sabotaged).<br />
** However, they are ludicrously expensive to do that with, so it may not be something you really do much.<br />
** These may need some metal/energy cost balance. Feedback welcome.<br />
<br />
* Magnifiers can also now be reprogrammed, for a more middling cost.<br />
** So can Black Hole Machines, for an even more reasonable cost.<br />
** These may need some metal/energy cost balance. Feedback welcome.<br />
<br />
==== Removed Hacks ====<br />
<br />
* The generically-named "Hack Ion Cannon" and "Hack Mass Driver" hacks have been retired.<br />
** They both took over all of the ships of a certain sort of their respective planets, but only up to mark 6 planets, and the whole thing was a bit janky. Let's make the whole thing more robust and able to be used with other kinds of units, too.<br />
** See above for the better replacement version.<br />
<br />
* The hack to convert an ARS to science has been removed.<br />
** This is another of those cases of the battle between what you design and what you "play it as you find it."<br />
<br />
* The "Neutral Planet Science Extraction" hack has been removed.<br />
** The only reason to use this was to avoid aggro'ing neighboring enemies. But... well, please do meet the neighbors if you want to mine the planet for science and hacking points!<br />
<br />
* The "Covert Science Extraction" hack has also been removed.<br />
** This is something that was just a straight up trade of hacking points for science points, while avoiding an AIP increase.<br />
** This is a bad combo with things like the new more powerful distribution nodes, and leads to some strange incentives when there.<br />
<br />
==== Technical Details ====<br />
<br />
* In general, the way that the code for how the costs for hacks work has been completely redone. It was super confusing before, and may have had some errors.<br />
** One thing that was happening for sure is that the "Weaken Turrets" hack was not actually charging you more for higher-level planets, for example.<br />
** Hacks in general were also charging you the full amount if you canceled them, for some reason.<br />
** If you canceled a hack, it also said you spent hacking points that you did not (in the log). Except for those times where it 100% did charge you for nothing.<br />
** It appears you may have been double-charged sometimes, or also got a result for free at other times. What a mess. All clean now.<br />
*** Why was this such a mess? Well, it was the work of about 6 programmers over 5 years, with about 10 different ways of doing things.<br />
<br />
* Added a new "Invincible Ohmu" ship.<br />
** Literally invincible crazy-firepower ship that is only brought into the game via cheats. Great for testing hacks, since it can't be killed.<br />
** Spawn it with the cheat "cmd:ohmu" (this is now in the wiki cheats page).<br />
<br />
=== Balance Updates ===<br />
<br />
* Updated the Human Resistance Fighters so that you get 3-4 frigates per hack from them, rather than just one. They were way too weak with just one, and not a good deal for hacking points.<br />
** Thanks to CRCGamer for finding and also fixing!<br />
<br />
* Updated the frigates on the starting fleet from 4 to 6 for mugger and sniper frigates (it didn't make sense anymore that they had that low count.)<br />
** Also fixed the description of Consumer starting fleet<br />
** Thanks to ArnaudB for finding and fixing!<br />
<br />
==== FRS Rebalance ====<br />
<br />
* Major rebalance to the ships you can hack for from the FRS!<br />
** For a long time, many of them have been either too expensive to be useful (in terms of AIP costs), or have been too useful to pass up (because they benefit an entire giant fleet of 40 ship lines).<br />
** We want these to always be useful and exciting, and to encourage different styles of play. So, with that in mind, the general changes:<br />
*** First, these will cost a lot less AIP, so that they are actually viable to take even on lower-AIP games.<br />
*** Second, these will start at a high mark level (like the experimental fabricators in AIWC), so you can choose to just use them as an exciting high-mark combat fleet line.<br />
*** Third, if they have a fleet-wide bonus (a fleet supercharge ability), then that will only apply to fleets with a smaller number of lines, now. So if you want a small buffed strike force, you can create that, but you can't just throw these in a giant blob fleet and still get the effect.<br />
** The descriptions for all of the ships that are possible also now give recommendations for how to use these to maximum effect.<br />
** The specific changes are:<br />
*** Turbo Raider:<br />
**** Starts at mk5, only supercharges fleets with 5 or fewer lines, only costs 20 AIP instead of 40.<br />
*** Ultima Fusion Bomber:<br />
**** Starts at mk5, only supercharges fleets with 5 or fewer lines, only costs 10 AIP instead of 80.<br />
*** Ireful MLRS Corvette:<br />
**** Starts at mk6, only supercharges fleets with 7 or fewer lines, only costs 10 AIP instead of 30. Notably awesome with officers and frigates.<br />
*** Tutelar Pulsar Tank:<br />
**** Starts at mk5, only supercharges fleets with 4 or fewer lines, only costs 15 AIP instead of 40. Now gives a hull bonus of 2.5x instead of 1.5x. Notably incredible with officers.<br />
*** Encircling Spider:<br />
**** Starts at mk6, only supercharges fleets with 5 or fewer lines, only costs 12 AIP instead of 50. Notably awesome with officers and frigates.<br />
*** Inciting Parasite:<br />
**** Starts at mk6, only supercharges fleets with 6 or fewer lines, only costs 16 AIP instead of 60.<br />
<br />
* The hack to re-roll FRS contents has been removed. You still just get two choices with them.<br />
** These are specialty high-powered ships, and you get what you get. If you don't want what is there, then skip the FRS.<br />
** Overall we are working on removing most of the "re-roll" mechanisms, since those are gamble-y and don't feel great to use. Instead giving you more options (as appropriate -- unlike here in the case of FRS), and/or the ability to just skip things.<br />
<br />
* FRS hacking balance updates:<br />
** The FRS now costs 10 HaP instead of 15, and has a response to the hack that is 3x stronger than an ARS.<br />
** Additionally, if the FRS is in territory that is hostile to you, then the hacking cost is doubled (so in an old-style typical fashion, the cost is now 20, but if you take the planet it's now 10).<br />
** The FRS ships had absolutely INSANE quantities (like almost 400 turbo raiders). This has been toned down substantially, to more like a third or so of what it was. That was way overkill.<br />
<br />
* ARS hacking balance updates:<br />
** The ARS now costs 7 HaP on non-hostile planets, rather than 15, and 14 on hostile planets.<br />
<br />
== Beta 2.732 Recon, Golem Buffs, And Sabotage ==<br />
(Released February 10th, 2021)<br />
<br />
* The ranges of turrets no longer increase with mark level for human players. This messes with placement in several ways, doesn't work well with re-speccing science down, and in general adds very little for most players while adding some substantial headache for a subset of empire designer players.<br />
** However, all of the human turrets are now (from mark 1 on) at 1.3x of whatever their old mark 1 levels were.<br />
** Thanks to Strategic Sage, tadrinth, zeus, and ArnaudB for the discussion that led to this.<br />
<br />
* Fixed a tooltip bug where the RECON hops watched by command stations was not actually showing for player units (that includes fallen spire stuff, too). Now that's properly shown for player units.<br />
** This certainly made it difficult to know that there was a benefit of this sort from logistical command stations (and now military as well!).<br />
<br />
* Fixed an issue in the prior build where if you opened the in-game galaxy options without first opening the lobby galaxy options, you'd get endless errors until you closed that screen.<br />
** Thanks to Eonfighter for reporting.<br />
<br />
* Distribution nodes now grant 80 HaP instead of 20, making them WAY more valuable.<br />
** Depending on how much you start doing with hacking, these may be some MVP targets now.<br />
<br />
* The cheat for metal can now be done without an argument for how much, and it then gives you 10 million metal instead.<br />
<br />
=== Hacking Updates ===<br />
<br />
* The "Watch Planet" hack now costs 5 HaP instead of 10 HaP.<br />
** This is something that is devalued a lot when you consider the addition of spies in the last build, so this is mostly for more distant targets.<br />
** This hack's description now talks about the alternatives of recon abilities from logistical and military command stations, as well as spies, so that when someone sees this hack they have a good sense of what they can do with it.<br />
<br />
* Added a new hack_completes_instantly="true" xml feature for various hacks to make them complete instantly, even when the game is paused, rather than them taking even one second.<br />
** This skips any sort of AI responses that there would be to a hack, too, so it's mainly for things that already had not response.<br />
** This is now used for the various scouting/exploration hacks, and will be used for some other upcoming hacks.<br />
** This makes the exploration hacks way more responsive-feeling, particularly when the game is paused and you want to examine things without unpausing and re-pausing over and over again.<br />
<br />
* When you are in the middle of a hack and your target dies or hacker gets crippled or whatever, it now notes that the hack failed in a chat message.<br />
<br />
* If a hack fails or is canceled, it now shows up in a much better way in the hacking history, making it a lot more clear in failure states in particular.<br />
<br />
* When hacks finish successfully, it now gives a message in a consistent way, after it has probably already given a message about more detailed results.<br />
<br />
* Even if you can't do a hack, it now lets you actually see into the list of options when you click the hack button.<br />
<br />
* For instant hacks, if they require a hacker is present, they no longer care which hacker it is. That never matters, unlike hacks against structures that are done over time.<br />
** This reduces some interface fiddliness with hacking your own units to upgrade them in various ways.<br />
<br />
=== New Hacks ===<br />
<br />
* New hack!<br />
** You can now hack your own logistical command stations to increase their recon range by +2 for a cost of 60 HaP.<br />
** You can do this a second time for a cost of 150 to make them incredibly all-seeing.<br />
** This actually can scout planets for you, if the things in the new recon range are not scouted yet. This is super duper powerful... but also expensive in HaP.<br />
<br />
* New hack!<br />
** You can now hack your own military command stations to increase their recon range by +1 for a cost of 40 HaP.<br />
** You can do that up to 3 times, for an added cost of 1.5x each time.<br />
** This is using the exact same hack as the logistical command station, but using all the new hacking tools to make it so that it is custom per unit!<br />
<br />
* New hack! It is now possible to increase the hull durability of certain ships by hacking them.<br />
** At the moment, this is a feature mainly for golems. This gives them far more durability than before (on average about 2x), for on average around 20 hacking points.<br />
** This makes the golems feel a lot more like the golems in AI War Classic, but it's a costly investment to do so. You can hack them multiple times and really crank it up, but this gets even more super expensive.<br />
<br />
=== Updated Hacks ===<br />
<br />
* The sabotage hack now allows us to have a varied cost depending on what you are hacking. Normally the cost is 11 HaP for most targets (down from 15 previously).<br />
** Troop Accelerators are only 7 HaP.<br />
** Black Hole Machines, Alarm Posts, Magnifiers, and Raid Engines are 16 HaP (hey, you're dodging 5 AIP from them).<br />
*** But the ones from the Zenith Trader are only 7 HaP now.<br />
** Scourge Fortresses are all now 18 HaP.<br />
** The AI Spire Fortress is now 19 HaP.<br />
** Wormhole Borer is now 25.<br />
** In general, there may be some new targets that folks want us to add for sabotage. Things that were previously not worth it (need low HaP to be worth it) or too powerful (need higher HaP to not make sabotage way too effective).<br />
** You can ALSO now sabotage warp gates, and thus get out of their 5 AIP cost (and/or not have to gate-raid) for 14 HaP.<br />
*** This gives you some new options for controlling where waves can come into your planets, as well as allowing you to do it faster.<br />
*** To some extent, this can let you take more planets for the same amount of AIP if you do this enough, which presents interesting options; but you'll forgo a lot of the extra HaP from that if you do so, which has its own downsides.<br />
** Bear in mind that these numbers may require tuning up or down in general, but in general the relative values seem nicely-spread.<br />
<br />
* The sabotage hack's tooltips and text in general have been updated, and a lot of behind-the-scenes code bits for it.<br />
** The sabotage hack also now uses the thing where it pops up a list of options for you to hack, with info for each one. It does this instead of making you park really close to the thing you want to target.<br />
** It's worth noting that even when there is one option, it makes you choose it from the sub-list. This is because it gives you extra tooltip information that you can't get any other way, and it keeps the experience consistent so that you don't "click to see options" and accidentally trigger it if there's only one target.<br />
** In the hacking sidebar, if there is a variable amount of hacking points that something can cost depending on the options you chose, as in this case, it now shows the range.<br />
<br />
==== Removed Hacks ====<br />
<br />
* The ability to re-roll tech vault contents via a hack has been removed.<br />
** This might be a bit controversial, but we're giving you waaay more options now in each tech vault, and there is overall a tension in the game between "customize" and "play it as you find it."<br />
*** The re-rolling, even if it includes a deterministic seed (which this now does), still encourages a form of gambling with hacking points, and/or save scumming. Neither of those things are something we want to encourage, and they're both at odds with the idea of "play it as you find it" without actually furthering the goal of "design your empire."<br />
** So essentially, this is on the other side of the spectrum from the ability to refund your techs to give you more control over building your empire. This sort of re-roll gives you too much power to adjust what you find, and in a gamble-y sort of way, and that's not great. Hopefully the increase in options at each tech vault are now sufficient that you can find something of interest, and if not... that's part of the decision-making of choosing which targets to capture or hack, and which to ignore.<br />
<br />
* The "Watch Planet (local)" hack, which only cost two HaP, has been removed.<br />
** This was something that let you watch certain planets for a fraction of the cost, but only until the AI re-took the planet, etc.<br />
** This niche is now filled by the recon abilities of command stations, and by Spy units.<br />
** Having this as an option is ultimately something that is confusing and a bit of extra clutter when you consider the current options around.<br />
<br />
==== Removed Galaxy Options ====<br />
<br />
* The "Scout Adjacent Only" option from the galaxy options has been removed.<br />
** This was ludicrously masochistic and not something that we felt like anyone was likely using in the first place. This was something that we added a few years ago when we revamped scouting, but at the moment it's just detritus.<br />
<br />
* The "Hops for planets adjacent to yours are watched" option from the galaxy options has been removed.<br />
** This was a semi-cheaty workaround for players who wanted more situational awareness than the game used to give them.<br />
** The same sort of functionality is now provided in-game via spies and command station buffs, and is done so in a non-cheaty fashion. This should satisfy the players who want this style, and be more discoverable as well.<br />
<br />
==== Technical Details ====<br />
<br />
* Added display_name_and_description_insert_target_ship_name as a feature for hacks.<br />
** When true, this allows us to put {Target} in the description and name and have it show the name of the unit being hacked.<br />
*** There are a number of hacks that are now going to be used on a wide variety of ships/structures, so this lets us do that with them actually being identifiable.<br />
** There is a semi-similar feature for hacking event logs already, but not something for hacks yet-to-be-done that also works in event logs.<br />
<br />
* There's a bunch of new code on fleet memberships for logging how many times one of those has been hacked in a fleet, and in general tracking some upgrades on that level.<br />
** This is the basis of a framework for hacking your own ships -- but always by fleet membership line as a whole -- and it's useful because it can survive command station destruction and reconstruction, and type changes, etc.<br />
** This is also, structurally, very very similar to what we will be doing for ship loadouts in the future for spire ships and certain other things. So this plays into that in terms of being useful as a guide for a lot of future features.<br />
<br />
* Added a new Hacking_HackSelfUnit_Base abstract class, which forms a new basis for hacking our own ships.<br />
** This does not HAVE to be used as the underlying class for handling hacks against our own ships, but it has a lot of convenient helper methods that will make each of those other hacks a lot more brief to code and easier to know are correct.<br />
** Some of the more generalized stuff has also been integrated into the BaseHackingImplementation that basically every hack inherits from, so that is useful also. This is a pretty major extension of hacking, particularly in the ability to tune hacks via xml and also differentiate a given hack for multiple target types.<br />
<br />
* Also added a new hack_data sub-node for units in general, which can let us define in xml a lot of dials about how a given unit responds to a specific hack.<br />
** This can be things like extra cost increases, or even custom data used by a given hack.<br />
*** There is override_cost_in_hacking_points, and cost_in_hacking_points_multiplier_per_times_same_unit_hacked, as some basic items that allow for overrides.<br />
*** max_times_single_unit_can_be_hacked is in there for controlling how many times a unit can be hacked in general by this one hack.<br />
*** You can have arbirary key/value data as custom_hack_data child nodes.<br />
** This information DOES propagate to child units via the copy_from attribute. It is possible to do partial overrides of that info in the children.<br />
<br />
* only_for_hostile has been removed from hacks, and there is a new only_for_target_type instead.<br />
** This can be Any (the default), AlliedUnits, AlliesAndMyUnits, MyUnits, NeutralUnits, EnemyUnits, or EnemyOrNeutralUnits.<br />
<br />
* unit_tag_target has been removed from hacks, because we are directly assigning hacks already and this is redundant and confusing.<br />
<br />
* Added a new Hacking_SelfUnitWithSubSelection_Base, which has a ton of things set up for us to be able to self-target various numbers of ships for certain hacks on planets. Useful when various things can self-upgrade.<br />
<br />
== Beta 2.730 Spies, Early Officers, And Randomness Options ==<br />
(Released February 9th, 2021)<br />
<br />
* Fixed a couple of ways in which savegames could fail to load because of removed hacks in the prior build.<br />
** Thanks to Sigma7, Arides, and Isiel for reporting.<br />
<br />
* Added a new "EarlyOfficers" tag to the following Arks: Ark One, Orchid Ark, Rorqual Hegira Ark, Black Widow Golem, and in DLC1 Sol Ater Ark.<br />
** These have also had their max seeded per galaxy reduced from 2 to 1 (Sol Ater and Rorqual was already 1).<br />
** Their spawn likelihood in general has also been reduced to 1/20th of what it was before in most cases, compared to other Arks and Golems (for the usual ways of spawning that exist so far.<br />
** There is now a single EarlyOfficers ship spawned within 1-4 hops of one of the player homeworlds in each game. This is in addition to the other usual golems and arks that already seed.<br />
*** This essentially gives one empire in each game a way to get an officer fleet early, and one which is likely to be particularly helpful in the early game and maybe less helpful later.<br />
** Thanks to various players on discord for suggesting we have an early officer like this, and to CRCGamer and zeusalmighty428 for helping us come up with the list.<br />
<br />
* Like strikecraft, engineers no longer have personal shields and instead have that added directly to their hull health.<br />
<br />
* Rather than costing 2 hacking points per line you retrieve science form, it now costs 5. This is still extremely cheap, but should hopefully make this mechanic in general feel a bit more balanced. <br />
** Yes we want you to re-spec when you need to, and to invest science early and then rework your empire as you find new things (because you do not have the ability to see through the fog of war in the preferred way to play), but we don't want wanton and constant re-speccing, or for people to feel like this is some sort of cheat. This is a part of game flow, and doesn't take away from "play it as you find it." The ships are what you find, the science is what you design.<br />
** Thanks to folks on discord for their general feelings.<br />
<br />
=== Spies ===<br />
<br />
* Added a new civilian unit: Spy<br />
** Provides visibility on an enemy planet with a very low chance of being detected. Able to cross through wormholes, unlike the rest of a command fleet.<br />
** Has a high amount of cloaking, a very high albedo so it is hard to decloak, is fast, and has decent health. Costs a lot of metal (12k) and uses a lot of energy (2k) for the fact that it has no weapons or other tools.<br />
** Logistical command stations get four of these, and military command stations get two. Home and economic command stations get none.<br />
** It's worth noting that you can get the same effect by hacking planets to watch them with spy nanites, but that uses up finite hacking points.<br />
** Thanks to zdrgn for suggesting.<br />
<br />
* Logistical Command Stations now watch planets at 2 hops out, rather than 1. Military command stations now watch planets at 1 hop out.<br />
<br />
* Lesser Spy Cradle now watches at 5 hops out rather than just 3.<br />
** Greater Spy Cradle now watches at 8 hops rather than 4.<br />
** The latter of these (both of these are DLC1) can now basically see almost the entire map, hopefully making it more worthwhile.<br />
<br />
* On planets, there is a new GameSecondLastWatchedByCommandStation that we can use to tell the last time a planet was watched by a command station's power, or a spy cradle, or similar (many fallen spire ships have range-1 spy devices).<br />
<br />
* New galaxy map display mode: Spy Network<br />
** Shows which planets have spies on them (and how many), or which have spy nanites, which ones are viewed by recon structures, and which ones are visible for other reasons. Shows the same icons as the Normal view.<br />
** You can use this to see easily where you have visibility and why, and make sure you don't have extra spies in place in pointless places where you already have recon view, or where multiple spies are accidentally on the same planet (maybe from different players, even).<br />
<br />
=== More Randomization Options In MapGen ===<br />
<br />
* Two new additions to the Roguelike Additions section of mapgen:<br />
** Planets To Randomize: Marks 2-6<br />
*** Range from 0 to 300, new default of 6 (was previously the equivalent of 0).<br />
** Planets To Randomize: Marks 1-4<br />
*** Range from 0 to 300, new default of 2 (was previously the equivalent of 0).<br />
** General description:<br />
*** Normally there's a pretty sensible distribution of planets and mark levels, but this can cause a feeling of sameness in a lot of galaxies. <br />
*** If you're ready to spice things up, and willing to have some potentially very challenging map designs, then this feature will go in and randomly swap the mark levels of planets in the ranges specified.<br />
*** It will make however many swaps you ask for, up to 300 per category, and will overlap itself as it does the swaps without any hesitation. It will not swap any homeworlds, or what ships are on these planets.<br />
** This actually helps us get back some of the feeling of AIWC, where you could occasionally have a mark 4 (equivalent of mark 6) planet right next to your starting world.<br />
** Thanks to Sombre and others for requesting features for this sort of randomization.<br />
<br />
* Added a three new Roguelike options to the Map Gen section of game options in the lobby: Extra Allowed Distance For Adajent-Seeded Items (range 0-99, default 0)<br />
** Certain things that you can capture are seeded on adjacent planets to players if at all possible, to give them something early to capture. If you would like to expand that limitation so that it needs to be within 2 planets, or 3 planets, or... 99 planets... you can do so. <br />
** The more you expand this, the harder the game MAY be, as things will be absolutely random in distribution. These items will tend to still be required to be at least 2 away from any AI homeworld, though.<br />
** This will also be applied to things that are intended to be seeded two hops out, so if you give +1 here, it will seed those within 3 hops.<br />
** Thanks to Sombre and others for requesting features for this sort of randomization.<br />
<br />
* Added a three new Roguelike options to the Map Gen section of game options in the lobby: Extra Allowed Distance For Middle-Distance Items (range 0-99, default 0)<br />
** Certain things that you can capture are seeded on adjacent planets that are usually on the nearer half of the galaxy; generally within 6-8 hops of player homeworlds, but at least 3 hops out.<br />
** By increasing this count, you allow them to be seeded farther away (but they may still seed close, it's the nature of random).<br />
** Thanks to Sombre and others for requesting features for this sort of randomization.<br />
<br />
* Added a three new Roguelike options to the Map Gen section of game options in the lobby: Reduced Distance Restriction For Any Items Items (range 0-6, default 0)<br />
Various things that you can capture or that give some other benefit are normally seeded a minimum of something like 3 or even 5 hops from human planets (when the map allows for that). <br />
** This allows for you to relax those restrictions, which can make for surprise early-game boons. A Zenith Power Generator on your doorstep, and a SuperTerminal right next to it? A Golem really close by? Who knows!<br />
** It's worth noting that this only increases the restriction, but doesn't shift them all closer for sure. Most of the time if this is increased all the way to 6, that will just mean 'anywhere in the galaxy' for things that are meant to be late-game otherwise.<br />
** This can make parts of the game easier, but it's ultimately going to be very random.<br />
** Thanks to Sombre and others for requesting features for this sort of randomization.<br />
<br />
=== Tech Vault Balance ===<br />
<br />
* Tech Vaults no longer grant hull techs as one of their four options. They now grant only three options: two weapons, and then a third special one. The third special one is very likely to be quite valuable, still, but the hull one was always going to be the obvious pick.<br />
** Thanks to Strategic Sage, Lictuel, and others for suggesting.<br />
<br />
* The game no longer seeds "however many human empires there are" (plus 1 if difficulty of the highest AI < 5) of tech vaults within a few hops of the player starting zones.<br />
** These tech vaults (it's just one in a normal single-player game against a difficulty 5+ AI) are simply lost to you.<br />
<br />
* There was previously another 3 + "however human human empires there are" (plus another 1 if difficulty of the highest AI < 5) of tech vaults that were seeded in the "middle distance," aka randomly within 3-8 hops of player homeworlds if at all possible.<br />
** This has now been changed so that the number is based on a new "Base Tech Vaults To Seed" galaxy option, which you can adjust from 0 to 3, but which now defaults to 1.<br />
** For multiplayer, if the "Seed Extra Tech Vaults In Multiplayer" is on, then it will seed 1 extra tech vault per human empire beyond the first.<br />
** It no longer gives extra tech vaults for really low AI difficulties.<br />
** Thanks to Sombre for requesting more customization options, and others in general for registering the OP-ness of tech vaults in large volumes.<br />
<br />
=== Galaxy Options Categories and Subcategories ===<br />
<br />
* The galaxy options now also support full categories and subcategories, like the settings have for a week or two.<br />
** The destroyables, capturables, and galaxy design sections have been condensed into a new Map Generation section, with various subsections.<br />
** There is a new Allies section, which organizes a number of settings more clearly for you to be able to modify those.<br />
** In general a number of galaxy options moved around, but are easier to find now. It's also easier for mods to add well-organized options.<br />
<br />
* The category buttons on the galaxy options screens are now a bit less tall, and closer together, so that more can be shown. Relevant if you have a lot of mods.<br />
<br />
* Civilian Industries has been updated to include a galaxy option setting category, since that is now required to be explicitly created.<br />
<br />
* Basic galaxy option categories are now in place for AMU, although NR SirLimbo can rearrange those to his liking in the future.<br />
<br />
== Beta 2.729 Tech Vaults, Bugfixes, And Major AMU Updates ==<br />
(Released February 8th, 2021)<br />
<br />
=== Tech Vaults ===<br />
<br />
* TLDR of the below changes in the detailed notes:<br />
** Tech Vaults now give you an option of 4 different techs to choose from. Two weapons, one hull, and one special.<br />
*** These options may differ between players in multiplayer, in terms of what each player sees, and that's okay. This is meant to be custom to the player now.<br />
** Because you get so many more options now, and because we don't want to generally translate hacking points into science points, you can no longer convert a tech vault into science points.<br />
** The rest is mostly a bunch of improvements to make hacks-with-options possible for modders to add, and easier for us devs to add.<br />
<br />
* It is no longer possible to save a game before a tech vault reroll-hack and then reroll-hack it and then reload the save and reroll-hack to get different results. It now gives you consistent results every time you reroll-hack for a given tech vault, but each time you reroll-hack in a sequential fashion (aka without reloading the save and getting your HaP back) it will give you a fresh set of stuff.<br />
** Thanks to tadrinth for reporting.<br />
<br />
==== Hacking Improvements Under The Hood ====<br />
<br />
* The List<TechUpgrade> TechsGranted has been removed from ships, as it is now redundant and we are handling things more flexibly.<br />
<br />
* A new in HackingSeed has been added to ships/structures, which will let us give consistent random results (including doing rerolls as needed) without ever having to fear that save-scumming for infinite non-deterministic random reroll will be used.<br />
<br />
* TechUpgrades now support arbitrary tags, like ships/structures do. This is useful for various kinds of arbitrary filtering we might want to do.<br />
** Especially useful for mods that have custom techs and want to make something like a tech-vault that works only for specific subgroups. But really, this has a variety of functions.<br />
** All of the weapon techs now have the tag Weapon.<br />
** The hull techs all have the tag Hull, and then also have either HullStandard, HullTurret, or HullOtherFaction.<br />
** The civilian techs have the tag Civilian, and command station techs have the tag Command, adn defense has the tag Defense.<br />
** The turret hull tech, and the command stations and mobile fort all now have the tag SpecialBonus.<br />
<br />
* Added GetFactionOrNull_Safe() to GameEntity_Base, since we use this sort of thing a lot.<br />
** Also added GetFleetOrNull_Safe() to GameEntity_Squad, for the same reason.<br />
<br />
* On TechUpgradeTable, there is a new SortTechList() method, which lets us sort any list of techs in the same order that it would be in the game sidebar.<br />
** Useful after techs have been chosen from a pool in some fashion.<br />
<br />
* Added a new HackingUtils class.<br />
** There is a static GetDeterministicRandomGeneratorForHackTarget_Threadsafe() on there, where you can pass in a squad that is to be the target of a hack, and it will give you a random number generator that gives you consistent results.<br />
*** The nice thing is that this is also CONTEXTUALLY deterministic, so for instance if there were 5 options before and 1 of them is no longer valid because you already got it all or something, it will give you a somewhat revised set of 5. This is a lot more flexible than in the past, while at the same time not falling prey to save-scumming.<br />
*** This works with the HackingSeed if that has been set to be above 0, or if that has never been set then it uses the PrimaryKeyID of the hacking target.<br />
** Added a new GetListOfTechsValidForFactionFromTag() method, which gets the list of techs from a tag that the faction can currently acquire (has not already maxed them out, etc).<br />
** Added a new StartListOfTechsForTechVaultStyleGranter_ByTag(), which lets us fill a list partially from one tag.<br />
** And added a new AddToListOfTechsForTechVaultStyleGranter_ByTag(), which lets us add to a list from another tag.<br />
<br />
* Hacking_GrantTech has been made abstract, and there is now a Hacking_GrantTech_TechVault implementation for the tech vault for that. Any other hacks that mods or similar want to make out of this can be based on the same new underlying class.<br />
<br />
* The tech vault is now set up so that it will give you options from 2 weapon techs, 1 standard hull type, and 1 special bonus type.<br />
** If there are no weapon types or standard hull types that you can still upgrade (WOW), then it gives you more of whatever the lower categories are.<br />
<br />
* It is no longer possible to hack Tech Vaults to turn them into science. This is basically a way of converting hacking points into science, and that's something that we don't really want to let people have: in multiplayer it is unbalanced, and in single-player... well, it's less unbalanced, but still not great.<br />
** Now that tech vaults give you far more potentially-valuable items, and those items work alongside refunds to techs if you want to, there should always be something worth getting from them -- or if not, they can just be ignored like any other capturable that doesn't fit with a specific campaign.<br />
<br />
* IHackingImplementation now has a WriteAnySpecialDisplayCodeForHackedShipTooltip method that can optionally be filled.<br />
** This is a major new addition that allows any arbitrary hack to write information to the tooltip of ships that can succumb to this hack.<br />
** It literally can write whatever you want, and it even includes what tooltip detail level players are looking at it from.<br />
<br />
* IHackingImplementation now has a GetDoesHackRequireASinglularChoiceFromASubmenu that allows for any hack to specify that it wants give the player an arbitrary list of things to choose one from.<br />
** Then also added AddAllButtonsForSingularChoiceInSubMenu, which allows us to create buttons on the fly as needed for filling the sub-panel.<br />
** HackingUtils now has a CalculateNextBoundsForSingleHackingOption() method, which is helpful for anyone to be able to populate buttons of the correct size from AddAllButtonsForSingularChoiceInSubMenu.<br />
<br />
* Renamed GetClosestHacker to GetPreferredHacker (since that is more accurate now) and moved it to HackingUtils. Did this with obsolete wrappers to not break existing mods.<br />
** Also moved CalculateHackerForHack, CalculateCanDoThisHack, and TryDoHack to HackingUtils. This makes so much more sense in terms of how we need to access this sort of thing, especially now.<br />
<br />
* Fixed it so that when you make a choice from a hacking sub-options menu (as with the ARS in the past, but now also with tech vaults, etc), then it closes the popout choices versus leaving it hanging open.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a bug where the game was thinking there were 1 too many Human Empires for calculating the amount of hacking points that could be gathered per planet.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Put in various fixes for Integer Text Boxes in Galaxy Settings:<br />
** The values now correctly appear in both the actual text boxes and the labels when viewing the settings.<br />
** The settings correctly alter when using Game Commands to change them.<br />
*** Most of this was due to Integer Text Boxes being a "hybrid" between an integer and a string input.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Fixed a number of exceptions that could happen if you were viewing the details of a command-station-style fleet and the command station dies while you are looking at it.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Fixed a seemingly-rare cross-threading exception that could happen in LongRangePlanningData_GameEntity_Squad. This is something that has probably been possible to hit for years, but we only saw our first report of it now, so it does seem quite rare.<br />
** Thanks to Tydorius for reporting.<br />
<br />
* Fixed a few other possible nullref exceptions, at least one of which was hit, in LongRangePlanningData_GameEntity_Squad. It looks like these are more likely to be hit on the latest ultra-powerful CPUs with 8 cores and amazing multithreading, etc.<br />
** Thanks to Tydorius for reporting.<br />
<br />
* Fixed starter fleets showing the wrong number of strike craft. They now correctly apply the 40% boost at mark 1 to their cap that was introduced in recent balance changes.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Fixed a long-standing issue where a negative knockback (= pull) would always pull a ship onto the pull's source, unless the pull was so powerful it would pull the target over the source, in which case it would instead do so of limiting it.<br />
** This only bug if the target had but a single pull in this movement instance.<br />
** It might become a slight nerf the Crusher Turret, but very minor if at all.<br />
** Thanks AGAIN to NR SirLimbo for finding and fixing!<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed AMU throwing an error when starting a new game due to the Hacking Points gatherable per planet being changed.<br />
** Improved FakeFactionExecutor Executors:<br />
*** Actually created the mechanic for Executors of the ExecutorFakeFaction to not cause the entire thread to fail. This was falsely claimed during a previous release, but now actually happens.<br />
*** Executors now also get an ArcenCharacterBuffer passed into their Execute() function to write data into that is dumped on exceptions.<br />
*** Executors also reset when the ExecutorFakeFaction is created multiple times (for example when loading multiple saves in the same game session) instead of potentially accumulating endlessly.<br />
**** Thanks to ArnaudB for wondering why he'd get 11x 3 AIP reduction per 20 minutes...<br />
** Cleaned up AMU's exception logging to be much more clear and better formatted.<br />
** Implemented a great amount of further game settings. In total there are now 43 settings in the Galaxy Settings, most of which can be altered ingame. A few examples:<br />
*** Wormhole Invasion Duration<br />
*** Shark AI plot AIP or strength<br />
*** Multiplayer Hacking Point Scaling<br />
*** Repair Delay After Being Crippled<br />
*** Repair Cost For Hull/Shield/Forcefield/Engine<br />
*** Recloaking Time<br />
*** Maximum Paralysis/Weapon Delay/Engine Stun Time<br />
*** Flagship Speed Multiplier While Hacking<br />
*** Max Ship Lines Per Mobile Centerpiece<br />
*** Brownout Duration<br />
*** ... and many more.<br />
** Created the Severe Brownout mechanic:<br />
*** Essentially, while browning out and still in the red with power any ship or structure the player affected owns may become paralyzed at any time for a random duration of 1-20 seconds.<br />
*** The worse the brownout (based on energy produced and consumed) the worse this gets. However, once the energy balance is positive again this stops even while the brownout is still turning off forcefields.<br />
*** This will also stall until the actual brownout happens, so the "grace period" and "allowed power debt" rules from normal brownouts still apply.<br />
* Extended Ship Variants<br />
** Fixed the Rescue Beacon being auto-demoted in mark by the game due to having no techs. It now counts as a drone frigate, which means it always shares its centerpiece's rank. In addition its health now scales like that of a frigate.<br />
*** Thanks to crawlers for reporting this.<br />
<br />
== Beta 2.728 Full Multiplayer Beta ==<br />
(Released February 5th, 2021)<br />
<br />
* You can give nicknames to (pretty much) any faction, now. Not sub-factions like the warden or whatever, but if you have multiple AIs you can name them, and if you have multiple traders or devourers you can give each one a name, too.<br />
** Thanks to Vic for suggesting.<br />
<br />
* The way that the "closest hacker" is chosen is now completely redone.<br />
** For purposes of previews of hacks, it just chooses a random valid hacker if there are multiple, but it prefers ones that are selected to ones that are not.<br />
** For purposes of actually doing a hack, if you have multiple hackers selected (or no hackers selected and multiple viable ones here), then it will thow up an error window asking you to select one.<br />
** For the distant hacks that are done by your king unit, those don't involve this.<br />
** This whole thing simplifies a lot about hacking, and honestly in most cases you probably won't run into the error. In the cases where you do, just hitting the fleet hotkey or clicking the flagship in question takes care of things.<br />
*** We were thinking about making menus to make you select things, but that was going to get a lot more fiddly what with other hacking menu options being a thing. Instead this handles the edge cases without even getting in your way in cases where there is just one hacker, or one selected hacker, around.<br />
** In the event that you have a normal flagship and a support flagship both selected, it will choose the normal flagship without bugging you, incidentally.<br />
<br />
=== Multiplayer ===<br />
<br />
* The central Balance_HackingPerPlanet, with its balance_hacking_per_planet, has been removed.<br />
** There is now a balance_hacking_per_planet_per_number_of_human_empires, which fills a list of Balance_HackingPerPlanet_PerNumberOfHumanEmpires.<br />
** Instead of this always being 30, it is now 20 with 2 human empires, and 15 with 3+ human empires.<br />
** This was another of those lingering balance issues with multi-faction multiplayer. You wind up taking many more planets in that scenario, so you should still have a good amount of HaP... but not SO much as before.<br />
<br />
* New hotkey: Open Faction Window Without Pausing<br />
** Pressing this button will pop open the 'View /Edit Factions' window without pausing the game. This is extremely useful for in multiplayer, where you may wish to use the controls in there to set up rules for how you interact with other players, gift them metal, or to even switch which faction you are controlling.<br />
** Defaults to F2.<br />
** There is now a tooltip in the escape menu that explains what you can do in the factions window, and which also mentions this tooltip.<br />
<br />
* As with AI War 1, if you hit your metal cap in multiplayer, the metal will automatically spill over to all other human empires.<br />
** This is done in a very simplistic fashion: if there are two other empires, they each get half of whatever your overage would have been (normally your overage is just wasted, recall). If there are three, they each get a third, etc.<br />
** If one of the other empires is ALSO at their metal cap, it does not reallocate their portion of your overage to those not at-cap. Their portion is just tossed away as wasteage.<br />
<br />
* On the player faction screen, there is now a subsection for "Players Controlling." It then has detailed tooltips about what that section is for.<br />
<br />
* In the in-game factions window only, the non-editable settings for a player faction are now shown further down below and have their own subsection shown with an explanation of that. These are basically just for reference, so moving them out of our way is a good idea since this screen is going to be doing more now.<br />
<br />
* When you first open the in-game factions window, it now automatically opens to your faction. This makes it vastly easier to manage your settings related to your faction in multiplayer.<br />
<br />
* Fixed up a couple of edge cases in how other player faction names could appear a bit wrong in some cases in multiplayer. And in general made uncontrolled factions show better names.<br />
<br />
==== Gifting Resources Between Empires ====<br />
<br />
* There is a new "Multiple Human Empires" section of the player faction window that appears when there are actually multiple human empires (in other words, in solo play it doesn't appear, and purely shared-faction multiplayer it doesn't appear, and a human empire and a champion doesn't see it, etc).<br />
** The first line item under this is a dropdown of a gift type, and a gift recipient, and an amount. Any player can actually set up gifting from any human faction to any other in here, but by default you're seeing it for your own faction.<br />
<br />
* The first style of gifting now fully works: one-time metal gifts.<br />
** This lets one faction give a lump sum amount to another faction.<br />
** If the giver tries to give too much, it will just give whatever they have on hand and a message to that effect is shown.<br />
** If the recipient cannot store as much as the giver is trying to give, it will be reduced to the amount they can store, and a message to that effect is shown.<br />
<br />
* It is now possible for empires in multiplayer to gift hacking points between one another.<br />
** This works just like the metal one, essentially, except that there's no max cap on how many HaP a player can store.<br />
** The tooltip notes that science is specialized to each empire and so never can be gifted. That's actually pretty critical for balance, since all the players are getting a copy of the science, so that's not something that will change in the future.<br />
** However, we can definitely see some situations in large multiplayer games where each empire is too poor in HaP to do some hack, but pooled together they can totally do it. Artificially limiting things so that people can't share HaP doesn't seem warranted in light of this. Most everything that you could hack for (fleets, doubled ship lines, new ship lines, etc) can be gifted between players after being hacked-for already, anyhow.<br />
<br />
* You can now set up an ongoing gift of up to 25,000 metal per second from one player empire to another.<br />
** Once this is set up, on the faction screen you can see the record of it, and clear it if you want. You can also just overwrite it with a new gift if you prefer.<br />
** As the tooltip here explains, the gifting is done AFTER all of your other expenses for metal within your own empire, so gifting will never slow down or impede your own direct expenses; gifting will only give whatever it can out of the total you set, after your expenses.<br />
** The math on this all seems to be correct, and seems to show up properly in the metal flows history for both the giver and the recipient, but this is pretty complicated and so if we're actually off in terms of the numbers we show on the UI for the flows, that's probably a display thing. It's hard to be certain if those data points in the flows are at a scale of 1 per second, or 1 per tenth of a second. If the latter, then we're showing the flows from gifting as being 10x too high compared to all the other numbers, but the actual underlying math for how the flows work is correct either way.<br />
** This feature turned out to be... remarkably more robust than we had really been planning on creating. We never had anything remotely so powerful in the first AI War. Gifting metal harvesters or similar back and forth was a huge pain, and there was always a risk to your own production on top of it. This solution is far more user friendly in every respect!<br />
<br />
* The last form of gifting between player empires is another ongoing one: this time it's energy.<br />
** Energy is something that constantly flows and is consumed, so this is very easy to make sure is consistent on the UI. It doesn't have a "per time" element.<br />
** You can send up to 2 million energy from one empire to another, and the setup is just like you would do for ongoing metal flows.<br />
** Also the same as the metal flows, it will ONLY give the energy that you can actually afford. So if you've set yourself up to give 100k to an ally, and your extra energy drops to 50k because you either built a bunch of new stuff or lost an energy producer, then your gifting will drop to 50k during that period. You don't ever have to worry about your energy going negative at all or risking a brownout because of gifting out.<br />
** Energy really wasn't on the list of things that we were going to make giftable in multiplayer for this game, but it turns out it is incredibly useful, and remembering how things were with the first game and trying to share economies in various ways, this is again far more straightforward and safe. The fact that you don't have to take down your gifting rules if your economy tanks is really useful.<br />
<br />
=== Human Resistance Fighters ===<br />
<br />
* Added a new hull tech type, right under Alien: Expatriate.<br />
** Description: Expatriate hulls are unlikely to be something you encounter at all unless you specifically hack certain factions for them. The ships that benefit may be very similar to your own, but there is a difference. Most humans who are not trapped on a planet are already a part of your war effort, but some groups have refused to fully join for various reasons. Collectively, these are the Expatriates.<br />
<br />
* All of the human resistance fighter ships now solely get levels from the Expatriate tech, and not from any other hull or weapon tech types.<br />
** When it comes to any other human-style factions that you can hack to get ships from, we need to make that same adjustment; for all the alien ones, so far we seem to have hit all of them with the Alien tech.<br />
<br />
* The Human Resistance Fighter version of the Assault Frigate is now called the Assault Frigate Defender.<br />
<br />
* The Nucleophilic Defender, Concussive Defender, and Tesla Defender now all start at Mark 2 rather than Mark 1, to be like the rest of the Human Resistance Fighter units.<br />
** These are overall more powerful in the main, true, but shorting them a mark level was confusing at best.<br />
** Thanks to GreatYng for reporting.<br />
<br />
=== Improvements To The Prior Build ===<br />
<br />
* The new popup for science refunds now says 'item' or 'items' depending on whether you have 1 or > 1 things to refund. Also some additional colour has been added to the text<br />
<br />
* The Yes/No order of buttons on most of the confirmation popups has been swapped to be No/Yes, which is now consistent with... all the other interfaces in the game.<br />
** Thanks to Badger for noting that we'd inverted this!<br />
<br />
* The arcen thread manager now still checks for auto-killing threads even if the game is paused, and it spaces out its timing based on realtime and not game time. This probably will have zero effect on anything, but it's more correct.<br />
<br />
* There is a new DoOnPerSecondWhilePausedNonSimUpdates_OnMainThread, which developers and modders can use to do things once-per-second while the game is paused.<br />
** We are now using this to make sure that the totals for the science strength amounts on the tech sidebar update properly even when the game is paused.<br />
** Thanks to Daw11 for reporting how this was not changing unless you unpaused.<br />
<br />
* Added a few new names to the "Standard" planet name list.<br />
<br />
* EntitySimLogic has a new DoPerFrameWhilePaused method that gets called every frame only while the game is paused.<br />
** This lets us do some various per-fleet calculations, such as what the intended mark levels of things are, even when the game is paused, so that things can react to mark level increases and decreases properly without having to unpause.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Fixed an issue where refunding techs was not reducing the mark level of ships until the next time you unlocked a tech, or saved and reloaded, because of some caching happening at the faction level.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* In the fairly-rare cases where a player-controllable ship has a starting mark level higher than 1, we now state what that starting mark level is right next to where the tech upgrades are. Otherwise it seems like a very perplexing bug, because there seems to be no good reason for the ship to be at that higher mark level.<br />
** This mainly applies to ships that you get from Human Resistance Fighters at the moment, but it's something that could come into play with any kind of ship if we wanted it to, since the mechanic does exist and be applied however we want.<br />
<br />
* Fixed several windows, including the science refund, fleet member swap, and fleet gifting screens, so that when you hit the escape key it closes them rather than opening the escape menu.<br />
** This is nice for the sake of consistency, but it also prevents players from existing back out to the main menu while these screens are still open.<br />
** Thanks to Badger for reporting.<br />
<br />
== Beta 2.727 Tech Refunds And Balance Tuning ==<br />
(Released February 4th, 2021)<br />
<br />
* Added to the engineering tech description: Once engineers reach mark 3, they also become cloaked, which is incredibly super-duper useful if you are using engineers in dangerous areas.<br />
** Thanks to Paradox Song for... ahem... reminding Chris this was even a thing.<br />
<br />
* Fixed an issue in the prior build where the AI and other variant MLRS/Fusion turret renames were not carried over. Now all the AI, Ghost, Marauder, etc, turrets all have the proper names.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed a couple of stupid typos that had broken counterattacks for the last while. They were counting down to zero but not actually launching any units. This was unrelated to any wave changes, but rather was just a matter of some typos in some code that we were making cross-thread-exception-safe.<br />
** Thanks to ussdefiant and CRCGamer for reporting.<br />
<br />
* prevents_all_weapons_fire_on_planet has been renamed to creates_ceasefire_on_planet<br />
** Also added a new blocks_ceasefire_on_planet.<br />
** Ceasefire blockages override any and all ceasefires. They basically cut through no matter how many ceasefire-creators there are -- a single ceaasefire-blocker wins over however many ships are trying to create a ceasefire.<br />
** The following ships now have the ability to block ceasefires: Ravenous Shadow, Devourer Golem, Flenser, Planetcracker, and Mothership.<br />
** Thanks to Chthonic_One and Ovalcircle for requesting that the devourer still be able to eat the Trader. This will also lead to some interesting fun with DLC2 later.<br />
<br />
* The game now detects a variety of statuses that should prevent you from swapping ship lines to/from fleets, and now prevents members of those fleets from showing up in swap lists. On the fleet in question, it shows a message explaining what is happening any why you can't do swaps.<br />
** If the flagship is crippled, you can no longer swap fleet members out from it.<br />
** If the flagship has not yet been fully claimed, you can also no longer swap fleet members out from it! That was a problem with items still in the process of being claimed (and even let you bypass AIP costs of golems while looting their ship lines for other fleets).<br />
** Thanks to ArnaudB for reporting.<br />
* XML tags added for additional flexibility to KDL_VanillaRatesOfFire.xml and KDL_VanillaEntries.xml (on-death effects)<br />
<br />
* Added three new window prefabs for various future purposes:<br />
** ModalScrollingContentsOKCancel, ModalDropdownWindow, and ModalTinyTextWindow.<br />
** On their own, these do nothing, but they pave the groundwork for a variety of future functions. Most directly we're going to use them for some hacking game flow options, but in the more distant future they can be used by us or modders for anything, since they're pretty freeform.<br />
<br />
=== Multiplayer: Gifting Fleets/Planets ===<br />
<br />
* In multi-empire multiplayer games, human players can now gift fleets from one to another.<br />
** This works for all kinds of fleets, even those that have not been fully claimed, or which are crippled, etc. Mobile fleets, starting fleets, lone wolves, support fleets, entire planet fleets, whatever.<br />
** The one exception on type of fleet you can't gift is your home planet's command fleet (with your home command station, etc).<br />
** And the one other exception in terms of fleet status that you can't gift is a fleet with a dead centerpiece. This is almost always a planet you used to own but your command station is dead.<br />
** The button for this is directly in the fleet management window, and only appears if there are multiple human empires. If there are only humans sharing one empire, or humans who have an empire and others who have a champion, then this button does not appear.<br />
** This is one of the very last features needed for multi-faction multiplayer to leave alpha status and go into beta status. It's not THE last feature, but it's definitely the most complicated to code. We weren't planning on doing this today, but when working the the ship line swap feature restrictions we suddenly had a clear picture of how this would work, so just knocked it on out.<br />
<br />
=== More Tech Tweaks ===<br />
<br />
* Stingray has been moved out of the Technologist/Exotic tech, and into the Fusion/Breakers tech.<br />
** These hit bubble forcefields, which is a better fit for that tech than the exotic one.<br />
<br />
* Vanguard has been moved out of the Ambush/Opportunist tech, and into Technologist/Exotic.<br />
** This isn't actually a ship that does ambush attacks. It's actually RESISTANT to ambushes.<br />
<br />
* The Pulsar Tank has been moved out of Fusion/Breakers tech and into Ambush/Opportunist, because it gets a bonus when coming out of wormholes, which is an ambush mechanic.<br />
<br />
* The Opportunist tech has been renamed back to Ambush, because that's clear enough.<br />
** The description of the tech has been updated a bit to include the bonus of the pulsar tech in its mentions, too.<br />
<br />
* The Fusion/Breakers tech has been renamed AGAIN (this is why we do a beta), this time to Piercing.<br />
** The new description is: Piercing ships are those like bombers or stingrays, which focus on shields in some fashion. Fusion-style piercer ships (bombers) are able to bypass personal shields of targets and hit hulls directly. Their overall theme is smashing large or shielded targets. The other piercer ships are largely about taking down bubble-forcefields, which bombers get no bonus against.<br />
<br />
* Thanks to Puffin and zeus for discussions on this, and in particular to Puffin for the better slotting of some of these units.<br />
<br />
* The Anti-Shield Pulsar Tank is now a ship that uses Ambush and Piercer techs, rather than Piercer and Heavy.<br />
** We already had some precedents of a variant ship that switched its weapon tech, but now this switches the variants to use the original weapon tech and the new-thematic weapon tech, rather than a hull+weapon tech combo. This helps identify them as outlier variants, which should be a good thing.<br />
** For the sake of consistency, especially since strange variant ship combos are likely to be on the rise in future DLCs and mods, the Stalker now uses Exploitative and Subterfuge weapon techs, rather than having the medium hull tech. (The base Eyebot the stalker is based on uses Subterfuge and Medium).<br />
** Paralyser, similarly, now uses Subterfuge and Piercing rather than Subterfuge and Light hull. This is a variant of the Stingray that also causes paralysis.<br />
** If there are other ship cross-combos that seem like they should have two weapon techs, please let us know and remind us. The hope is that this will make it really clear that this is a crossover unit that is part of two categories rather than just one.<br />
** Thanks to Puffin, zeus, and CRCGamer for reporting on these.<br />
<br />
* Parasitic Fusion Bomber now uses Exotic and Piercing techs, rather than Piercing and Medium.<br />
** Parasitic Pike Corvette now uses Exotic and Disruptive techs, rather than Disruptive and Medium.<br />
** Mugger now uses Exotic and Piercing techs, rather than Piercing and Heavy.<br />
** Thanks to CRCGamer and cml for bringing up these ships.<br />
<br />
* Exploitative has been returned to the name Disruptive, since that is clear enough especially with the tech description now.<br />
** Same with Close Quarters being renamed back to Melee.<br />
** Thanks to cml and others for weighing in on this.<br />
<br />
* The fourth tutorial has been updated to use the (current) proper names of the techs you need to upgrade.<br />
** Thanks to Puffin for reminding us.<br />
<br />
* Generalist/Mainline tech has been renamed to Core.<br />
** New description: Core ships tend to be all-rounders that are for the 'line of battle' or for screening purposes. Conventional armaments of ballistics and simple directed energy weapons aren't particularly flashy but they get the job done. Ships using these systems are great at supporting or becoming the backbone of effective fleets.<br />
** Thanks to Chthonic_One, CRCGamer, Metrekec, and cml for the discussion and wording this time.<br />
<br />
* Moved the Tackle Drone Launcher Frigate from Exotic to Disruptive.<br />
<br />
* Moved Sentinel Gunboats and Veteran Sentinel Gunboats from Exotic to Core.<br />
<br />
* Moved 'Ranger' Sentinel Gunboats from Exotic to Subterfuge.<br />
** May add new thing for these. Need to see if possible.<br />
<br />
* 'Nanoswarm' Auto-Bombs benefit from both Exotic and Melee, rather than Heavy and Melee.<br />
<br />
* 'Bounty Hunter' Raid Frigates benefit from both Ambush and Raid, rather than Light and Raid.<br />
<br />
* 'Fusion Saw' Metabolizing Gangsaws benefit from both Piercing and Melee, rather than Heavy and Melee.<br />
<br />
* 'Barnacle' Metabolizing Gangsaw now benefits from both Subterfuge and Melee, rather than Heavy and Melee.<br />
<br />
* 'Aggressor' Agravic Pod now benefits from both Ambush and Disruptive, rather than Ambush and Medium.<br />
<br />
==== New Ship: Ambush Carrier Frigate ====<br />
<br />
* Add the 'Ambush Carrier Frigate', to give Ambush tech a bit of a boost, as well as its first Frigate type.<br />
** Thanks to CRCGamer for contributing from his mod in order to help round this out!<br />
<br />
==== Balance Tweaks ====<br />
<br />
* Vanguards and Vanguard Hydras now have an acid effect.<br />
** Their base damage is reduced, so their total output is the same with the acid accounted for.<br />
<br />
* Acid effects can now scale with Mark level.<br />
** damage_amplification_flat_added_per_mark="10" as an example.<br />
** This scaling is applied to Acid Turrets and both Vanguard types.<br />
<br />
* Logistical command stations normally give a 3.5x speed boost to all allied ships on their planet. They previously gave an addition 0.5x speed boost to ships per added mark level (so mark 3 was 4.5x speed boost). Now they give a full 1.0x per mark level (so mark 3 is a 5.5x boost).<br />
** Additionally, the description of the command station and of the tech for logistical command stations now make mention of this speed boosting effect directly.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
* Hacked Dark Specters now give you 4 ships rather than 1.<br />
** Thanks to CRCGamer for pointing out how overly harsh it previously was.<br />
<br />
* The three types of Dyson ships that you can hack for now all use the alien hull tech rather than light or medium. They already had no weapon tech.<br />
** They also now have a max mark 7 level of 7 rather than 4.<br />
** And lastly, the Bulwark now grants you 4 ships rather than 1.<br />
** Thanks to CRCGamer for bringing this up.<br />
<br />
* Grenade Launcher Corvette is now Medium hull instead of Heavy, armor reduced from 110 to 70, speed increased from 600 to 800, damage increased 20%, range increased from 4,200 before lobby range slider, to 6,500 before lobby range slider.<br />
<br />
* 'Molotov' Grenade Launcher Corvette is now Light hull instead of Medium, armor reduced from 70 to 50, speed increased from 1,000 to 1,600, same damage and range increases as the Grenade Launcher Corvette, greatly increased its engine-stun and weapon-jam effects, including increasing the available "range" to work up to engine below 14, and armor below 70.<br />
<br />
* MLRS Corvette is now Medium hull instead of Heavy, armor increased from 50 to 70, speed increased from 600 to 800. <br />
<br />
* 'Harasser' MLRS Corvette speed increased from 1,000 to 1,600.<br />
<br />
* Viral Shredder speed increased from 700 to 1,000, damage increased 50%, slightly increased replication rate on top of this.<br />
<br />
* Vampire Claw and 'Absorber' Vampire Claw health increased 33%.<br />
<br />
* 'Absorber' Vampire Claw is now Medium hull instead of Heavy, is now the same speed as a normal Vampire Claw.<br />
<br />
* Swapped the health of the Pulsar Tank and 'Punk' Pulsar Tank around.<br />
<br />
* Pulsar Punk is now Medium hull instead of Heavy, armor reduced from 120 to 70, speed increased from 500 to 800, now has temporary speed bonus upon entering a planet like Raiders.<br />
<br />
* Replaced the Ion Disruptor Frigates weapon. It is now closer to the base Siege Frigate, with 66% of the total damage, hitting up to 20 targets. Has an inverted knock-back effect, pulling enemies together for other area attacks. Still has some paralysis effect. No longer has any targeting restrictions.<br />
<br />
* Siege Frigate and its two variants (Devastators, Ion Disruptors) now benefit from Medium hull rather than Light. Armor increased from 40 to 70.<br />
<br />
==== Astro Trains ====<br />
<br />
* Shifted Astro Train project requirements:<br />
** Dire Guardian from intensity 7 to 6.<br />
** Hunter Killer from intensity 8 to 7.<br />
** Fenrir from intensity 5 to 8.<br />
** Shellshocker from intensity 6 to 8.<br />
** Custodian from intensity 7 to 9.<br />
<br />
* Altered descriptions of the prototypes to be prototype variants of the Extragalactic units, rather than Guardians.<br />
** Fun fact: Some of the Extragalactics are based on the prototypes, originally as kind of a...working concept to be used, but worked well enough.<br />
** They are notably weaker than their children now, and thus are getting upgrades and a kind of revamping into being the...prototypes of the thing *ABOVE* their equivalent, which makes more sense than the AI building prototypes of things it has already started making a bunch of.<br />
** This has the exception of the Custodian, which is being rethemed as a smaller, more easily distributed Thunderchild, due to being otherwise too high a tier to use.<br />
** The prototypes were all generally themed on some kind of boss, excluding Umbra which is just based on an interesting word, and Shellshocker which has no base. Their upgrades generally attempt to go further into the theme.<br />
<br />
* Swapped models of prototypes to their equivalent Extragalactic.<br />
<br />
* All of the Prototypes (excluding Custodian, which was already granted directly to the Warden) are now granted directly to the Hunter Fleet.<br />
** Thanks to ArnaudB for mentioning something that led to this.<br />
<br />
* Fenrir prototype now has 15 Million health, up from 6. Beam weapon retooled from single target high damage beam, into a focused 'fan' beam, with no target limit and a faster fire rate, but lower damage. Now has a 'Flak Battery' weapon.<br />
** Drones are currently the same.<br />
<br />
* Reanimator prototype now has 30 Million health, up from 6. Now has a 'Reanimation Blast' weapon. Drones damage increased 400%.<br />
<br />
* Removed the drones from the Umbra prototype - no models for it. Bit strange with a majorly cloaked unit regardless, it being possibly revealed but still spawning super cloaked drones.<br />
<br />
* Fixed Umbra prototype decloaking in a single salvo.<br />
<br />
* Umbra prototype now has the 'Fires Through Forcefields' mechanic. Now has the same weapon of the Poltergeist. Now has 15 Million health, up from 6.<br />
<br />
* Shellshocker prototype now has 30 Million health, up from 6. Has the same damage output as the Wyrm, but spread out among more shots. Now does more engine-stun and weapon jam (immediately hits its cap).<br />
<br />
* Custodian now has the attack and speed bonuses from the Thunderchild, as well as its tesla weapon (but weaker). Health increased from 7 Million to 45.<br />
<br />
* Warspite and Warspite Artillery now have 15 Million health, up from 9 and 2.5 respectively. Artillery component now has AoE on its weapon, with no target limit. 'Hidden' component overall damage condensed into fewer shots, then overall DPS increased over that.<br />
<br />
* Ravenous Shadow now has 60 Million health, up from 39.5. Now has the same damage as the Devourer Golem, a slight bit of Vampirism, a minor speed increase, and a small range increase.<br />
<br />
=== Tech Refunds ===<br />
<br />
* The tech history no longer has a note at the top of it that says it is a WIP.<br />
<br />
* It is now possible, under the hood, for us to refund techs and fleet upgrades and give back the science. These now properly show up in the tech history, including the total science spent.<br />
<br />
* When you gift a fleet to another player in multiplayer, any science upgrades that were applied to it are refunded to you.<br />
<br />
* Player ships are now the appropriate mark level of whatever their techs and fleet upgrades say they should be.<br />
** Previously, they were whatever they were set to be only if that was higher. But now that we can refund science, and transfer ships between fleets, that sort of logic no longer works.<br />
** This should be perfectly fine unless there is some faction (in a mod maybe?) that is granting a player a ship that is supposed to be randomly at a higher mark despite not having the techs to back it up (and not based on a min_mark_level on the ship). In that sort of scenario, the saves will now drop the ship down to the level it was supposed to be based on its min mark level and whatever tech and fleet upgrades there are.<br />
*** We're not actually aware of any such cases, so probably it's all fine. But it's an edge case that could theoretically affect a mod or an old faction.<br />
** What this also means is that when you swap fleet lines between players, or gift fleets, you'll potentially see mark levels either rise or fall based on the techs and upgrades of the recipient. Science and hacking points are both resources that aren't giftable between players.<br />
<br />
* Added a new AlternativeHeightToUseInAutoSizing that were are now able to use to make non-uniform button heights where needed in lists of buttons on places like the left hand sidebar.<br />
** Also added a new ExtraSpaceBeforeInAutoSizing and a new ExtraSpaceAfterInAutoSizing, which allows us to put uneven gaps between items in a list.<br />
<br />
* The tech sidebar tab now has extra spacing between groups of techs, to help visually differentiate them. The overall spacing between other items is also slightly smaller.<br />
<br />
* The tech sidebar tab now also has an extra button all the way at the bottom, which is shorter than the rest, and which says "Retrieve Spent Science."<br />
<br />
* At the top of the new "tech refunds" screen, there is an "Explanation, Please" button that you can click for a detailed lore report from engineering. This is a pretty lengthy narrative lore dump!<br />
** Thanks to cml for requesting that we explain the mechanic. Having lore details in place throughout the game, particularly as they relate to gameplay, is always a goal of ours. Often it's hard to find enough space to write out a full explanation if it's not in the wiki or the lengthy tips section, but this button provides a really easy access point for this one.<br />
<br />
* On the retrieve spent science window, you now see a list of all of the techs that you have actually invested science into, with how much science goes along with each.<br />
** You can click on these to toggle them to be refunded, or leave them as "keep as-is."<br />
** The tooltips for these have been adapted to show just how much ship cap you are about to lose, and how much strength you will lose.<br />
<br />
* Fixed a longstanding issue with upgrade tooltips not showing certain numbers because the ship caps were not explicitly set, and so it was using negative numbers rather than the number of ships you actually had.<br />
<br />
* Added a new custom_hacking_display_string_instead_of_name, custom_hacking_display_string_includes_related_string, and custom_hacking_display_string_includes_related_int on hacking types.<br />
** This allows us to do custom entries that read differently from normal.<br />
** An example usage is Retrieved {RelatedInt} Science From {RelatedString}.<br />
<br />
* The retrieve science window now:<br />
** Includes all the fleets you've invested into.<br />
** Shows those fleets by type, and with colors for each type for easy reading.<br />
*** This also includes tooltips for them, and the ability to C-click them, and oh man there's so much UI depth in every aspect of this, good grief.<br />
** Shows the total accumulated science you will get back in the top bar.<br />
** Shows the total cost of hacking points you will spend on the Ok button.<br />
** Gives you a confirmation popup, or various appropriate error popups if you've made no choices yet or can't afford the choice you made.<br />
** The confirmation popup explains that there is now way to get back spent hacking points, as they are gone forever.<br />
** It sends out a series of gamecommands to actually execute the science retrieval in for each chosen entry.<br />
** The cost right now is a linear 2 HaP per line of stuff refunded, regardless of how many times a line was upgraded. If we later need to do more, we can, and if we need something like a cooldown period on refunds we can also do that. But the hope is that there are compelling-enough places to spend HaP that this is a self-limiting problem inherently.<br />
** And finally, the hacking log now also includes the full details of the hacking points spent in this way, even though they are not traditional hacks.<br />
** We also made a new hack that we load from xml to get the costs and display info for this, and a new Hacking_NullHackHandler that anyone can link against for odd cases like this where a hack is handled manually but needs to be logged like any other hack.<br />
<br />
==== TLDR ====<br />
<br />
* Thanks to Badger for inspiring the addition of re-speccing in general, because with all these tech changes in this build we really don't want to irrevocably break people's games. The ability to re-spec is needed from that angle alone.<br />
** But beyond that, this is actually a really major thing that we realized is missing in this game in general, leading to players hoarding science throughout the game, or feeling "hosed by the RNG" later if they are playing on a high level and did not get lucky, or feeling like they need to reveal the map early and plan their entire game out from moment one.<br />
** The flow that we'd rather have is people spending in the moment, and having to manage AIP and HaP as their long-term irreversible costs. The ability to fiddle with your fleet composition, and what is stronger or weaker, is kind of at the core of a lot of the fleets system in general. And since you can't possibly know everything that might be available to you out there in the fog of war, it's only natural to want to be able to rework your empire's design as it grows from the early game into the midgame and late game.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Each player faction can now set a starting amount for metal, science and hacking. By default these are exactly the same as in Vanilla right now, though they can be set higher and lower.<br />
*** Note that setting higher-than-normal amounts will result in achievements becoming locked due to cheating.<br />
*** Setting negative starting AIP (= starting AIP reduction) or triggering negative AIP (NOT merely setting it so) per interval (= AIP reduction over time) will now also disable achievements.<br />
** Updated AMU's description and scource code.<br />
** Fixed a nasty bug with Fireteams based on the SmartFireteamedFactionImplementationBase inside FireteamMaintenance()<br />
*** When "attacking" planets the Fireteams now check whether or not they outnumber the enemies at the target by at least 1.5:1 before declaring the order unnecessary and resetting the targeting.<br />
**** This effectively stopped Marauders from helping out planets they owned but were under attack, no idea how that ever worked...<br />
**** For this purpose created IsOutnumberedOn(Planet planet, FInt outnumberedBy), which does what it says.<br />
*** Fireteam targeting will no longer wrongfully use the lurk planet as current target for individual ship movement. This is another case of no idea how that ever worked...<br />
*** If fireteams already have arrived on the lurk planet or are ready to attack, the target is adjacent and Marauders are not outnumbered there the individual ships now should immediately attack it. This is to save time, especially when defending, with Fireteams not waiting to gather up before the attack.<br />
*** Thanks to ussdefiant60 for a save that demonstrated the bugs, and leading to the adjustments.<br />
* AMU, Kaizers Marauders<br />
** Rejigged a lot of logic on how the GlobalImportantRollupHolder and External Data are loaded, so that even at the very first sim step the data already is there in its entirety.<br />
*** For this purpose created an abstract InitializeExternalData() method in SmartFactionImplementationBase that is automatically called by OnDeterministicThreadOnly_DoInitialLogic(), which itself is automatically called by DoOnLocalStartNonSimUpdates_OnMainThread(), which automatically calls GlobalImportantRollupHolder.Initialize().<br />
*** SmartFireteamedFactionImplementationBase will additionally call the new abstract LoadFireteamValues() can be used to set min and max base fireteam sizes, but does not demand doing so.<br />
**** The effect of this is that the initiailzation of data is now mostly handled at the moment the galaxy is created and no longer when the game is unpaused. The initial lag spike when a save is loaded for the first time, or when a new game is started thus no longer happens then, but during loading of the factions - whenever that may be.<br />
**** End result: Better handling of data, less lag after unpausing, potential new bugs.<br />
<br />
* AMU now fully supports DeterministicExecutors for launching simple scripts of any kind on game session start and mapgen.<br />
** They have already been secured against individual errors, even if one of the executors in the middle errors out the others will at least attempt to run through properly.<br />
** Planetary science and hacking points are now re-set on game session start. This fixes the amounts getting stuck on wrong numbers when restarting the game, loading saves or creating new games with other settings.<br />
<br />
* More System Defenders 1.21 by CRCGamer - Escorts & Vanguards<br />
** Most recent changes:<br />
** Ambush Carrier removed after donation to base game. Mod still enables station-keeping and AI guardian variants however.<br />
*** Note from devs: special thank you to CRCGamer for this! This helps round out a base-game tech that otherwise had too few things in it.<br />
** Escort Carrier and AI guardian variant reworked. Now has a parasitic main weapon and deploys Vanguard drones instead.<br />
** Because of the recent tech swaps of certain strikecraft in the base game the previously used Stingray drones are now deprecated.<br />
** Because of the more significant combat effectiveness of the Escort Carrier with said changes ARS and random Fleet counts normalized from 9 to 6.<br />
** To offset the overall reduced ship count the durability of the Escort Carrier is raised by about ~20%. Metal cost raised from 65K to 75K.<br />
<br />
* AMU:<br />
** All Factions basing their Stage 0-3 and LRP threads off the SmartFactionImplementation will now gracefully handle ThreadAbortedExceptions instead of throwing errors.<br />
<br />
=== Pathfinding Performance ===<br />
<br />
* FindPath() is being retired and replaced by FindPathFreshOrFromCache().<br />
** This latter returns a new, cached, PathBetweenPlanetsForFaction objeect rather than just a list of planets.<br />
** If a programmer alters that list of planets after they get the object, they need to be stoned lightly because it will break all sorts of things.<br />
** The idea here is that we are calculating paths way too frequently, often thousands of times in a single second, and most of the paths we are calculating are the same during that span.<br />
*** This is very true for things like checking the danger of a path (for some of the pathfinding variants), as well as for fireteams in general, as well as for ships that are undergoing fleet movement orders of certain sorts.<br />
** This overall change should lead to a dramatic improvement in performance in a number of areas of the game, but mostly in the background AI processing for factions.<br />
** The old FindPath() method is still there, so existing mods will still work, but it's been marked as obsolete so that mods will need to update to the newer, more efficient methods before they can be properly compiled/updated by the mod author for a new version.<br />
** Also added a new PathfindingCacheForFactionOnContextObject that gets cached on ArcenSimContext, so that we can have thread-safe separate caches per context per faction (main sim, long term planning, whatever).<br />
** In our innermost calculations for finding paths, we are also now reusing lists better, and we are using the [ThreadStatic] attribute for the first time in this program. This turns out to be extremely useful, and we just recently learned about it: https://docs.microsoft.com/en-us/dotnet/api/system.threadstaticattribute<br />
** Additionally, even if the number of paths generated was the same (it's very much not), we're also now saving a lot of transient GC allocations, which is nice.<br />
** Note to modders: if you were using FindPath, generally you are now using FindPathFreshOrFromCache(). This gives back a PathBetweenPlanetsForFaction object with a PathToReadOnly on there, and you should ONLY read from it, not ever alter it. <br />
*** It is also possible for it to give back a null PathBetweenPlanetsForFaction object, so you do have to check for that now (that generally means an invalid pathing attempt, or already at the target, etc, and is there for efficiency's sake.)<br />
** Another note to modders: if you were getting a pathfinder directly and then trying to call FindPath on the pathfinder... that's really something to be avoided, now, because it won't cache at all.<br />
*** To work around that, you can call InnerFindPath_RawSinglePathfinder() and pass in the info as well as the pathfinder of your choice, and you'll get back either a populated PathBetweenPlanetsForFaction or null, all of it cached properly and thus more efficient.<br />
*** There's nothing that will FORCE you to use pathfinders this way -- you just can switch to passing in a list of planets to be filled rather than just getting one in return -- but unless you are absolutely positive that this pathfinding call gets called less frequently than once every few seconds, you really should use the cached versions.<br />
** In the escape menu, at the bottom of the performance section, we can all now see the number of path recalcs, and the number of paths from cache.<br />
*** For reference, in a fairly large savegame with a fair number of late-game factions (5 hours in, near the end), running the game for about 20 seconds leads to 1200 path recalculations, and 4500 path pulls from cache. Each pathing call is pretty intense, and this is not remotely the most expensive scenario we have around, so this is a huge potential boost in performance, especially for older CPUs.<br />
**** In the case of certain other savegames that we saw logs of, where the Hunter fleet thread was getting terminated for taking more than 30 seconds (yikes!) to do its work, it will be interesting to see what these numbers are like and if that is no longer a long-running thread. Either way, these performance improvements are worth it. But if not, then we can use that specific savegame to do some testing and tune things different ways for the hunter specifically. <br />
** Thanks to Lightjolly for the report.<br />
<br />
* Fixed some bugs with outguard using the wrong variable to do things like check if they are able to get to a planet from where they are now. No idea how impactful the bug was, but it's fixed now.<br />
** Fixed another exception that could happen in the fallen spire if it was unable to path to a king unit, or had a path shorter than 1 hop to a king planet. Not sure anyone ever hit that, either, but it was also busted.<br />
<br />
== Beta 2.726 Tech Tuning ==<br />
(Released January 30th, 2021)<br />
<br />
* MLRS Turret has been renamed to Fusion Turret.<br />
** This was in the Fusion tech already, while MLRS Corvettes are in Splash.<br />
** To make this fit better, the range of the fusion turret has been increased a small bit, the damage doubled, shot count halved from 10 to 5, and it now does 80% damage through personal shields.<br />
** New description: Built for hitting small groups of ships or structures, ideally those that are large and shielded. Strikes past personal shields to do direct hull damage.<br />
** Thanks to Chthonic One for suggesting.<br />
<br />
* Problem is, in DLC1 we already had a Fusion Turret, but that was not actually firing through shields, which is what fusion damage is. So that was already kind of mis-named.<br />
** This turret is now called the Dispersion Turret (after its Disperser Bolt weapon).<br />
** This turret already does a lot more damage to ships with personal shields, but does not cut through them at all.<br />
<br />
* Revised some of the code around getting the tooltip text for ships/structures to use bitwise flags rather than a simple enum. This lets us make more complicated requests to it for various purposes.<br />
** When you are going to hack something to get a ship line, and that hack would cost you AIP (as with an FRS), the tooltip for each option now shows you the AIP cost that you would incur.<br />
** Previously, the only way to see this AIP cost was on the tooltip for the structure you would be hacking!<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* The warning notification at the top of the screen for the devourer golem(s) now actually shows the text "devourer golem" directly on it.<br />
<br />
=== More Tech Name Tweaks ===<br />
<br />
* After discussion on our new naming_and_balance section on our discord (https://discord.gg/snQBW4g9Gr), the following further changes are being made to tech names:<br />
** Atomic/Fusion tech is being renamed again, this time to Breakers.<br />
*** Reasoning: the name fusion was not liked because it implied all were fusion weapons, which they were not. The name atomic was a bit on the unclear end for various reasons, and just felt thematically off. Breakers as a concept actually describes what these ships do.<br />
*** Revised description: Breaker ships tend to be very powerful for whatever their size is, but can be expensive. Many of the tanks and bombers are in this category. Many, but definitely not all, breaker ships are able to bypass personal shields of targets and hit hulls directly. Their overall theme is smashing large or shielded targets.<br />
** Disruptive/Contravention is being renamed to Exploitative (only downside is that this seems pretty similar visually to Exotic).<br />
*** Reasoning: both of the old names were a bit on the odd or generic side. These ships overall are about countering other ships, but another way to look at it is that they are built around exploiting weakness of other ships in unusual ways.<br />
*** Revised description: Exploitative ships vary a lot, but all counter something. Some counter very low-armor ships, others counter very high-armor targets. Others use weapon jamming or tractor beams to prevent enemies from acting. They are all about exploiting unusual weaknesses.<br />
** The Raid/Blitz tech has been renamed back to Raid.<br />
*** Reasoning: this is clear, visually distinct as a word in the list of other techs, and does not have any unfortunate historical connotations.<br />
** The Generalist tech has been renamed to Mainline.<br />
*** Revised description: Mainline ships tend to be all-rounders that are for the 'line of battle' or for screening purposes. These tend to be an excellent backbone for a powerful fleet, anchoring it with solid firepower and reasonable defenses.<br />
*** Reasoning: these are either screening ships or "ship of the line" or "wall of battle" or "line of battle" ships. We could have just gone with "Line" instead of "Mainline," but then talking about "ship lines" would become an Abbott and Costello sketch. Generalist was so vague and boring that it was hard for anyone to follow.<br />
** Splash/Area of Effect ships have been returned to the name Splash.<br />
*** Reasoning: splash is clear enough, visually distinct, and single-word. Area of Effect is too long for many places it would be shown, and the acroynm AOE is potentially confusing.<br />
*** Revised description: Splash ships are usually meant for crowd control, or hitting lots of targets in either a focused beam or area of effect. This might be shrapnel damage in an area that shreds low-armor targets, or it might be massive electrical discharges with various effects.<br />
** Mobile Orbital Fortifications have been renamed to Mobile Fort, because the other name fit in no windows.<br />
** Thanks to Captain, Tim_Fragmagnet, Rifi, cml, tadrinth, CRCGamer, CRZgatecrusher, Zdrgn, Ozone, Isiel, DEMOCRACY? DEMOCRACY!, and -NR-SirLimbo for weighing in on this round. We expect there might be a few more rounds in the short term as people get a feel for this.<br />
<br />
* Techs are now sorted by their display name instead of their "internal name" so that we're sure that they are always alphabetical when name changes happen in a subcategory of them.<br />
<br />
=== Mod Updates ===<br />
<br />
* CRZgatecrusher's "The Reprocessers" mod updated to make targeting homeworlds super unlikely)<br />
<br />
* More System Defenders v1.20 by CRCGamer now included:<br />
** Most recent changes:<br />
*** Station-Keeping ships have had their techs remapped to match the changes with base station keeping ships of being Station-Keeping mono-tech.<br />
*** Artillery Cruisers can be found in the wild rarely. You are allowed a pair of them at economic and military commands (so swaps don't suddenly eat 900K metal)<br />
*** Flypaper Frigates are only found in the wild and are no longer provided immediately due to the nature of station-keeping ships being mono-tech.<br />
*** The Gorgon frigates have been removed from the economic command as a default and moved to military. They can still be found in the wild to unlock for all.<br />
*** Cruise Missile Battery paralysis weapon timer reduced to 17 seconds from 30 to match AI version. Frankly the uptime on the CC was too poor.<br />
*** Augmented Artillery Cruiser AIP cost from FRS reduced to 30 from 50 since most fleet ships now don't use shields (and they buff shields).<br />
*** Several ships AOE radius improved by 100-200 to more reliably hit full target allotment.<br />
<br />
== Beta 2.725 Techs, Metal, Energy And Ceasefires ==<br />
(Released January 29th, 2021)<br />
<br />
* Fixed a divide by zero exception that could happen in Helper_SendExoGalacticAttack_SingleExoTarget() when no units were actually being deployed.<br />
** Thanks to ussdefiant60 for reporting.<br />
<br />
* If an exception happens when checking for whether an order is valid or not on a multiplayer client, it will just assume the order is invalid and get on with things without throwing an exception. If it happens on a host or in single-player, it will now give a bit more information before doing the same.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
=== Limiting Coprocessors ===<br />
<br />
* Coprocessors are a form of AIP reduction that reward you for destroying all of them, but penalize you in the short term if you only do some of them.<br />
** These give a bit too much power in terms of AIP reduction in average games with only a single AI. The original balance of these was really more based around AIWC, where there were always two AIs.<br />
** Starting with new games in this build, Coprocessors will only seed if there are at least two AI factions that are hostile to the first player (and, continuing with rules from the last while, also only seed if there are 3 or fewer human empires in a multiplayer game).<br />
<br />
=== Metal Storage Improvements ===<br />
<br />
* Added a new added_metal_storage_per_mark_level, which lets us give more metal storage to higher-mark versions of ships that give you metal storage.<br />
<br />
* Home command stations continue to give 2.5m base metal storage, but now give 500k extra metal storage per mark they are upgraded.<br />
** All other command station types used to give a flat 300k metal storage, but that's no longer the case.<br />
** Economic now gives 300k, plus 100k extra per mark level.<br />
** Logistical now gives 600k of storage, plus 300k extra per mark level.<br />
** Military now gives only 50k of storage, and another 50k per mark level.<br />
** The spire mining facility in DLC1 continues to grant its base 1m extra metal storage, but now also gives an extra 100k per mark level upgraded.<br />
** Also!? The added metal storage amounts are now actually shown in tooltips for the first time.<br />
<br />
=== Brownout Refinements ===<br />
<br />
* The mechanics of brownouts has been made a lot more flexible, to avoid some of the "temporary accidental" situations that people were running into.<br />
** Previously, brownouts would start immediately as soon as you had a negative energy balance, and they would last for 60 seconds after power was restored.<br />
** Now you can run up to a -50k energy deficit with no ill effects.<br />
** Additionally, you have to run below -50k energy for at least 10 seconds straight before a brownout begins.<br />
** THAT said, it now will last for 2 minutes rather than 1 minute after you restore power to at least -50k.<br />
** We may need to explore more warnings to players during the 10-second period if they have gotten into the situation of being about-to-brownout, but it may not be an issue since most things that "put people over by a little" will still put them over by less than 50k. So that would prevent further building, and let people realize they need to build more energy.<br />
*** In the event of a sudden dramatic energy loss, such as a command station, it's very likely that a brownout is unavoidable without deleting a ton of turrets and such, and we don't really want to give people a warning too much with this case. We're trying to avoid fluctuations causing forcefield outages, not an early warning system for players to pause and delete stuff after they lose a command station. Some will use it that way, which is probably fine, but let's see how this does.<br />
<br />
=== Ceasefire Mechanics ===<br />
<br />
* Added a new ability for ships: prevents_all_weapons_fire_on_planet="true"<br />
** CEASEFIRE: Prevents all units from firing weapons while it is on a planet with them.<br />
** This ability has been granted to the Zenith Trader.<br />
** Expect to see some more of this with a new unit in DLC2, as well!<br />
** Thanks to Leif, Tim_Fragmagnet, StarKelp, Chthonic_One, Kendrickorium, and Isiel for the discussion that led to this.<br />
<br />
* A notification at the top of the screen is shown if a planet is under a ceasefire, and either 1) you have ships there, or; 2) you or another human player own the planet.<br />
<br />
=== Tech And Metal/Energy Income Updates ===<br />
<br />
* There is now a description field on techs, which lets us give explanations about them.<br />
<br />
* The Metal Generation tech has had its per-unlock cost reduced from 4k for each of three levels to instead 3k for each of three levels.<br />
** It also now has the following description:<br />
*** Early on, consider directly upgrading your home command station fleet (from the fleet sidebar tab) for stronger gains. The metal generation tech is more effective when you have a lot of planets.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Previously, Metal Harvesters gave 60 metal per second at mark 1, plus 30 per mark as they went up in levels.<br />
** They now give 75 and 50, respectively.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Command: Economic tech new description:<br />
** Useful when you have a lot of this kind of command station. Alternatively, consider investing directly in the fleet of each planet (fleet sidebar), since that also upgrades metal harvesters and turrets located there. This tech improves ALL of your economic command stations, primarily with more metal and energy and a bit of extra sturdines.<br />
** Costs adjusted down from 4k each for the first 3 mark levels, to 3k each instead. Fourth mark level remains 4k.<br />
** Thanks to zeus for helping figure out what to say here.<br />
<br />
* Command: Military tech new description:<br />
** Useful when you have a lot of this kind of command station. Alternatively, consider investing directly in the fleet of each planet (fleet sidebar), since that also upgrades metal harvesters and turrets located there. This tech improves ALL of your military command stations, primarily with more attack strength and hull health.<br />
** Costs left alone for now.<br />
** Thanks to zeus for helping figure out what to say here.<br />
<br />
* Command: Logistical tech new description:<br />
** Useful when you have a lot of this kind of command station. Alternatively, consider investing directly in the fleet of each planet (fleet sidebar), since that also upgrades metal harvesters and turrets located there. This tech improves ALL of your logistical command stations, with a mix of economic and military benefits.<br />
** Costs cut in half to 1.5k science for the first two marks, and left the same at 3k for the next two after that.<br />
** Thanks to zeus for helping figure out what to say here.<br />
<br />
* Metal generated by economic command stations moved from 250 base and +100 per mark to being 250 base and +200 per mark.<br />
** Energy generated by economic command moved from 400k base and +100k per mark to being 400k base and +200k per mark.<br />
<br />
* Metal generated by military command stations moved from 20 base and +20 per mark to being 60 base and +40 per mark.<br />
** Energy generated by military command stations adjusted up from 20k base and +5k per mark level to 40k base and +20k per mark level.<br />
<br />
* Metal generated by logistical command stations moved from 60 base and +20 per mark to being 120 base and +80 per mark.<br />
** Energy generated by logistical command stations adjusted up from 200k base and +50k per mark level to 250k base and +100k per mark level.<br />
<br />
* Science and hacking points of logistical command stations is now 10 per second rather than 2 per second like the other command stations.<br />
** You still get the same amount, but you get it faster now. This makes logistical a better choice for a place you don't plan to keep long.<br />
<br />
* The "Citadels" tech has been renamed Mobile Orbital Fortifications, and now applies to Battlestations again (not just Citadels).<br />
** Thanks to "Z" for suggesting the name, and ArnaudB and loads of other people for suggesting that battlestations get this again.<br />
** New description: Upgrades any battlestations or citadels you may have or acquire. These structures allow you to build extra defensive turrets, mines, etc on either your own planets or as a 'beachhead' on enemy planets.<br />
<br />
* The "Forcefields" tech has been given the following description:<br />
** Upgrades all bubble forcefields that you are able to build at your various command stations. Also improves mobile bubble forcefield generators (Forcefield Frigates, etc).<br />
** Thanks to Z for suggesting.<br />
<br />
* New Minefields tech description:<br />
** Minefields are constructed by either command stations, battlestations, or citadels. They are not super common, so you may only want to invest once you are sure you are going to have them.<br />
<br />
* The "Sentries" tech has been renamed to "Station-Keepers"<br />
** The Station-Keeping Assault Frigate and the Station-Keeping Watchman Frigate both now benefit from the Station-Keepers tech instead of other random techs. The Sentry Frigate already used this tech.<br />
** Alien station-keepers that you can capture for now do not use this tech. For station-keepers added in mods, they may or may not use this tech (that's up to the modder). But our intent would usually be that they do at least partially.<br />
** New description for this tech: Station-Keepers are typically mobile frigates that are bound to the gravity well of a particular planet. They are there to help defend a command station as part of its fleet.<br />
<br />
* Renamed the "Metal Generation" tech to "Orbital Mining," since it is not remotely the only way to get metal.<br />
** Added this to its description: This upgrades the efficiency of a few structures on your home planet, and of all the metal harvesters you build on every planet, but that's all.<br />
** Thanks to Z for ideas on this.<br />
<br />
* New description for Engineering: Upgrades the effectiveness and durability of the engineers that you can build from command station or from certain mobile factories.<br />
** Thanks to Z for ideas on this.<br />
<br />
* The Ambush weapon tech has been renamed to Opportunist.<br />
** New description: Opportunist ships are largely characterized by temporal exploits. Things like 'Bonus damage to units that have been on planet X seconds.' Overall these ships take advantage of the environment in some way. They also include things like sniper units that use the speed of enemies against them.<br />
** Thanks to ArnaudB, Z, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Concussion weapon tech has been renamed to Artillery.<br />
** New description: Artillery ships generally fire concussive shaped charges, generally over medium-to-long distances. Most of the units are siege-oriented, and they often specialize in killing low-armor targets. A number of them also employ knockback, which can keep smaller enemies from returning fire.<br />
** Thanks to ArnaudB, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Disruptive weapon tech has been renamed to Contravention.<br />
** New descripion: Contravention ships vary a lot, but all counter something. Some counter very low-armor ships, others counter very high-armor targets. Others use weapon jamming or tractor beams to prevent enemies from acting.<br />
** Thanks to ArnaudB, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Fusion weapon tech has been renamed to Atomic.<br />
** New descripion: Atomic ships tend to be very powerful for whatever their size is. Many of the tanks and bombers are in this category. Many, but definitely not all, atomic ships are able to bypass personal shields of targets and hit hulls directly.<br />
** Thanks to ArnaudB, Z, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Generalist weapon tech is keeping its name, and has this new unhappy description:<br />
** Generalist ships tend to be all-rounders that are not overly good at any particular task. These tend to be an excellent backbone for a powerful fleet, anchoring it with solid firepower and reasonable defenses.<br />
<br />
* The Melee weapon tech has been renamed to Close Quarters.<br />
** New descripion: Close Quarters ships include all of the melee-ranged ships that are focused on very quickly reaching targets and either exploding them or slicing into them. But it also includes a variety of very short-range dangerous turrets and other units that focus on point defense.<br />
** Thanks to Ath, Z, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Raid weapon tech has been renamed to Blitz.<br />
** New descripion: Blitz ships usually trade hull integrity for speed and attack power. These are not the units you want to use in a stand-up fight, but they're great for raiding and for hit-and-run attacks. When it comes to turrets, most of them are cheap and lightly defended for their size, but quick to build and pack a punch.<br />
** Thanks to ArnaudB, Z, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Splash weapon tech has been renamed to Area Of Effect.<br />
** New descripion: Area Of Effect ships are usually meant for crowd control, or hitting lots of targets in some fashion. This might be shrapnel damage in an area that shreds low-armor targets, or it might be massive electrical discharges with various effects.<br />
** Thanks to Z for the discussion that hashed this out.<br />
<br />
* The Subterfuge weapon tech now has this description:<br />
** New descripion: Subterfuge ships are often cloaked, but not always. Many of them apply debuffs, such as temporarily disabling engines. A few are giant-killers, focusing devastating blows on big targets.<br />
** Thanks to ArnaudB, Ath, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Technologist weapon tech has been renamed to Exotic.<br />
** New descripion: But they include gems like parasites (for taking over enemy ships) and stingrays (for specially targeting bubble forcefields). Overall these involve a lot of electronic warfare.<br />
** Thanks to ArnaudB, Z, Ath, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Light hull tech now has this description:<br />
** Light ships come in all sizes and capabilities, but tend to have low amounts of armor. This isn't a problem except when up against enemies that use weaponry that specifically targets that low armor.<br />
<br />
* The Medium hull tech now has this description:<br />
** Medium ships come in all sizes and capabilities, but tend to have midlevel amounts of armor. There are fewer of these, but they are less likely to be the target of bonuses against either high or low armor ratings.<br />
** Additionally, its cost has gone down from 7k and 10k to 5k and 8k.<br />
<br />
* The Heavy hull tech now has this description:<br />
** Heavy ships come in all sizes and capabilities, but tend to have large to VERY large amounts of armor. High amounts of armor does not confer any natural bonuses, but tends to coincide with high amounts of hull health. There are some specialist high-armor-killer units out there, but beyond that fewer ships get bonuses against them.<br />
<br />
* The Turret hull tech now has this description:<br />
** Turrets are guns that nobody bothered to strap an engine to. They're typically built by your command stations, battlestations, or citadels. Usually in friendly territory, but you can also use them in offensive beachheads.<br />
<br />
=== Mod Updates ===<br />
<br />
* Made Kaizers Marauders compatible with Vanilla, no longer requiring DLC 1, and removed its requirement:<br />
** The CostBasedShipSpawner inside AMU now no longer throws an error but quietly remarks in the debug log if there's no ships for a tag (such as for example spire-raiders).<br />
** Fixed an exception inside the Kaizers Marauders Stage 2 logic where it was always trying to read the starting spire debris even though without DLC 1 the setting does not exist.<br />
<br />
* AMU Prototypes:<br />
** Created multiple generalized GameEntity prototypes within AMU for: Strike Craft, Frigates, Other large non-stackable ships, Drones, Drone Projectiles, Small/Med/Big turrets.<br />
** Both Kaizers Marauders and Extended Ship Variants now use these. This will do very little (hopefully) but now makes a good attempt at "sorting out" targeting and protection priorities, collision priorities, drones not aggroing Guard Posts, Drone Projectiles not being swappable and a few other little things.<br />
** It will also speed up any further mod development and cut down on redundant work (including modding upkeep if things change or balance is adjusted), and can do so for any other modder potentially working with AMU.<br />
<br />
* More System Defenders has been updated by CRCGamer in order to move the Station-Keepers over to that Station-Keeping tech.<br />
<br />
* "Cosmetic" mods have been a misnomer for a while, and are now called "Save Safe" mods.<br />
** Essentially these are invisible to savegames whether they are on or not, but they may change more than cosmetic items.<br />
** The file ModIsConsideredCosmetic.txt can still be used, but ModIsSaveSafe.txt is the new standard. We'll continue triggering the appropriate flag from either.<br />
** Thanks to Puppet Master for suggesting.<br />
<br />
== Beta 2.724 Mod Bonanza ==<br />
(Released January 28th, 2021)<br />
<br />
* When waves are launched, they can come from a variety of sources and target a variety of other factions. In the prior build, it was trying to throw all of these into the relentless wave ai faction, but that's not actually correct.<br />
** In the case of something like the AI Reserves launching a wave, they should own their own ships that they launch at (presumably) you. Fixed.<br />
*** Thanks to zdrgn for reporting the exception that this was causing.<br />
** Additionally, when an AI actually IS launching a wave, but it's targeting some NPC faction (another AI in a civil war, a marauder faction, whatever), it no longer uses the AI faction or the relentless wave faction -- instead, it just feeds these new units directly into the AI's hunter fleet, targeted at that NPC faction. This makes them the most effective, and skips a few steps that could be error-prone and maybe see these ships come after you instead, etc.<br />
*** Thanks to Badger for suggesting this part.<br />
<br />
* A surprising number of areas of faction code in particular would report fatal errors into the log, but not actually to the screen. This would often lead to you not knowing there was an error, and probably having laggy performance from all the silent logging. Now we'll all know what is happening and we can fix the root problems when they come up.<br />
<br />
* In the event that the game has had some critical failures previously, it's possible that UpdateAllVisuals() will also give you some errors. Now it gives better errors, and is in general less likely to give errors in the first place.<br />
** Thanks to Kendrickorium for the report.<br />
<br />
=== Settings Menu Improvements ===<br />
<br />
* The performance section of the settings menu has been updated to have a variety of subcategories that make it easier to visually parse and find what you need.<br />
** Same for the Game section of the settings menu.<br />
<br />
* Rather than the Display category automatically entirely going to the graphics settings file, there is now a new is_stored_in_graphics_settings_file="true" that is set that causes those settings to go there.<br />
** That allows us to add other things to the display category that might not have the same relevance.<br />
<br />
* In the past, we had categories on settings that were simply defined as part of the setting. Now we explicitly define categories and even optional subcategories for settings.<br />
** The explicit categories allows us to make new categories that are empty of traditional settings, such as having expansions and mods show up as their own sections on the sidebar.<br />
** The subcategories allows us to visually organize really long sections of settings if we need to. Things like the debug window can otherwise just get plain overwhelming.<br />
<br />
* The settings menu has in general gone through a bit of a redesign:<br />
** The HUD and Tooltips categories have been made subcategories of display.<br />
** There is one overall Camera category, with the "all cameras," "main camera" and "galaxy camera" bits as subsections.<br />
** The networking tab now has a subsection for the "Your IP Address Information" so that is more clear what it is about.<br />
** Kaizer's Marauders now implements a new mod-specific subcategory of the otherwise-invisible Custom sidebar category, which lets it appear without being in a strange position. Other mods can also easily do this.<br />
<br />
* Mod descriptions can now only show 1000 characters in a tooltip. Beyond that, it cuts off with an ellipsis and gives a "read more" button over to the right of the mod's normal buttons. You can then click that for a full popup screen that lets the mod author write however much they want.<br />
** Thanks to Puppet Master for suggesting, and NR SirLimbo in particular for making it needed. ;)<br />
<br />
* The automation and audio sections of the settings menu now have subsections.<br />
** Wow this makes things so much easier to find!<br />
** Additionally, the warning triggers have been moved into the Game section under warnings, so all of that is in one place.<br />
<br />
* The display section of the settings menu has been substantially subsectioned, and its hud and tooltips sections now have more sensible subsections as well.<br />
** The show random AI types has also moved to the game section, rather than being in the HUD section.<br />
<br />
* The camera section of the settings is further split up so that you can find options in there.<br />
** A few options for the galaxy map camera that are really mostly about color grading have been moved to that new subsection of the display section.<br />
** Here again, the increase in clarity is just astounding.<br />
<br />
* Most of the networking section has been split out to be part of the debug menu, since that's really what most of that is.<br />
** The debug menu has then been broken into a ton of subsections by function, so that we can actually find things in there!<br />
<br />
* Whenever you open the settings menu, if there are more categories than can be displayed without scrollbars, it scrolls back to the top of the category list rather than leaving it wherever you last left it.<br />
<br />
* Whenever you change categories in the settings menu, it now scrolls the main content part of the window back to the top rather than leaving it wherever you last left it.<br />
<br />
=== Mod Integration Improvements And Related ===<br />
<br />
* The Expansions and Mods now each have their own category in settings, which has a count of how many of them you have enabled out of how many in total there are.<br />
*** Thanks to Isiel for suggesting.<br />
<br />
* Clarified Civilian Industry tooltip to say "No expansions required" rather than "Requires no expansions."<br />
<br />
* Mods can now declare that they have prerequisites in the form of other mods or expansions.<br />
** These are done by listing the other mods in a RequiredMods.txt file, one line at a time, or expansions in a RequiredExpansions.txt file, one at a time.<br />
** With these present, the case where a player enables a mod but not its prerequisites is now impossible (that caused all sorts of exceptions and confusion).<br />
*** In the case of expansions, the game will not enable those because of a mod's request, but it will inform the player of all the mods that could not be enabled because of what expansions were missing or disabled.<br />
*** In the case of mods, if the prerequisite mods are present and can themselves be enabled, then it will just auto-enable them for you.<br />
**** In the case of a prerequisite mode that can't be found or can't be enabled, it just tells the player about that.<br />
** This whole process allows for prerequisites up to 30 deep, which would be an insane amount, and beyond that it won't auto-enable things for you because it assumes (probably correctly) that somebody set up circular references (two mods that both depend on each other in order to turn on). In the case of circular references, those can still be enabled manually.<br />
** An example use case of this is that if you enable Kaizer's Marauders but not AMU, it used to error out mysteriously with very funky errors. Now it instead will just turn on AMU.<br />
** Another example use case is that if you don't have DLC1 installed or enabled, but you turn on Spire Railgun Shop, then it would do another set of funky and unclear errors. Now it just turns Spire Railgun Shop off and tells you why.<br />
<br />
* Mods that we distribute has been updated as follows:<br />
** Kaizer's Marauders now explicitly requires DLC1 and AMU.<br />
** MacrophageHistiocytesSpireIntegration now explicitly requires DLC1 and MacrophageHistiocytes.<br />
*** It's possible that this could be re-coded to just be a part of the MacrophageHistiocytes mod that turns on and off, like what happened with MoreSystemDefenders and similar, but for now this is fine.<br />
** SpireRailgunShop now explicitly requires DLC1.<br />
<br />
* Fixed a bug where we were doing the clear method of SpecialFactionData AFTER we had disabled a mod or expansion and right before a reload, which meant that they couldn't find their code and thus generated an error if they had custom code. The error was harmless but confusing, and sets a bad precedent of people ignoring errors that are not actually harmless.<br />
** Anyhow, now this all works properly, and we also have some added debugging info in place to find things like this in the future. But so far this works just fine. This was affecting both Kaizer's Marauders when they are disabled, and Civilian Industries when they were disabled.<br />
<br />
* It is now possible to designate mods as being "framework mods" by giving them a ModIsConsideredFramework.txt file.<br />
** This basically lets us get them out of the main category of mods so that players aren't scrolling past them in confusion and wondering what functionality they give (aka, no function -- they are just used by other mods, and other mods will turn them on as-needed now).<br />
<br />
* In the mods tab, there are now sub-categories for both cosmetic mods and framework mods.<br />
** We thought about having a separate tab for the cosmetic mods, but at this point that seems like it would make things more difficult rather than less.<br />
<br />
* Fixed a bug where when you hot-reloaded the mods or expansions, it would make for doubling or tripling of the music background track, and also make all the volume progressively more quiet each time. This is because of us reloading the sound root and volume mixer, and that's just incredibly fraught as a thing to do.<br />
** Normally the sound mixer and root themselves are not something that would be modded, but in the event that someone chose to do that, we no longer support hot-reloading those particular things. Whatever the sound root and mixer are at the time the game is launched are the ones that will stay until you restart the program (whether it's a mod version or our main version).<br />
** Again, we really can't think of any possible reason to create a new sound mixer or sound root, since actually doing adjusting the mix is possible without that step, so this is probably entirely moot other than fixing this bug itself.<br />
** Thanks to Tim_Fragmagnet for reporting.<br />
<br />
* If you try to load a savegame that you are missing some expansions and mods for, and you have those expansions and/or mods on your machine but just not enabled, then the game now asks if you want to enable them. It then does a hot-reload, including any prerequisite chains, and you're able to then quickly load the save after that.<br />
** This is particularly helpful for us developers, but really it's handy for anyone who plays with various configurations. Do note that this does not disable any extra expansions or mods you might have installed that the save does not.<br />
** In the event that the save is referencing a mod or expansion that you don't have on your machine, or it's referencing a mod with prerequisites that you are missing, then it will just give you the warning message and fail to load the save like it always has.<br />
** Note that this only works for single-player saves right now, not joining multiplayer games and trying to match the host.<br />
<br />
=== Three New Mods By ArnaudB ===<br />
<br />
* New cosmetic mod by ArnaudB: Raising The Floor: Multi AIs Adjustment<br />
** Fighting multiple AIs at the same time is a daunting challenge, often spoiled by the immense increase of threat once a single AI Homeworld dies, even when there are multiple others AIs around to lessen the importance of such a deed.<br />
** This mod causes the AI Overlord to reduce AIP by 200 when killed, with the total AIP gained from killing an AI Homeworld raised from 170 to 220. The reason behind this effective 20 AIP increase is to make the AIP Floor rise. <br />
** The remaining AIs 'forget' some of what you have done with the loss of one of their own, but they are less inclined to underestimate you.<br />
** The driving force behind this mod is the uninteresting dynamic forced by the current meta. With vanilla settings it's always better to clear the paths to all AI Homeworlds, then smash them in a row in a grinding match that seems to last forever.<br />
** With this change, the player is heavily incentivized to remove AIs progressively over the course of a game. The AIP floor will increase a lot, forcing a progressive heightening of the forces in the galaxy, but without the excessive and sudden all-out war that is the vanilla experience.<br />
** This has effectively no impact on games with a single AI. You do get more AIP when killing the first phase of the Overlord, but at this point you are so close to finishing the game that 25 more AIP from killing it won't do anything. You still get the AIP reduction when you win... but you have already won.<br />
** Enjoy your multi-AIs games and don't hesitate to give feedback!<br />
** (This doesn't disable achievements)<br />
<br />
* New cosmetic mod by ArnaudB: Speedy Citadels<br />
** Increase the speed of citadels to 600, the same as battlestations. You can now mix them and clean up your controls group.<br />
<br />
* New cosmetic mod by ArnaudB: Supercharge Raid<br />
** Add supercharge back to raider and their variants.<br />
<br />
=== The Reprocessers mod by CRZgatecrusher ===<br />
<br />
* New mod by CRZgatecrusher: The Reprocessers<br />
** The Reprocessers are a faction that inhabit deep space and occasionally attack places for research purposes. Comes with 4 unique phases:<br />
** Phase 1: spawn special 'bombs' and attempt to obtain metal<br />
** Phase 2: Build up attack. nothing happens in this phase as they are 'organizing' an attack<br />
** Phase 3: Launch the attack. launches an attack whose size is based on the metal obtained. the faction gains research points when it kills things<br />
** Phase 4: Attempt to research things. this is the time the faction attempts to unlock a new unit. returns to phase 1<br />
** T1 units are similar to player units to almost identical<br />
** T2 units are unique and have special features like a lifecycle or actual replication.<br />
<br />
== Beta 2.723 AI Accountant Fired, And Relentless Waves ==<br />
(Released January 26th, 2021)<br />
<br />
* Hunter fleet fireteams can now get a bit larger before making new ones.<br />
** Thanks to Badger for adjusting.<br />
<br />
=== Wave Balance ===<br />
<br />
* Wave adjustments:<br />
** The AIs are more likely to send a couple of different ship types rather than just one monolithic type when they send a wave.<br />
** The AIs are more likely to send guardians with waves.<br />
<br />
* The "wave_power_ratio" field from the AI difficulty level has been removed.<br />
** This was something that was designed to make waves actually hit hard enough to be damaging. Aka, "all waves at difficulty 8 must be at least half as strong as the defending world's power."<br />
** In practice, with really well-defended homeworlds in particular, this was making it so that those would NEVER be attacked, and the AI would be incredibly predictable in that regard, with the new stronger wave balance.<br />
** Given that waves have been so weak as to be basically nonexistent for the last year or more, anything is better than that, and basically it's preferable to have more weaker waves that might interact interestingly with the Hunter rather than occasional apocalyptic waves that come without warning and also feel unfair.<br />
** This is a mechanic that only kicked in on difficulties 6 and up, and you could really see how much more poorly the game played on difficulty 8 in the new stronger-waves style partly because of this. It was a great idea when it was first introduced, but the game meta has moved on.<br />
** HOWEVER, this underlying mechanic is still useful for reconquest waves in particular, where the AI really intends to win a given battle in order to retake a given planet. So we've kept the underlying mechanic for those specific purposes.<br />
<br />
* There is a new "Relentless AI Wave" faction for each AI, which works (for now) exactly like the Tsunami CPA faction does.<br />
** Aka, they attack mercilessly and try to push in more and more on you, and they never get donated over to the Hunter faction.<br />
** In previous versions of the game, for the last year or so at least, the waves were so small and were so ineffectual when it came to against-player waves that the Hunter was not getting fed, anyway.<br />
*** If the new version of the waves winds up feeding the Hunter, then that just makes the Hunter suddenly unbalanced in terms of how hard it is.<br />
** In the new version of the game, we want these stronger waves to be a time-limited thing. They arrive, they try to hurt you (or their other target) very badly, and then they die. They pursue you until death.<br />
*** The hunter, of course, can coordinate with these just fine. And we can refine their behavior over time as needed.<br />
** One thing that is not clear is how well this will work with multiple AIs launching waves at each other (when they are not allied).<br />
** Another thing that is not clear is how well this will work when there is an AI launching a wave against a third party faction like marauders. Reports in the prior build were that the third-party factions just got murdered pretty efficiently and then the AI forces would turn on you.<br />
*** If you have savegames that demonstrate any of these things, if you run into behaviors that seem sub-par, then that would be really helpful.<br />
** It's also possible that some of the CPA Faction Logic itself is going to turn out to be very inappropriate for the relentless waves faction, but we figured it was best to start with a known quantity that is close to what we want and then revise from there.<br />
*** One thing we did take out from the start was any concept of the relentless wave waiting for a time to strike. Since a wave arrives all together, it assumes that it is going to hit immediately.<br />
** So far so good in terms of the relentless AI wave forces spawning out of a wave and then doing what it says on the tin.<br />
<br />
=== Praetorian Guard and Warden Balance ===<br />
<br />
* The budgets for the Warden and Praetorian Guard were fine, but their CAPS have been off since 2.710. They were simply set too low for the AI to ever really field any of them.<br />
** Thanks to Puffin for discovering this!<br />
*** Basically a "cap per AIP" of 22 for the PG at difficulty 5 would mean that at 100 AIP, that means a strength cap of 2,200. In visible-to-players game units, that means... 2.2 strength. Woooow that's a poor PG.<br />
** But just increasing the numbers was not going to go well, because a high "cap per AIP" means that the game gets linearly more difficult as the AIP rises. This is part of the problem we had before. So it's time for SEVERAL new mechanisms.<br />
<br />
* On the PG, we still have praetorian_guard_strength_cap_per_aip, but now we also have praetorian_guard_base_strength_cap.<br />
** We also have a new praetorian_guard_strength_cap_per_aip_above_200, praetorian_guard_strength_cap_per_aip_above_400, and praetorian_guard_strength_cap_per_aip_above_600.<br />
** These numbers let us have the game curve the difficulty up over time in a sub-linear fashion for a while, and then gradually shift to something more than linear (not exponential, though).<br />
<br />
* New PG changes: <br />
** Diff 1: <br />
*** Was per-AIP: 3<br />
*** Now base: 2000, per-AIP: 20, per-AIP-above-200: 10, per-AIP-above-400: 15, per-AIP-above-600: 30.<br />
*** Quick note: these numbers are additive. So at 700 AIP, the formula for calculating the strength cap is as follows:<br />
**** 2000 + ( 20 * 700 ) + ( 10 * (700-200) ) + ( 15 * (700-400) ) + ( 30 * (700-600) ). Aka a total of 28500, or 28.5k of max strength. This is still pathetic, but hey it's difficulty 1. The old number was 2100, or 2.1k of strength, which is nonexistent by comparison.<br />
** Rather than show you all the numbers in this hard to read format, here's a spreadsheet that has the new numbers for the PG and for the Warden, and a comparison to the old numbers: https://docs.google.com/spreadsheets/d/1Oqhe_evrtzDOKyVBfwZq27zVZu6WJw8oaa2CZWxgZyc/edit?usp=sharing<br />
<br />
* In the difficulty tooltips for the warden and the PG, it now shows what the strength cap would be at AIP 100, 300, and 700 to give players an idea of the progression without showing them all the math directly.<br />
<br />
* Thanks to Tim_Fragmagnet, ArnaudB, Puffin, and others on Discord for reporting this.<br />
<br />
== Beta 2.722 AI Wave Balance ==<br />
(Released January 25th, 2021)<br />
<br />
* Updated the Makeshift Turret description to hopefully be more clear.<br />
<br />
* Fixed the range and damage boni from having more units on the planet (i.e. Scourge Peltians) not factoring in ships from stacks.<br />
** Thanks to NR SirLimbo for catching and fixing this one!<br />
<br />
* Prevent players from going negative on hacking points. Should a player hit 0 or fewer hacking points, all active hacks are stopped immediately and display a chat message advising of the failure. This counts as a failed hack.<br />
** Thanks to Dominus Arbitrationis for fixing.<br />
<br />
* Re-coded how the raycasts to hit planets and icons on the galaxy map works. It now does a non-allocating "hit all" raycast, rather than only hitting the first item.<br />
** In this new code path, it first tries to find a ship icon that is enabled and linked to an actual ship. If it does, then it hovers over that.<br />
*** Our suspicion is that in the past, it was hitting some of these, but they were actually disabled or not linked to a ship for some reason, and so you'd get just blankness. This should no longer be possible.<br />
** If if doesn't find any ship icon that is valid where your cursor is, then it looks for planets. Assuming that your cursor is over a planet at all, then even if there's a partially-enabled icon, that won't matter.<br />
*** Additionally, if there's a collider somehow in the way for the link between two planets, it doesn't matter since it isn't even checking for that yet, and won't do so unless it finds you are not over a planet itself. That was something that was getting in our way in the past, and while we thought we fixed all those cases, hopefully none of them will be possible as a problem now (even in edge cases).<br />
** If we still have found nothing (we're not over an icon or a planet), then it looks for the link between planets to see if you are hovering over them.<br />
*** Knock on wood, this should solve all the strange edge cases of planets not being clickable but still showing the planet name when you hover over them, etc. Those cases were increasingly rare in general, but hopefully this gets the last of them.<br />
** Thanks to Chthon and NR SirLimbo for reporting the most recent cases.<br />
<br />
=== AI Waves Work And Extra Forcefields For Player Homes ===<br />
<br />
* Wave Warnings of Short, Medium (default), and Long have been changed from 60, 180, and 300 to 60, 120, and 180.<br />
<br />
* Previously, waves could be declared on a really long interval, AND the wave itself was set to only arrive after a super long time. So it might be a 10 minute interval, and then another 10 minutes before the wave hits after it was calculated, and then give you a 5-minute warning.<br />
** This has been adjusted so that waves never have an underlying time difference of more than 3 minutes from when they are targeted and when they arrive. This makes it far more likely that the wave target is in remotely the state the AI was thinking it was when it sent the wave in the first place.<br />
<br />
* (Revised in a minute) A new wave_budget_multiplier has been added to the AI Difficulty table, and this gives a free boost to the income of waves for any AI type just by difficulty.<br />
** Please remember that we've just given the players a TON of free buffs, especially in the early game, so this is in a lot of ways us trying to compensate for that.<br />
** The other thing to bear in mind is that players have been talking about how slow it is for waves to come and bother them, and therefore how much less a factor defending against waves is in general in this game compared to classic.<br />
** For difficulties 1-2, the multiplier is 1, so no change.<br />
** Difficulty 3: 1.1x<br />
** Difficulty 3: 1.1x<br />
** Difficulty 4: 1.3x<br />
** Difficulty 5: 2x<br />
** Difficulty 6: 2.5x<br />
** Difficulty 7: 3.5x<br />
** Difficulty 8: 4.5x<br />
** Difficulty 9 and 10: 5.5x<br />
** In the grand scheme of things, these are not extreme changes; potentially we need to give even more of a boost to wave budgets to make them truly interesting.<br />
*** As it stands right now, testing on difficulty 5, an Ensemble AI gives us a 3 strength wave at 11 minutes into the game, against a planet with 5 strength in mobile forces, 22 strength in turrets, and 7 more mobile strength rampaging nearby -- plus 16k unspent science, so those strength numbers really could be 10x higher than this first test and still be woefully underpowered.<br />
*** On the plus side, the wave was at least coming after only 11 minutes, and only with a 2 minute warning, so there is some mild urgency there.<br />
*** That said, taking a moment to just spend the basic science that we had on hand from that scenario -- and bearing in mind a ton of turrets have not been bothered to be built, and there's 1.4 million metal just sitting there -- we transform our defensive forces into 82 strength of turrets, with 5 strength mobile and another 16 strength one planet away. Difficulty 5 is not supposed to be overwhelming, but this is just absolutely underwhelming to a crazy degree. 3 strength versus a "casual" force over 30x as strong. It's safe to say that waves are still not a factor at all in this.<br />
<br />
* (Revised in a minute) So, let's adjust those numbers some more:<br />
** Difficulty 1: 1x<br />
** Difficulty 2: 2x<br />
** Difficulty 3: 3x<br />
** Difficulty 4: 5x<br />
** Difficulty 5: 10x<br />
** Difficulty 6: 20x<br />
** Difficulty 7: 40x<br />
** Difficulty 8: 80x<br />
** Difficulty 9 and 10: 140x<br />
** One reason it's worth noting that wave budgets need to be inflated so much is that, unlike reinforcement budgets, they are not duplicated by planet.<br />
*** The reinforcement budget of X will be applied to something like 10-20 planets, and much more frequently over time. So in a lot of very real respects, we have always been shorting waves by a factor of 10 or more in terms of what you would think the AI gets.<br />
** Okay, testing this again on difficulty 5, at this point I'm getting a 16 strength wave hitting me at 11 minutes. I built more turrets this time, so even without upgrading a single tech, I have 33 strength waiting for them. Three quick upgrades later, still 10k science in the bank and 1.5 million spare metal again, and now I've got 73 strength in turrets waiting for them. I happened to bring my main offensive force home, which was a measly 12 strength since they had no upgrades yet, and the invaders were repulsed without me losing a single turret. But it was at least a fight that took a few moments.<br />
*** This is at difficulty 5, which is not supposed to be particularly hard, so that seems fair enough. Let's see what difficulty 8 looks like with this. That gives us... 596 strength incoming. Hilarious. I'm going to die with no question. There are multiple dials here, and clearly they just exponentially increased. 1/8th of that (the equivalent of a multiplier of 10 line difficulty 5 had) would still have been a strength of 74.5, which is... more intense than the first wave feels like it should be.<br />
<br />
* (Revised in a minute) So, let's redo those numbers from difficulty 6 on up:<br />
** Difficulty 6: 10x<br />
** Difficulty 7: 8x<br />
** Difficulty 8: 5x<br />
** Difficulty 9 and 10: 3x<br />
** Yes, the higher difficulties get less of a boost, but they also clearly needed less of one. This keeps the AI from being so ridiculously pathetic on the lower difficulties, and hopefully keeps them from being monstrous at higher.<br />
** Let's test out difficulty 8 again. This time I ran into more trouble, because the first planet I tried to attack put up a pretty good fight. I upgraded two techs twice, and so had 79 turret strength easily, and 23 mobile strength. The AI had time to reinforce its first planet, AND the hunter showed up with 20 strength, so it bled me dry for a bit before I neutralized the planet and the hunter ran off. It took much longer for the AI to decide to send a wave, but at 21 minutes and 15 seconds in, it decided to send a 69-strength wave at my homeworld. With 2 minutes of warning and my ships in shambles from my offensive efforts, this was a tough battle. Granted, I had 8.5k extra science just sitting there, but I also had the bad luck that the incoming wave was mostly bombers. I quickly knocked them down to 38 strength, but they took out my home command station while I still had 75 strength sitting around on that planet. I need more defense in depth, but beyond that I would have probably been fine.<br />
<br />
* So, let's down this just a hair more from 6 on up:<br />
** Difficulty 6: 8x<br />
** Difficulty 7: 6x<br />
** Difficulty 8: 4x<br />
** Difficulty 9 and 10: 2.5x<br />
<br />
* Also? Let's adjust some forcefield counts for players, because losing like that when you have a small planet is no fun:<br />
** Player home forcefield count: from 1x to 2x at mark 1 for players, and then +1 for each of the next two mark levels just like before.<br />
** A lot of players would not know to invest directly into their homeworld like this, but at difficulty 8 and 9 that being a needed thing seems like an okay situation.<br />
<br />
* (Discarded in a minute) What on earth is this going to do to the meta on higher marks? That's hard to say. One thing that is certain is that the general mark level increases are something that players really fear.<br />
** Given that players have almost no mark 1 ships now (most of the time), it seems like giving the AI some more buffs here might be worthwhile.<br />
** Difficulty 5: all mark level thresholds move down a mark (so 120 AIP means mark 3, not mark 2), and mark 2 now comes at 60 AIP.<br />
** Difficulty 6: all mark level thresholds move down a mark, and mark 2 now comes at 55 AIP.<br />
** Difficulty 7: all mark level thresholds move down a mark, and mark 2 now comes at 5 AIP (yes, 5 -- so there's no early-game incentive to avoid taking a planet until the first wave arrives).<br />
** Difficulty 8: all mark level thresholds move down a mark, and mark 2 now comes at 5 AIP.<br />
** Difficulty 9: all mark level thresholds move down a mark, and mark 2 now comes at 5 AIP.<br />
** Difficulty 10: all mark level thresholds move down a mark, and mark 2 now comes at 5 AIP.<br />
** Let's see how we fare on difficulty 8 NOW. Six minutes in and I am playing for real, with 5k science in reserve but 3 overlapping home shields up, 92 turret strength sitting ready to eat my enemies on that homeworld, and a hard-won first planet from the AI but still a victory. At 17 minutes in, I have a second planet and it has 27 in turret strength while my home planet now has 165 in turret strength. I have 23 mobile strength between them, and two-layer forcefields on both. At this difficulty level, strong defenses cause the AI to wait before sending a wave, so let's see how far it goes. 22 minutes in, I've just smeared a third AI world to bits and they launch a 91 strength wave at my weaker non-homeworld planet. I opt for one more tech unlock, and now I'm sitting at 36 turret defenses and 18 mobile defenses there. It won't be enough, but that's okay. I need a GCA, but I'm not going to die from this. My economic second planet manages to get them down to 42 strength before biting it, but I'm still rich as heck. The hunter fleet shows up, because it correctly sees an opening, and darn if the warden doesn't also show up. I wind up retreating with 41 strength of the enemy sitting on that planet. I'd like for them to attack my homeworld, but they aren't taking the bait. 45 minutes in, and I'm at a stalemate with them, unable to retake my second world. It's not super interesting at this point.<br />
** As I had suspected from the amount of fear that players have of the leveling-up of the AI in mark level strengths, it's just too big a jump. That means that, early stall or not, the late game is just going to be impossible on the highest difficulties with the sort of shifts that I've made in today's balance adjustments.<br />
<br />
* (Discarded) What we need for the AI mark levels that go up is a smoother balance curve, and something that has fewer scary cliffs all at one location.<br />
** To start with, we're getting rid of the concept of a "general mark level" for the AIs. Instead there is now a defensive, offensive, and wave mark level.<br />
** The "defensive" one is largely used like the older "general" one was, in cases where there is nothing else to indicate a mark level.<br />
*** The defensive mark level should grow the slowest, by far.<br />
<br />
* Actually that got insanely super complicated. Let's just put the AIP level-ups back where they were and try difficulty 8 again.<br />
** With this shift, and me playing properly, they send a 50-strength wave against my second planet, a military station this time, and I easily repel them, killing half of them. I have energy problems, but the game is moving and off to a solid start. My homeworld is so ludicrously defended that most of the AI forces won't try to attack it, so getting beyond that world and having proper defenses elsewhere that the strong AI waves don't come in and wreck is going to be the new challenge.<br />
** At high levels of play, I think that's going to be the new meta, if anything close to these balanace numbers stays: trying not to over-protect your homeworld so that you can properly defend other worlds (because of energy shortages), and in general dealing with waves that can be scary big, but ultimately just give you a fight before moving on. Late-game, it will be interesting to see the balance.<br />
** There have been comments that we need to give the AI more guardians now that the balance has shifted so much in the player's favor with the AI getting no frigates, etc -- but with the shifts to waves instead being so much more harsh, I'm inclined to keep the AI guardians where they are at (for now).<br />
** It's hard to know for certain, but it feels like the balance of power between the player and the AI is a lot more appropriate again, now that waves alone are so much stronger (and actually a factor for the first time in a long time).<br />
<br />
=== The Last Of IMDraw And Shapes Work ===<br />
<br />
* The way that range rings are drawn for ships that either already exist, or that are about to be placed by you using the build menu, now uses Shapes instead of IMDraw.<br />
** This new approach took one scene that was mid-heavy, and the old stats were that it dropped Chris from 120 fps to 70fps just to start showing the range circles (in the original AI War this was also a big performance hit for us, for different reasons). In the same scene, using the new code, the drop is from 120fps without the range circles shown, down to between 100 and 115 fps with ranges shown. The exact final framerate depends on how zoomed-in you are at the time, and thus how much of your screen the range circles individually take up (more coverage takes more processing power, but it's all still far better than the old approach).<br />
** Also the new rings look smooth and nice, rather than terrible and dated, especially when you zoom in on them.<br />
<br />
* After experimenting with changing the battle-indicator circles on the galaxy map to use shapes instead of IMDraw, we found that the performance was basically the same, but the visuals with Shapes were substantially worse. We're just going to keep on using IMDraw for purposes of these parts of the galaxy map, and the ping effects, since that works so well.<br />
<br />
* When you are in placement mode for building some structures (turrets, etc), it now uses the nicer-looking Shapes lines and circles. The performance difference is negligible, but it looks vastly cleaner and more professional, especially when you zoom in further to look at the ship you are placing.<br />
<br />
* After looking at the performance of the line drawing for IMDraw with unit orders, it really takes an extraordinary number of lines before performance starts to substantially drop. It seems unlikely that we would be able to beat that with Shapes, and it might not even be possible to match it. So for the time being we are going to leave it where it is, and consider our work on the performance-related-toIMDraw to be complete.<br />
** There are some other places where we use IMDraw to draw some circles when some debugging is turned on for shots and similar, but we also don't really care about framerate drops with a situation like that -- that's the perfect sort of situation for IMDraw.<br />
<br />
=== Mod Updates ===<br />
<br />
* Extended Ship Variants (ESV)<br />
** Shortened the description. A lot.<br />
** Removed all min/max caps from starter fleets (both mobile and support) and used the default cap XML field instead.<br />
** Gave Turbo Stingrays, Etherjets, Ensnarer Etherjets and Thiefs the ability to spawn in fleets and ARSs.<br />
** Gave the AI the ability to spawn Turbo Stingrays.<br />
<br />
== Beta 2.721 Histiocytes And Circles ==<br />
(Released January 22nd, 2021)<br />
<br />
* Updates to turret counts in the new balance -- thanks to ArnaudB for making these shifts.<br />
** Updated cap counts for starting battlestations, seeded battle/citadel and GCAs.<br />
** Adjusted counts for military station, home station for pike, ambush, beams.<br />
** 30 small - 6 large on battlestations. 20 small - 4 large on seeded battlestation/citadel. 15 small - 3 large on GCA.<br />
** Adjusted the gravity generator, tachyton and tractor as well.<br />
** Thanks to ArnaudB for putting this together!<br />
<br />
=== Mod Updates ===<br />
<br />
* ESV<br />
** Fixed the Viral Shredder variants not using the cannot_actually_be_built_builds_self_indirectly XML field, meaning that the game would fail trying to load them.<br />
<br />
* New version 1.18 version of More System Defenders mod by CRC Gamer.<br />
<br />
=== New Included Mod: Macrophage Histiocytes by StarKelp ===<br />
<br />
* Added the Macrophage Histiocytes mod.<br />
** Adds in a multitude of new features to the Macrophage faction, most of which can be enabled or disabled at will.<br />
** Histiocytes:<br />
*** Drones created by Macrophage, Telia, and Infested Mines. These mimic the stats of regular Harvesters.<br />
** Metal Generator Infestation:<br />
*** Harvesters can corrupt Metal Mines, causing them to create additional Histiocyte drones.<br />
** Dark Spire Rivalry<br />
*** Macrophage are now capable of consuming Dark Spire Vengeance Generators.<br />
*** Dark Spire take offense to this, and will wither the Telia on planets adjacent to their generators in response.<br />
** Tweaks Galore<br />
*** A number of tweaks can be found in a new Macrophage section of Galaxy Settings, which include toggling off many of the above features.<br />
*** Others include passive Telium regen, allowing Spores to also infest targets, and letting Extragalactic units wither Telium away like Dark Spire units.<br />
** Additionally included is a submod that can be activated to apply these effects to the Spire Infested Telium and Harvesters.<br />
<br />
=== Drawing Lines And Circles ===<br />
<br />
* Shapes, by Freya Holmér, has been integrated so that we can draw extremely efficient lines and circles in an HTML5-looking style.<br />
** https://acegikmo.com/shapes/docs/<br />
** Bear in mind that because of the component-based nature of this, we have to pool and alter shapes versus being able to request them drawing "on demand" as we have been doing with IMDraw in the past.<br />
<br />
* We've implemented our own ArcenShapeRoot base class, which allows us to wrapper and carefully control edits to various subcategories of shapes.<br />
** At the moment we have implemented 5 specific sub-shapes for our purposes: disc transparent, disc sized, line, rotational ring, and thickness ring.<br />
<br />
* We then have a new ArcenShapePool class, which manages pooling and initialization for each of the shape classes that we have. <br />
** This is all working for the five initial shape styles, but it's then up to other code to actually request the use of a shape, set where it should be and what it should look like, and ultimately return it to the pool when it finishes with it, etc. <br />
** Right now none of the other code does that yet (it's all still using IMDraw), but the initialization and pooling logic is fully up and going. Next step will be to convert over specific usages of IMDraw, one after the other, to use the new approach.<br />
** The performance of IMDraw is really really bad when it comes to drawing hundreds or thousands of circles, although it can draw thousands of lines without a problem. But in both cases, they wind up also looking pretty dated and unattractive.<br />
*** Folks have been noticing that on the more recent drivers from nVidia on windows, we now wind up with a 50% drop in framerate just from selecting ships and drawing the selection circles around them. Those were not causing nearly so much overhead in the past, so it seems to be something to do with the newer hardware or newer drivers or both (for us internally, drivers from 2018 were fine, but on the newer 2021 drivers the performance tanks, without hardware changes).<br />
** Anyhow, for those folks who are NOT seeing performance degradation (either they are on older drivers or their hardware is just not affected), these sets of changes will result in prettier lines and circles but probably not any performance boost since IMDraw was previously lightning fast. For those on newer hardware, it will be both prettier and faster.<br />
<br />
* The cursor that appears on the plane of gameplay has been updated to use Shapes rather than IMDraw.<br />
** Rather than two coarse thin line circles, it is now a dot in the center and a nicer lined circle around the outside.<br />
** This is both slightly more efficient (but so low in volume of draws as to not be a big deal) as well as a lot prettier. This is also the first example of us actually using the new Shapes code in actual practice.<br />
** In the cases of this one, we pull out some items from two different pools and then just hang onto them forever, since we're pretty frequently needing a cursor, after all.<br />
<br />
* The way that circles are drawn around ships that are selected, or that you hover over, is now based on Shapes instead of IMDraw. This looks incredibly more polished now, and comes with a far less substantial performance hit than before when you have a bunch of ships that are all selected at once.<br />
** There are still various other parts of the game to update with this new style, but these were the really big ones that were causing massive slowdowns for folks on newer drivers.<br />
** For Chris in a standalone build, in the "terrible framerate" test case from Daw11, the framerate was previously getting cut in half from 130fps to around 60fps or even lower on his GTX 1070 and i7-6700HQ. Now it drops from about 130fps to about 120fps. This is way more appropriate for the type of operation being undertaken.<br />
** It's also far more attractive!<br />
** Thanks to Daw11 and others for reporting.<br />
<br />
== Beta 2.720 Linux Runs ==<br />
(Released January 21st, 2021)<br />
<br />
* Fixed the game up to not have splash screens for unity on any OS.<br />
<br />
* Fixed up some internal things so that we can do new full-builds much faster.<br />
<br />
* Improved some of the visuals from the loss screen so that they will look better in this new version of unity, as there were some shaders that did not translate well used on the asteroids and a few other elements there.<br />
<br />
* Fixed an issue where the linux build would not launch at all in the prior beta, because there's a new UnityPlayer.so file that is needed. That is now included in this version and on our internal tests on Ubuntu we seem to be back in business.<br />
** Thanks to Daw11 for reporting.<br />
<br />
== Beta 2.719 Unity 2019.4, And Performance ==<br />
(Released January 20th, 2021)<br />
<br />
* '''Note: The current build has a "Made With Unity" splash screen that is not intended to stay. We have more to fix up with this in general, but it's good enough for testing on various platforms for now. There is now a current_beta branch on Steam, and a most_recent_stable_beta to go back to the prior one if this one gives you problems.'''<br />
<br />
* The xml field cannot_actually_be_built has been replaced by two fields:<br />
** cannot_actually_be_built_is_not_a_ship_line for empty slots.<br />
** cannot_actually_be_built_builds_self_indirectly for viral shredder copies and similar.<br />
** Previously there were a variety of strange things that could happen because viral shredder copies were set up identically to "empty ship lines" in this.<br />
*** It's possible that in some of the fleet sidebars and swap line popouts, viral shredder copies may show up inappropriately now. If you find any cases of that, please let us know.<br />
** One bug that was happening before was that viral shredder copies were having their fleet membership disconnected from their actual fleets, which made them not able to get in transports after that point or be selected properly with the fleet.<br />
*** For viral shredder copies in existing savegames that had this problem, they now work just fine when you load the savegame (they don't have to suicide themselves or anything like that).<br />
** Thanks to GreatYng and Crabby for reporting.<br />
<br />
* When viral shredders are transferred between fleet lines, if there are any viral shredder copies left behind, they will delete themselves.<br />
** Previously, they were instead throwing endless streams of errors.<br />
** Thanks to Chthon, Puffin, Crabby, and PetGhost for reporting.<br />
<br />
=== Unity Upgrade To 2019.4.18f1 ===<br />
<br />
'''It's worth noting that a lot of file format stuff changed here (more efficient) due to Unity's internal database formats changing, so the updates are ludicrously big. The total when all three platforms are combined is a difference of 3GB to download on Steam. On any given single platform it's probably closer to 2GB.'''<br />
<br />
* AI War 2 is being upgraded from unity build 2019.1.7f1 to 2019.4.18f1.<br />
** Overall this is an upgrade from the long-term support version of Unity from April of 2019 to the January of 2021 build.<br />
** This MAY fix the inverted scroll wheel bug on linux, finally, but we're not sure.<br />
** This does also come with some internal performance improvements to how jobs are handled on the CPU, most notably around rendering. So this hopefully will be at least a minor performance boost for folks.<br />
** We also have upgraded Amplify Shader and Shader Graph to the latest versions, so whatever automated improvements they have to the sorts of shaders that we created those can now be applied. Other shaders that we hand-coded are already probably as efficient as they can get.<br />
** We did look into "Addressables" as a potential replacement for Asset Bundles, hoping that we could get faster load times. But really all that would do is give us better asset management (which we already have in great shape) and still would be using asset bundles under the hood. So definitely not worth any development time there.<br />
** There may be some other various improvements that we are not aware of (seriously, almost two years of lengthy release notes on a weekly basis, 99% of which doesn't apply to AI War 2). Given that this is the "long term support" branch, it is unlikely that there are new bugs that were not there before, but stranger things have happened in the past.<br />
** This does also allow us to use more up to date assets and packages in general, to maximize performance on things like drawing lines and circles if that's a possibility.<br />
** DirectX11 in general might perform better now, but we'll see how that goes. If it performs better now than OpenGL on your machine, please do let us know!<br />
** Vulkan support on linux has also probably improved substantially, so let us know on that, too. That's really highly dependent on your specific drivers and hardware and OS flavor.<br />
** There are a bunch of other random things that unity fixed, like better support for multi-screen monitors on OSX, and things like that.<br />
** Looks like our build times for large asset bundles and such are also dramatically better, which lets us more easily make changes to art in the future. Seems to be at least a 400% improvement over what we've seen in the past, and honestly that is probably under-selling it. So that's a huge savings for us in time!<br />
*** Actually, yeah -- one example case with small changes, it's improved from 400 seconds to 28 seconds. This is gigantic for our ability to iterate and test on art and ui elements.<br />
<br />
* We are now using Graphics Jobs again in unity. There was a performance regression with them in 2019.1, which they fixed in 2019.3, so that is now a benefit again.<br />
** This should help to make various aspects of rendering less CPU-bound, but it will depend a lot on the machine in question.<br />
<br />
* Our gimbal sprites are now using the geometry pipeline rather than the transparent pipeline, which makes drawing them vastly more efficient in two ways.<br />
** Firstly, it avoids depth sorting on the CPU, which is time-consuming and can be a bottleneck.<br />
** Secondly, it allows for full use of GPU Instancing, so that there should be no more than a single draw call per combination of sprite dictionaries, rather than potentially having more draw calls because of non-matching dictionary groups being non-adjacent in the sorted draw list.<br />
** This can cut the draw calls in a giant many-types-of-ships battle from being hundreds to being like 6 to 10.<br />
** It looks like we made the change to use the transparent pipeline on July 15, 2020, after more than two years of it being in the geometry pipeline.<br />
** This has a massive positive impact on both the galaxy map view and the planet view.<br />
** Thanks to Lightjolly for the report that helped us find this.<br />
<br />
* We are making some adjustments to our camera stacks, and part of this is also using some new unity features:<br />
** We are now letting unity monitor CPU and GPU frame timings, and that can feed into adaptive screen resolutions for certain cameras.<br />
** The background nebula now uses adaptive screen resolutions if the framerate is poor, and it also now is set to NEVER use MSAA since that is useless on that camera.<br />
** Our UI camera is now set to use Forward rendering like all the others, rather than using Deferred.<br />
** MSAA is now off on the sprite cameras, overlay cameras, and on the effect cameras for stale intel and unexplored planet effects. MSAA is only enabled on the main camera that would be drawing actual ship geometry that would benefit from it (and the main menu camera).<br />
** Our pre-canvas LDR mapper camera is now set to not do occlusion culling, although it already was set to a culling mask of Nothing, so it's just doing image manipulation anyway. But just in case.<br />
** The main menu screen (which can be super heavy for some folks) now allows for adaptive resolution.<br />
<br />
== Beta 2.718 Tutorial And Tech Fixes==<br />
(Released January 19th, 2021)<br />
<br />
* Tutorial refinements:<br />
** Notices of new journal entries no longer appear during tutorials (in the chat log), but the journal entries do still appear in the sidebar.<br />
** For folks with DLC3 installed, they were getting a necromancer faction in the tutorial, which is now blocked from happening. Actually, they are no longer added with a default configuration just because you have DLC3 installed in general.<br />
** Discoverable factions in general are no longer added during tutorials.<br />
** The Praetorian Guard are now entirely blocked from appearing in tutorials.<br />
** Thanks to blackdog904 for reporting some of these issues that were still there.<br />
<br />
* The second tutorial now uses Raid Frigates instead of Assault Frigates so that it goes much more quickly.<br />
<br />
* Fixed an intermittent issue where the tutorials category list could be empty, leading to no tutorials appearing.<br />
** This would mainly happen if you changed the installed expansions or mods after loading the game but before looking at the tutorials, but that was not the only way it could happen.<br />
** This bug was introduced when we implemented hot-reloading of expansions and mod content a couple of months ago.<br />
** Thanks to Kolbex for reporting.<br />
<br />
* Fixed an issue where the tutorial text could wind up coloring some bits after its "step complete: proceed to next step" bits.<br />
<br />
* Fixed a bug in our new (as of a few months ago) more efficient ArcenDoubleCharacterBuffer where it sometimes would return stale text.<br />
** Essentially, we were checking to see if any text that was written in this new pass was different from the text from the old pass, and that was working perfectly.<br />
** What was NOT working was that we did not check to see if last time we wrote more than this time. So if we wrote identical text, just less, then it would keep displaying whatever was there from before. This was extremely hard to pin down, but it affected things like the chat popups and tutorial step complete messages, and various parts of the galaxy map.<br />
** The additional check to fix this is extremely inexpensive and corrects the behavior without making the ArcenDoubleCharacterBuffer any less efficient than it already was.<br />
** Thanks to a variety of folks for reporting variants on this, but in particular Kahuna, Crabby, SortYa and others.<br />
<br />
* When you're looking at a flagship that you've not captured yet, it no longer shows the text about how long it will take ships that are unloaded to wait before they can fire. That's not relevant there.<br />
<br />
* When you C-click a fleet that you do not yet own, it now shows the proper mark levels and ship caps for each ship it talks about.<br />
** Thanks to Minotaar for reporting.<br />
<br />
* Fixed another issue with the counting of ships where if there was a fleet that you could capture it would show the wrong number of ships for the current value that you're upgrading from on the tech tooltip.<br />
** Thanks to Minotaar for reporting.<br />
<br />
* When you C-click a tech, it now properly shows the ship caps and how they would increase for any ships that you could capture that are part of that tech.<br />
** This is both a fix to a regression (it was showing nothing in the last two betas) as well as a fix to a longer-term issue (prior to the beta branch, it just showed a fixed number that did not increase).<br />
** Thanks to Minotaar for reporting.<br />
<br />
* Previously the colors for the mark line counts and strength totals that you would get from upgrading a tech were kind of scrambled up. In a couple of places we had green and blue inverted (blue = ships, green = defense, but it was backwards on the actual science buttons), and it wasn't consistently applied in the tooltip.<br />
** Now this is shown consistently throughout the tooltip and the actual sidebar, and on the sidebar if it would show one but not the other, it now only shows the one that has a value (rather than showing zero for the one that has no improvement).<br />
*** In the even that it does wind up showing a zero, it will be because there is less than 1 strength granted from some line.<br />
** Thanks to Tim_Fragmagnet for reporting.<br />
<br />
=== Refinements To New Balance ===<br />
<br />
* The starting support fleets now have 16, 20, and 14 combat engineers rather than 8, 10, and 6. This brings them into line with the new starting values in the new balance of the beta branch.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
== Beta 2.717 Tuning And Optional Capture ==<br />
(Released January 18th, 2021)<br />
<br />
=== Refinements To The New Balance ===<br />
<br />
* We now have the first example of a custom MarkLevelScaleStyle that is just for a single ship or a few ships that are assigned manually (in this case it's assigned manually).<br />
** For the player home forcefields, those now actually DO get some added cap added to them (up from the start of 1) as you upgrade your fleet. They start out with a cap of 1, and for mark 2 and 3 they each get +1. Beyond mark 3, they get no more cap.<br />
** Thanks to CRCGamer, Chthon, Crabby, and others for suggesting/discussing.<br />
<br />
* The attack multiplier curve for human frigates has been nerfed HARD.<br />
** In the lower marks, you in particular really just get far less attack power, while still getting the more aggressive hull health. Frigates in general actually grow up a little slower than the average AI ship now in terms of attack power, and a lot slower than strikecraft. But they have such intense multishot that their power is pretty insane as it is.<br />
** That said, when you finally get up to mark 6 and 7, if you choose to, they actually accelerate slightly beyond what the AI would have on attack power. So their curve has been adjusted in general, but they still are overall buffed compared to prior builds before this beta branch.<br />
** Players were easily fielding 100+ strength in the first 20 minutes of the game with the prior beta build, so this is a first way to try to combat that. We want frigates to be good, but not god-tier.<br />
** Thanks to a variety of players on discord for discussing. More balance will be needed, but today was more about fixing bugs first.<br />
<br />
=== Fixes To Prior Build Regressions ===<br />
<br />
* Fixed an issue with the GCA additions to fleets not always being added into the caps of ship lines in a variety of places. It seems to properly include the results from a GCA hack in all of the tech previews now, as well as actually granting you the GCA ships at all (unlike in the prior build).<br />
** Thanks to a variety of players for reporting, including Chthon (thanks for the save!), DEMOCRACY_DEMOCRACY, Spaz, Crabby, and others on discord.<br />
<br />
* Fixed a variety of places where absolute_max_cap_when_in_fleets was being set to values that were too low for the new balance. This led to players getting fewer forcefields from logistics stations than they were supposed to, for instance, but also affected tractor beams and tachyon beams and a variety of other units. They've all been properly updated now.<br />
** Thanks to Chthon for reporting.<br />
<br />
* Fixed an issue that would let negative numbers show up in the tech upgrade tooltips for ship counts for various ship lines.<br />
** Also fixed another issue where turrets in particular would look like they were going down a few in count because of a rounding error that would happen when you had enough planets with turrets all on them.<br />
** Thanks to NRSirLimbo and others for reporting.<br />
<br />
* Added can_be_empty_or_filled_and_no_complaints to AI ship groups.<br />
** Usually used for stuff that is in one or more expansions and mods, and so defined in the base game but empty unless a certain expansion is present.<br />
** CAN be used in conjunction with if_empty_copy_items_from without problems.<br />
** Is now used on some various features that were complaining if you did not have DLC1 or DLC2 installed in the prior build.<br />
** These errors that were there when you started up the game in the prior build were alarming, but harmless.<br />
** Thanks to Chthon, CRCGamer, zeusalmighty, and others for reporting.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a couple of rare race conditions that could cause exceptions while drawing or moving shots around as you switched planets.<br />
** Thanks to samnainocard for reporting.<br />
<br />
* Fixed an exception that can happen when hitting Reset To Defaults while you were on the factions tab in the lobby. It was getting confused and asking for some nonsensical data on one frame, but then would be correct after that. At this point it just lets the one frame be wrong and correct itself after, which is how it has been prior to mid-last-year when we made some of the items more strictly verified.<br />
** Thanks Crabby for reporting.<br />
<br />
* Fixed a rare exception that could happen in GetHasSelection() if a squad died just the wrong way.<br />
** Additionally, if we ever do have an exception in there, it will now give more useful errors and disrupt the main GUI view less.<br />
** Thanks to samnainocard for reporting.<br />
<br />
=== Misc Improvements ===<br />
<br />
* In the Tech Menu hovertext for a given tech, when displaying 'New Ships for ship line' and 'Old Ships for ship line', the older value is a smaller font to make it clearer what's happening.<br />
<br />
* The intel objective for locating the AI Overlords that you have not found has been changed in a few ways:<br />
** It now just has one entry for however many you have not found, and does not specify how many there are. In some games, you don't know how many there are, and we don't want to tell you until you scout.<br />
** It is no longer linked to an actual overlord, so you can't change the priority of the objective and cause the position of the AI Overlord planet to be revealed (not that we could get this to work, for whatever reason).<br />
** The tooltip itself now states that there are one or more undiscovered AI king units, and that you'll need to find out how many.<br />
** Thanks to Tim_Fragmagnet for reporting.<br />
<br />
* The keybind for "Hold For Yellow Pings" is now X, rather than Shift+Ctrl.<br />
** This prevents issues where anything that was "just ctrl" or "just shift" was not working anymore if you held Ctrl and Shift at the same time.<br />
** Basically, when we have modifier keys that are a combo of lesser things, we don't want to trigger this, right? If you think about a word processor, as a simple example, hitting Ctrl+A should select all and not ALSO type the letter A.<br />
** There weren't really any direct issues from this, except that anyone who reflexively holds Shift down wile using place-multiple (Ctrl or Alt) would find that it failed for them. Now that will work again.<br />
** Thanks to Astilious for reporting.<br />
<br />
* Added a new is_intentionally_empty_beyond_centerpiece="true", which can be applied to fleet design templates.<br />
** When this is true, you won't get the "Fleet Design Template X never has any items added to it (centerpiece aside)! This will cause some problems." error for it being empty.<br />
** However, when this is true, if there is anything in any of the groups other than the Centerpeice slot, then it will complain about them since that's not what you indicated you wanted. Just a helpful self-check for modders and developers.<br />
** Thanks to zeus for reporting.<br />
<br />
* Added a new can_be_empty_or_filled_and_no_complaints="true" flag for fleet design templates.<br />
** This one is more for testing style fleets, which may or may not have entries in them.<br />
** This is now applied to the non-distributed Precepts of the Precursors mod, to prevent it from erroring.<br />
*** For most of the cases they are clearly test fleets, but in one case it looks like a dyson seedlings fleet was defined but just never finished being set up.<br />
<br />
* If the "for science" cheat is used without any arguments, it no longer errors out but instead just gives you 10k science.<br />
<br />
* The Poltergeist has been moved to tier 2 instead of being tier 1 in the AI Exogalactic War Front faction.<br />
** This makes it so that they are very unlikely to show up in any game that doesn't have Fallen Spire or something else truly crazy going on. The fact that these guys can shoot straight under forcefields is way overpowered and seems cheesy when it shows up out of context, but when it is properly pitted against the really overpowered forces you gather up in the Fallen Spire campaign, it fits right in.<br />
** Thanks to Arides for reporting how this doesn't fit with tier 1.<br />
<br />
* Previously, in multi-faction multiplayer if an ally was having a brownout, that was impossible to tell apart from you having one.<br />
** Now the tooltips are different for you versus your allies, so you can actually tell what is going on.<br />
<br />
* Eight various golems were actually still named "Golem Arks" from waaaay long back. Fixed.<br />
<br />
==== Capturables - Clarity and Control ====<br />
<br />
* The game now always shows if there is an AIP or metal cost to claim something, even if you are on the brief tooltips.<br />
** The colorization is also now better and more eye-catching, and on the brief tooltip it is more brief.<br />
** Thanks to Unit 744 for suggesting.<br />
<br />
* Fixed an issue that was extremely confusing, where ships that belonged to your faction now but still had not been claimed yet (because of a metal cost over time, generally) would no longer show what the AIP cost (or metal cost for that matter) were going to be.<br />
** This led to confusion about whether you had already paid the AIP cost or not, since you could look in the AIP log and see that the entry was missing.<br />
<br />
* Capturables that take a while to rebuild (like golems or arks) now can be selected like other units, but they will immediately reject any orders you give them.<br />
** You can, however, change their stances, and pause them, now.<br />
** When set into pause mode, your unclaimed ships will not actually BE claimed -- the tooltip will show that information, and it will avoid spending all that metal that your economy may or may not be able to afford, as well as potentially incurring AIP if that's related to this capturable.<br />
** Thanks to poljik2 and Crabby for suggesting.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Multiple internal adjustments to work with changes to the Vanilla code again.<br />
** Fixed some rogue debug printouts that shouldn't occur unless they are turned on deliberately.<br />
** Adjusted the WarpToPlanet() method as it could have thrown missing method exceptions due to some Vanilla code changes. However, no unit should have had the requirements to trigger this function (yet).<br />
** Fixed yet another bug where Fireteams could get stuck on planets if the command station was armed, even though the planet was already conquered. The FireteamMaintenance() function now detects such planets and resets the team's objectives.<br />
** Fixed an issue with the canSpend() method from the CostBasedShipSpawner leading to an attempt at spawning infinite ships when being allowed to go into debt. This would only occur if Kaizers Marauders were set to intensity 10, and fixes them locking up the game permanently.<br />
** Updated the included source code.<br />
* KM:<br />
** Prevented Marauders from building more than one Capital if the game was loaded from a save at just the right time.<br />
** Fixed the Raid Battleship not moving towards targets and instead staying at sniper range.<br />
** Marauders allied to players or AIs will generate only half the exowar response. Playtesting for an extended period of time revealed that this got out of hand too quickly.<br />
** Marauders will "split" their Exowar budget: If there's 2 hostile AIs they will divide it by 2, if there's 3 they will divide it by 3, and so on. This will lead to lower-rank but still more Exowar units thrown at Marauders.<br />
** Fixed Marauders at very high intensities building so many forcefield generators that they would start stacking and erroring out the threads because they could no longer find valid locations. The same treatment was given to the Defense Posts because they might have the same issue in the future.<br />
** Removed the NoDrones and EmptyPlaceholder fleet design templates. They were never used anyway and relics of previous changes when fleet ships and drones were "emptied out" and removed, but were now complaining that they had no ships in them (well duh).<br />
** The Fortified Forceshield Generator now no longer can stack with bad placements or when being pushed into one another, and now also uses the new forcefield scaling.<br />
* ESV:<br />
** General balance pass, mostly about nerfing the power of FRS ships and the Melee-Frigates. The latter were just so powerful and fast that they could act as if they were better Raid Frigates. Plus more drone fleets and less drone projectiles.<br />
*** Adjusted to no longer have min/max caps and instead use flat caps similar to Vanilla, shifted shields to hull and adjusted descriptions mentioning shields for Strike Craft, Drones and Drone Projectiles.<br />
**** Excluded are Void Bombers which use special shields as a special mechanic for themselves.<br />
**** This revealed some typos which lead to inconsistent ship line counts like no or too high variance between min/max in some cases, which are now fixed as well.<br />
*** Halved the ship cap of all the FRS ship lines<br />
*** Alpha Strike Wings now correctly empower their Damage Modifier based on being on the planet for a while, instead of adding an ambush damage modifier, it always was supposed to be a Raid ship.<br />
**** Thanks to ArnaudB and probably a few others over an extended period of time for mentioning this.<br />
*** Adjusted the Suppressor and Devestator ship counts from the starter fleets from 4 to 6 to match what the player can find in the galaxy.<br />
*** Reduced the speed of the Melee Frigate ships from 2900 to 1800. They were, again, way better than Raid Frigates...<br />
*** Reduced the damage multiplier for enemies with >= 5 tx on the Wedge Frigates from 7 to 4, but it now begins applying to enemies starting at 3 tx.<br />
*** The Metabolizing Drones from the Metabolizing support fleets now have half the health, they were too durable for mere Drones.<br />
*** The Metabolizing and Acidic factories no longer use drone guns but now use actual drones. Their self-attrition is now 35% instead of 3% per second but they no longer decay as long as their parent Mobile Factory is on the same planet.<br />
<br />
* Updated More System Defenders to 1.17.<br />
** Includes a fix to loading very old savegames.<br />
** Also should properly delete some renamed files, now.<br />
<br />
== Beta 2.716 The Great Balance Curve ==<br />
(Released January 11th, 2021)<br />
<br />
* Subversion quickstart tooltip now mentions that the nanocaust invade later in the game.<br />
<br />
* Make Astro Trains level up a bit more slowly<br />
<br />
=== Mod Updates ===<br />
<br />
* Updated the mod Extended Ship Variants to match the new unit amounts so that they won't be underpowered in the new version.<br />
<br />
* Updated the mod More Starting Options to match the new unit amounts so that they won't be underpowered in the new version.<br />
<br />
* More System Defenders Dev Build 1.16 - Ships rebalancing take one.<br />
** Updated mod by CRCGamer to have wider changes for fitting into the new balance.<br />
<br />
* Updated the UtilityMethods class so that mods can more properly use it to get entities in an AI ship group and similar.<br />
<br />
* Updated the Civilian Industries raid logic.<br />
** Making use of a new function created by Chris that gets all raid ship types without potentially erroring out.<br />
** Added a max attempts per loop per raid wave, meaning it will more quickly error out and will no longer break its entire thread for the rest of the game.<br />
** Added in some more detailed debugging for if this ever occurs again in the future.<br />
*** Thanks to mashtong54 on steam for the report, and Chris for helping optimize the fix.<br />
<br />
=== Interface Updates ===<br />
<br />
* Added a new DoOnLocalStartNonSimUpdates_OnMainThread(), which lets us do some of the logic from DoPerSecondLogic_Stage3Main_OnMainThreadAndPartOfSim() prior to the game being unpaused.<br />
** We now use this in particular to make sure that the details on the tech menu are updated properly before you have unpaused the game. Aka it shows how many ship lines would be improved, and all that sort of thing.<br />
<br />
* The way that the ship caps are calculated for purposes of previews when upgrading a tech is now vastly more accurate.<br />
** When you are looking at the list of ships lines that are improved by a tech, it now shows what their ship cap changes will be, as well as what their individual strength improvements will be per ship line. Previously you could only see this if you clicked into the C-click menu (though you could see aggregate numbers for strength, by tech, and still can).<br />
** There were a LOT of edge cases where various counting things for ships were wrong, and that code has all been completely rewritten.<br />
<br />
* The strength estimates for improvements by techs have been wrong for a long time, since they were using a formulate that wound up using the old mark level's hull and shield amounts rather than the current one.<br />
** This has been corrected, and you can now accurately see what your benefits would be for each tech. Holy decision-making ability, Batman.<br />
<br />
* When a tech will benefit ship lines that you can capture AND that you already have, it now includes both. Previously, it was ignoring any capturable ship lines that were duplicative of something you already had, which was not very helpful for decision-making.<br />
<br />
* The "weak against" tooltip (hold R and hover over enemy) is now much more accurate in terms of what it lists in general, as well as also showing things that get multiple bonuses against a single unit in the proper multiplicative format. If it's two different weapons, then it may overestimate; that's a pretty rare case, if it even exists, though.<br />
** Additionally, these are now sorted from best against the target, to least strong against the target, instead of being sorted alphabetically. Anything that is the same amount good against a target is sorted alphabetically.<br />
<br />
* The weak-against view now shows how many ships you have (or could have) of each given type. This is a handy little thing that gives you a view into how many more ships you can bring to bear of a certain sort against these enemies.<br />
<br />
* In the strong against display, it now uses the max unlocked mark of the player ship lines, rather than the lowest mark. This rarely matters, but sometimes gives more accurate bonuses.<br />
<br />
* All of the other improvements that were made to the weak-against display are also now on the strong-against display (hovering over your own units with R held down).<br />
** Being able to see how many ships of each enemy type you have discovered is actually pretty cool on this screen. It shows them all with the max discovered mark level, but breaking out them by mark level would be extremely painful in terms of how much screen space it would take.<br />
<br />
=== Balance Adjustments ===<br />
<br />
* Strikecraft (in the base game and DLC1) no longer have personal shields, but all of what was shields are now in hull.<br />
** Basically, strikecraft don’t need personal shields: they don’t live long enough for regen to kick in where that’s beneficial.<br />
** Instead, all that this means is that they have a new weakness (fusion weapons) that makes fusion overpowered.<br />
<br />
* Updated Fusion Bombers, lowering their bonus and putting most of it into the weapon damage directly. <br />
** The bonus was meant to optimize targeting, should've been lower long ago, makes them less likely to get hindered by allies at all.<br />
** Thanks to Puffin for finding this!<br />
<br />
* The Dark Spire ships that you can get from the Hacks no longer upgrade from human techs. That was overpowered for those ships, as well as emphasizing those techs way too much.<br />
** The names on these are now unique, showing "Hacked Dark Wraith" and similar rather than just showing the name from the main setup.<br />
** You now get 2 rather than just one Specter, when you hack for those. They also have half the metal cost of before, and a plasma torpedo that is substantially lower power, and slightly lower range. This keeps them from just absolutely outclassing Bombards in every way.<br />
** Thanks to CRCGamer directly for the bulk of these changes, and for the inspiring the rest.<br />
<br />
==== No More Unlock Variance ====<br />
<br />
* The galaxy option "Remove Unlock Variance in Capturables" has been removed from the game.<br />
** So has actual underlying ship line variance in capturables!<br />
** For fleet lines that are pre-existing, if they have min and max, it will now just use the max. So existing mods won't be hurt.<br />
*** If you are a modder and wanting to set something more intentional, then please use the "cap" xml tag instead.<br />
** This particular style of variance added nothing to the strategic decision-making of the game, but could lead to you getting unintentionally hosed.<br />
<br />
* On GameEntityTypeData, we now keep track of a MinFleetMembershipCap and MaxFleetMembershipCap, which is the largest number ever in a fleet versus the smallest ever in a fleet.<br />
** We had a handy "quality scoring" that previously we were using for situations where there was variance in a given fleet line (that is gone, as noted), but there are multiple fleet lines that can use the same ship in different quantities.<br />
** Essentially, there are a variety of types of fleet designs, and some of them give you more or fewer of certain types of ships. We are shifting our quality scoring to look across those types of lines, since the quality of a given fleet line purpose is always now fixed instead of variant.<br />
** Confusing? Yeah... sorry about that. Overall this is not relevant except to modders and developers.<br />
<br />
* It's worth noting that there IS still variance in how many strikecraft and frigate lines there are in a given fleet, when you find them out in the wild.<br />
** The unlock variance setting already did nothing about that, and for now we're keeping that in place.<br />
<br />
* Strikecraft random ranges are no more, so here's what we've settled on based on the prior ranges.<br />
** Bear in mind that even at mark 1 these are inflated now for player ships, so this is lower than you'd actually see in the game.<br />
** Range 10-18 is now 14.<br />
** Range 5-7 is now 6.<br />
** Range 5-9 is now 7.<br />
** Range 6-10 is now 8.<br />
** Range 6-12 is now 9.<br />
** Range 7-14 is now 10.<br />
** Range 8-15 is now 11.<br />
** Range 10-15 is now 13.<br />
** Range 10-18 is now 14.<br />
** Range 12-20 is now 15.<br />
** Range 12-25 is now 19.<br />
** Range 15-25 is now 20.<br />
** Range 25-40 is now 32.<br />
** Range 30-40 is now 35.<br />
** Range 20-35 is now 28.<br />
** Range 30-60 is now 45.<br />
** Range 40-55 is now 48.<br />
** Range 40-60 is now 50.<br />
** Range 60-80 is now 70.<br />
** Anything that already had the same min and max still has that same amount.<br />
** We are going to soon do some analysis of ships based on their strength at their ship caps and make sure that things look reasonable as divided out by tech, but this is the first step.<br />
*** Previously it was pretty hard to do that sort of analysis since any given ship line could randomly be often 50% weaker than normal or 200% stronger than normal.<br />
<br />
* All of the other types of ships that had a range of default values now have a cap in the middle, also.<br />
** Again, in all cases we can now balance from there, which is nice.<br />
<br />
==== Mark Level Scaling Overhaul ====<br />
<br />
* You'll want to read this for the detailed math behind the strikecraft: https://docs.google.com/spreadsheets/d/1PxvEq3jOEPDt7RWAZXaJEatLx_unwvsH2NgMFKoguac/edit?usp=sharing<br />
<br />
* And this has the detailed math for everything else: https://docs.google.com/spreadsheets/d/1acg0Q7C0wyXz3tHEO21UMifb3EcsihGRSJB8m6yTbX8/edit?usp=sharing<br />
<br />
* The following has been removed from the Balance_MarkLevel table:<br />
** attack_multiplier<br />
** most_everything_squad_cap_multiplier_list<br />
** frigate_squad_cap_multiplier_list<br />
** hull_points_multiplier<br />
** assist_range_multiplier<br />
** shield_radius_multiplier<br />
<br />
* A new Balance_MarkLevelScaleStyle table has been added, which has most of those things.<br />
** human_squad_cap_multiplier_list replaces the two other squad cap multiplier lists.<br />
*** This is named as such to make it clear that this really only applies to human caps, since pretty much all other factions use their own style of caps unrelated to fleet lines.<br />
** Everything else is the same in terms of the content, although they are now all expressed as lists in order to make these more concise to define.<br />
** While we were at it, we also split out the multipliers for shields and hull health, because why not. Flexibility is a good thing.<br />
<br />
* GameEntity definitions now have a new, optional, mark_level_scale_style.<br />
** This allows a nonstandard MarkLevelScaleStyle to be assigned to any entity that you wish.<br />
<br />
* There is also the ability to define defaults for entire categories, like strikecraft or frigates or turrets or whatever.<br />
** In the event that any of that is missing or not defined, then it just falls back on the defaults.<br />
<br />
* The defaults are exactly what they were in the game up until now, although soon this will be applied to increasing minorities of ships.<br />
<br />
* Strikecraft caps for human fleets have been dramatically rebalanced.<br />
** Please see v3 of this sheet for all the details: https://docs.google.com/spreadsheets/d/1PxvEq3jOEPDt7RWAZXaJEatLx_unwvsH2NgMFKoguac/edit?usp=sharing<br />
** With these changes, essentially:<br />
*** You get more strikecraft in general, but the AI does not.<br />
*** You get vastly more strikecraft at mark 2 and mark 3 compared to before.<br />
*** Overall, upgrades through mark 4 are far more powerful and represent a much greater progress toward the total power of mark 7 (mark 4 for humans is now 62% as powerful as mark 7, rather than 35%, because of the increase in ship caps without changing any actual ship stats).<br />
*** Once you hit mark 5+, there are no more additional ships added to your ship line. However, the total ships you have at mark 4 is already higher than what you had at mark 7 prior to now, so this is not exactly a punishment.<br />
*** The total strength boost of a full cap of mark 7 ship now versus before, for humans, is 21%. Aka, if you fully upgrade a ship line to mark 7, it's now 21% more powerful than in prior versions of the game. This does not affect the AI in any way.<br />
*** THAT said, you are still seeing diminishing returns on the power curve as you upgrade above mark 4. Two fleet lines both upgraded to mark 4 are now very likely to be far more powerful than a single mark 7 line.<br />
** These changes make it a lot less obvious that you should specialize in any single tech, and make a wide variety of tech strategies hopefully much more viable.<br />
*** This is not the end of the story in terms of making that so, but for strikecraft this is the big item.<br />
<br />
* Frigates now get progressively more durable in higher mark levels, and also ramp up their attack power a bit faster than before.<br />
** Overall very-high-mark frigates are considerably more fearsome than before, and they are also beefier in the middle.<br />
** Since we are not adjusting the caps of frigates up a bunch like we have for player ships, this was what made sense for this case.<br />
** Detailed math is here: https://docs.google.com/spreadsheets/d/1acg0Q7C0wyXz3tHEO21UMifb3EcsihGRSJB8m6yTbX8/edit?usp=sharing<br />
<br />
==== No More Frigates For AIs ====<br />
<br />
* Added a new is_deprecated="true" flag that allows the game to automatically remove any instances of a given ship in old games, as well as hiding it from any future encylopedias in the game.<br />
** This has been applied to the AI Raid Frigate.<br />
<br />
* All of the frigates have been removed from any AI groups that were using them.<br />
** This essentially means that AIs cannot build their own frigates anymore. They might make zombies out of some, but that's about the extent of it.<br />
** This goes back to a much older design for the game, where we wanted AIs to only have Guardians, and humans to have Frigates as their own unique tech.<br />
** AIs have sometimes been using frigates excessively, particularly stacking too many of them in guard posts as if they were just strikecraft, so that's really not something we want to have happen.<br />
<br />
* AI ship groups and fleet design templates now check to see if they are empty, and throw errors if they are.<br />
** The idea is that if these are used anywhere in the game, then you'll wind up with funky empty waves or planets or fleets or whatnot. The self-check is a help there.<br />
<br />
* AI Ship Groups are sometimes intentionally left empty (usually to not have something large and scary on every planet, and use the weighting system to accomplish this).<br />
** These ship groups now have a is_intentionally_empty="true" tag on them, so that we can know that and not complain about them during automated checks.<br />
** Any ship groups that have that tag but also have ships will now be complained about, as well.<br />
** For ship groups that are essentially deprecated, but which are in existing savegames, we now have a if_empty_copy_items_from tag that lets us assign something general into it for cases where it was previously used.<br />
<br />
* Added a new is_considered_visible_part_of_the_ai_faction_for_what_can_own_purposes flag for various AI subfactions.<br />
<br />
* For any AI factions, or any factions with the above flag, any frigates that they have either directly out, or in guard posts, will be removed and a little notice is posted silently in the log when you load a savegame.<br />
** There were some truly insane numbers of frigates in guard posts in some places before, so this will be quite a nerf to some previously-unlucky savegames.<br />
** If there were frigates in an incoming wave, or something to that effect, those will still arrive and are not cleared out.<br />
** Thanks in particular to Democracy for alerting us to how crazy this could get.<br />
<br />
==== Frigate Balance ====<br />
<br />
* Frigates (in the base game and DLC1) now have a bit more hull, and about a 16% reduction in metal cost.<br />
** Previously they just evaporated too easily.<br />
** Additionally, these took too long to rebuild, and also were a poor deal in metal-to-health ratios compared to most strikecraft.<br />
<br />
* Frigates no longer go up in ship cap at all, unlike in prior versions of the game.<br />
** For station-keepers, it was annoying to have to go back and fill in more.<br />
** For absolutely every kind of frigate, a ship cap increase of 1 on a cap of 2 (as an example) is a 50% increase in metal and energy costs, which is pretty darn turbulent on your economy.<br />
** Overall with the perception being that you need to have a certain number of frigates for them to be useful at all, it's better to just start at that number and then let them get beefier as they mark up. This gives higher-mark ones more staying power, without the added expense or gaps-in-turnover during large battles.<br />
** When you pair this with the buffs to frigates from mark level stats, it's hopefully enough to make them really interesting, but one reason we're headed into a beta branch is to find out if all the numbers check out.<br />
** So, caps for frigates have been adjusted as follows:<br />
*** Previously 1, now 4.<br />
*** Previously 2, now 6.<br />
*** Previously 3, now 9.<br />
*** Previously 4, now 12.<br />
*** Forcefield frigates are the sole exception, and they get a total of 3 rather than 4.<br />
** We may need to make adjustments to some other specific frigate lines, but we'll just see how things play out.<br />
<br />
* The max cap of the Chained Dark Spire Eidolon station-keeping frigate is now 2, rather than being the 4 it would be if it was with other frigates.<br />
** Same with Tamed Macrophage, another thing you can purchase from the Zenith Trader.<br />
** Same with Scrubbed Aberration and Scrubbed Abomination.<br />
** It's worth noting that all of these are markless frigates, so they always previously had a max cap of 1 no matter what. Having a max cap of 2 might make them a bit more fun.<br />
<br />
==== Turret Balance ====<br />
<br />
* There is a new attack_range_multiplier_list that we can use on mark level scaling styles to increase the range of certain units as they mark up.<br />
** This is not something we would ever have wanted to generalize previously, but now we are able to sub-categorize and so it's nice to have.<br />
** In most all cases, we will not actually use anything other than 1.<br />
<br />
* The assist and attack range multiplier from mark levels now only applies when it's not already a sniper-level range, or if it's not melee-range.<br />
<br />
* The game now automatically checks for human and AI styles of turrets, and differentiates them.<br />
** If something is trying to use a turret as both a human and AI type, then it now complains about that.<br />
<br />
* All of the various ensnarer turrets were being used by the AI as well as being used by one specific type of human battlestation.<br />
** This was problematic, as the costs were too high for the ensnarer turrets, they did not die to remains, they had the word AI in their name, and a bunch of other things.<br />
** These have now all been split out, although if you happened to have the AI ones in a previous game, you still will now, and they will scale wrong and still behave wrong. These were already rare, though, so it should not affect too many games.<br />
<br />
* The game now has different scaling multipliers set up for human, AI, and other turret types.<br />
** Right now, the AI and other turret types just keep using the "Original" style that give them the same stats they have had prior to this new build.<br />
** The human turrets, however, are different.<br />
*** Human turrets no longer gain any ship cap as they go up in mark level.<br />
*** The more aggressive scaling from the frigates scaling is now used, for much the same reason.<br />
*** The assist range of these turrets is like the Original style, though, not like Frigates.<br />
*** And finally, there is actually an increasing attack range on the human turrets per mark level, until mark 4. This is new and not something we will do much with other units, but is great for turrets since they cannot move.<br />
** Overall with human turrets, the goal here is again to change the curve of power like we did with frigates, but to stop increasing their ship caps as you level them up.<br />
*** It's super annoying having to go back to all your planets and place new turrets every time you increase a tech that affects some of them, and now that's no longer a thing.<br />
<br />
* Because turrets no longer increase in cap as they mark up, we needed to increase the base caps for all of them that you get.<br />
** Overall we were seeing around a 260% increase from mark 1 to mark 4 in the prior build of the game, so for now we're going with that in general.<br />
** Previous cap of 5 is now 13.<br />
** Previous cap of 7 is now 18.<br />
** Previous cap of 15 is now 40.<br />
** Previous cap of 19 is now 50.<br />
** Previous cap of 20 is now 52.<br />
** Previous cap of 24 is now 62.<br />
** Previous cap of 30 is now 78.<br />
** Previous cap of 38 is now 98.<br />
** Previous cap of 40 is now 104.<br />
** Previous cap of 60 is now 156.<br />
** Previous cap of 75 is now 195.<br />
** Previous cap of 90 is now 234.<br />
** Previous cap of 180 is now 468.<br />
** Wow some of these numbers look large. Well, you certainly won't be hurting for places to spend your extra energy, anymore. <br />
*** With these numbers you can definitely set up whatever sort of coverage you want on a planet, and then how upgraded your turrets are determines how effective the coverage is.<br />
*** In the past, it was possible that you wouldn't have enough turrets to actually get full coverage on a planet until you did some upgrades. Now that isn't a problem, energy-willing.<br />
** Puffin reminds me that the multiplier_to_all_fleet_caps="0.2" means that these will actually show up as 1/5 of the values you see here, so it's not going to be such a culture shock. That makes more sense!<br />
*** This applies ONLY to turrets.<br />
<br />
==== More Balance ====<br />
<br />
* Minefield balance:<br />
** All minefields now have a bit aggressively more than 2.6x the ship cap that their average would have been before.<br />
** Any minefields with shield points now have those as hull points instead.<br />
** There is a new mark level scaling for minefields, which does the old "original style" hull scaling, but which keeps the more-aggressive style of attack scaling from frigates and turrets.<br />
** There are way more minefields in DLC2 than in the base game, and there are none in DLC1, so some of these are not visible to most folks yet.<br />
<br />
* We no longer try to automatically calculate IsNonTurretDefense.<br />
** That had been returning quite a few false positives, such as all the ensnarer turrets and a lot of other factional structures.<br />
** That probably didn't matter until now, and it's been the same calculation for the last 3-4 years, but now we're actually doing some differentiation on this and so it needed to be corrected.<br />
** is_stationary_forcefield has been added to let us identify those, and is_non_turret_defense has been added to let us identify THOSE.<br />
** Essentially there are a few forcefields which are the latter, and the former consists of the tachyon array, tractor array, and gravity generator. We're excluding minefields from that latter category.<br />
<br />
* Non-turret defenses now have their own scaling which is basically just the frigates for hull and shields, but the original style for weapons (of which they probably have none).<br />
<br />
* Stationary forcefields do their own thing, with no weapon scaling at all per mark level (again they probably have none), but then with an increasing divergence in hull and shield multipliers.<br />
** Their amount of extra shielding gets really intense in the higher marks, and it's a pretty interesting effect<br />
** Details on their calculations: https://docs.google.com/spreadsheets/d/1acg0Q7C0wyXz3tHEO21UMifb3EcsihGRSJB8m6yTbX8/edit?usp=sharing<br />
<br />
* The ship caps on the stationary forcefields and non-turret defenses both no longer increase with mark level, so they also get some extras.<br />
** Essentially for forcefields, logistical now gets 6, military 4, economic 2. Previously it was 2, 1, 1, with increases by mark level.<br />
** For the non-turret defenses, they get an approximate 2.6x-ish boost, but it's a bit varied since we already tuned it up a little. If it feels like too few or too many, please let us know!<br />
<br />
* Then added a new is_engineer="true" for those style of ships, and a new is_default_for_engineers="true" to go with them.<br />
** The overall design is that engineers no longer increase in count as the mark level goes up, but their hull points and shield points go through the roof like a forcefield does (multiplier-wise, anyhow).<br />
** Engineers already have improvements to their ability to assist built into their designs, but now their increases per mark level are doubled from what they were. This makes individual engineers FAR more powerful with even just a single mark level upgrade.<br />
** Since the caps of engineers don't increase, we also have increased the caps of them.<br />
*** Overall their numbers are generally doubled or tripled, depending on the kind of engineer and the context.<br />
<br />
==== Guardians ====<br />
<br />
* Guardians and Dire Guardians now have their own scaling, which you can see the math on here:<br />
** https://docs.google.com/spreadsheets/d/1acg0Q7C0wyXz3tHEO21UMifb3EcsihGRSJB8m6yTbX8/edit?usp=sharing<br />
** This gives them much more aggressive attack and hull and shield boosts, and even breaks the normal rule and gives them shield radius boosts.<br />
** Until now, the AI has been nerfed pretty heavily so far in this rebalance in general, and the player has been getting substantial buffs left and right.<br />
** This is the first substantial buff to the AI, and it makes guardians actually relevant again -- at the topmost levels, the guardians are about twice as dangerous.<br />
** That said, the overall growth is pretty steady and linear, just higher, which makes sense for opposing forces. The curves for enemy growth and your growth are very different, as they are meant to serve different purposes.<br />
** It's possible that too few guardians are being seeded -- if that's the case, please let us know. They shouldn't be everywhere all the time, but they should be enough of a presence to be freaky and a problem when you see them.<br />
<br />
== Version 2.715 Unload Queuing ==<br />
(Released January 11th, 2021)<br />
<br />
* Fix a typo that was causing tons of raid frigates in ARSs and flagships.<br />
** Thanks to CRCGamer for catching and Badger for fixing.<br />
<br />
* Fireteams are now less likely to abandon the AI Overlord<br />
** Thanks again to Badger.<br />
<br />
* Put in a lot of code adjustments to prevent errors in ReevaluateUnitOrders, and to make them give us better error messages if they do encounter any. Also updated some of the other methods in the same class for good measure. On MP clients, also made it so that it just ignores these errors, since they will be quickly corrected by host-sync.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* When there is a stack of n number of ships, it already does up to n*x damage per shot from that stack, where n is at most 5, but lower if the stack is smaller. This is fine.<br />
** For single-shot small ships in stacks, we were also already adding on extra shots at a rate of 1 shot extra for every 5 ships, which also is fine and leads to the same total damage output.<br />
** However, for multi-shot small ships in stacks with s number of shots, they were getting only 1 extra shot per n ships, not n*s extra shots. Fixed.<br />
** TLDR: Stacked MLRS corvettes will now fire more shots, along with anything similar to them.<br />
** Thanks to Puffin for reporting.<br />
<br />
=== More Queued Order Types ===<br />
<br />
* Something we had thought was not really going to be possible in the game, now is implemented: the queuing of some certain kinds of orders after movement, attack, traverse-wormhole, or whatever. <br />
** The new commands that are supported basically use any of the existing buttons or hotkeys as usual, but you hold shift to append them to the end of the commands you already have in place. If you have no commands queued up already, then it will just do the thing immediately.<br />
** Unload Transport<br />
*** So for instance, give a some move orders to a distant planet, and at the end of that keep holding shift and press U (or click the interface button. The transport will unload when it gets there.<br />
*** Note that Load Transport is NOT supported. This requires all of the ships to actually get loaded properly in, potentially from other planets, and the checking for that is both really complicated and also hopefully a far less common case.<br />
** Set Pursuit Mode on or off<br />
** Set Attack-Move Mode on or off<br />
** Set Stop-To-Shoot Mode on or of<br />
** So, for instance you can give some regular move orders to one side of a planet, then give a regular attack order, then have it turn on (or off) attack-move mode.<br />
*** We can't think of any use cases for turning off a mode like this at a destination, but it is possible.<br />
*** We also can't really think of any use cases for turning ON a mode like this at a destination, because ships will follow your direct move and attack orders even when in attack-move mode, which is functionally identical to the use case here. But it does exist now, in cases it's useful.<br />
** The ability to unload transports at the destination is a big deal, at any rate, since there was no way to have that happen in an automated fashion before.<br />
** Thanks to Bummeri, Admiral, Daniexpert, StarKeep, NB_FlankStrike, Asteroid, deo , and darkarchon for requesting.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed an exception in the Auto-Juggle Energy code in conjunction with the Micro Mod Collection that happened when both types of converters were present.<br />
*** Thanks to ussdefiant60 for reporting<br />
** The description now displays that it adds the functions to adjust starting and incremental AIP or AIP reduction, as well as having the Auto-Juggle energy setting in the first place<br />
*** Thanks to Smidlee for suggesting<br />
<br />
== Version 2.714 Frigate Surge And CSGs ==<br />
(Released January 9th, 2021)<br />
<br />
* The Praetorian Guard no longer gets any mark level upgrades above the ambient of the AI during tutorials. This makes it so that the PG does not show up in force and decimate new players in Midlander.<br />
** Thanks to Matalus and smidlee for reporting.<br />
<br />
* Fixed a very strange error that we are not sure how it was not erroring for everyone, where we were calling some window management stuff from a background thread for the last month or so. Only cracking it open in the unity editor seemed to make it error. At any rate, it's corrected now, but we're not sure if it actually affected anyone.<br />
<br />
=== New Included Mod: AI Shield Generators by cml ===<br />
<br />
* This mod adds a special faction, "AI Shield Generators," to the game. This faction consists of a number of shield generators which must be destroyed before the dire guard posts on the AI Homeworld(s) can be destroyed.<br />
** Setup:<br />
*** Enable one or more "AI Shield Generators" factions.<br />
*** Set the Faction Color, Number of Shield Generators, and Number to Destroy for each AI Shield Generators faction. The first two options should be self-explanatory, while the last is explained in more detail below. It is recommended that you select a different colour for each faction so that you can distinguish between them in-game.<br />
** Gameplay:<br />
*** During the game, you will discover that a number of Shield Generator structures have been added to the map. These structures will be invulnerable to damage until you capture the planet they are on. Alternatively, there is a hack which will allow you to destroy them outright without capturing the planet.<br />
*** Each Shield Generator faction represents a network of AI Shield Generators. Destroying a number of generators equal to the Number to Destroy will cause any remaining generators in that network to self destruct.<br />
*** In games where at least one Shield Generator network is present, an AI Homeworld Shield Generator will be added to each AI Homeworld, but they will self-destruct once all of the non-homeworld shield generators have been destroyed.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* AMU<br />
** Fixed the CostBasedShipSpawner.canSpend() method instead of using the current spawn target cost always using the minimum cost contained. This lead to the ship spawner being able to go into debt even when it wasn't supposed to.<br />
** Created the CostBasedShipSpawner.canAffordAnything() method to allow a check on whether or not anything at all can be afforded.<br />
<br />
* KM<br />
** Fixed a slight debug mishap where until Kaizers Marauders were set to spawn by the true invasion time they would read that they were defeated.<br />
*** Thanks to Doc_Den for a save that lead to finding this.<br />
<br />
* More System Defenders mod by CRCGamer updated:<br />
** Notable changes are that frigates are generally less power hungry, counts found in fleets, ARS, and GCA have gone up. And I rebalanced the AI Cruise Missile Battery to be a little more threatening.<br />
<br />
=== Buffs To Player Frigates ===<br />
<br />
* Frigate energy cost rebalance (buffs):<br />
** All of the frigates with energy cost 12.5k now have an energy cost of 9k.<br />
*** This is almost all frigates.<br />
** Defensive assault frigates (station-keepers) are now 6k energy instead of 12.5k.<br />
** Watchman Frigates (station-keepers) are now 1k energy instead of 3k.<br />
** Raid Frigates are now 6.5k instead of 7.5.<br />
** Brawlers and Muggers are now 10k instead of 25k.<br />
** Thanks to CRCGamer in particular for the suggestions, and ussdefiant60 as well.<br />
<br />
* Balance adjustments to make Frigates more usable by always having a bit more of them in ship lines:<br />
** For all of these, the changes have been pretty universal.<br />
*** Ranges of 1-2 are now 2-2.<br />
*** Ranges of 3-3 are now 4-4. (This is mostly Raid and variants. Are they now too strong?)<br />
*** Ranges of 2-3 are now 3-3.<br />
*** Ranges of 2-2 are now 3-3.<br />
*** Ranges of 1-1 stayed that.<br />
** Base Game:<br />
*** Assault Frigate (no changes to its variants, where were all ranges 1-1; are these now too weak?)<br />
*** Raid Frigate<br />
*** Bounty Hunter Frigate<br />
*** Apparition Frigate<br />
*** Suppressor Frigate (range of 2-4 became 2; this is crazy powerful in general).<br />
*** Siege Frigate<br />
*** Devestator Frigate<br />
*** Ion Disruptor Frigate<br />
*** Tritium Sniper Frigate<br />
*** Ramifier Frigate<br />
*** Warbird Frigate<br />
*** Ripper Frigate<br />
*** Warbird Hydra Frigate<br />
** DLC1:<br />
*** Tesla Torpedo Frigate<br />
*** Tackle Drone Launcher Frigate<br />
<br />
* The assault frigate variants that had a range of 1-1 now have a range of 2-2. For the defensive station-keeper ones that were 2-2 for some, and 1-1 for logistical, those are now 3-3 and 2-2, respectively.<br />
** Thanks to zeus for suggesting.<br />
<br />
== Version 2.713 Marauding Again==<br />
(Released January 5th, 2021)<br />
<br />
* Changed the balance_distance_after_which_ships_will_not_chase_targets from 50k to 80k range.<br />
** This is no change to any vanilla entity because nothing had over 50k but under 80k range, but allows for modded planetary-range weapons that still do not prohibit a ship from moving towards targets if needed.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* Updated parts of AMU and Kaizers Marauders so Kaizers Marauders now work again. Mysteriously Visual Studio claimed until the 2nd update dropped that no errors existed, yet the mod would still crash... Until now.<br />
<br />
* AMU:<br />
** Fixed the ExecutorFakeFaction.instance having a false or missing self-reference.<br />
** Fixes and improvements to the CostBasedShipSpawner<br />
*** Fixed the PlanetFaction Wrapper being null instead of its content being null.<br />
*** Fixed the maxTierToUse actually being one short of the actual max tier to use. This slipped past months of Kaizers Marauders testing. It may have been that invasions already limit the amount of raiders and spawn a fixed amount, so this might've never actually mattered as much.<br />
*** Fixed the not updating its min/max spendable values if the min/max tier to use change. This also fixes the canSpend() method not taking the MinCostContained of the drawing bag with the minimum tier into account correctly.<br />
*** The CostBasedShipSpawner now has the ability to NOT spawn all ships on the same coordinates but spread them out. Sadly this cannot take ships into account that are spawned in the same cycle.<br />
**** These canges are potentially bug-heavy, but so far things seem to work out. Additional debug info will be generated if things go wrong.<br />
** Fixed the ExecutorFakeFaction being hostile to AI-allied factions, and only friendly towards AI Sentinels themselves.<br />
** GetAllPlanetsNearOwnedButNotOwned now returns not only a list of the planets, but a duo list of the planet and the hops distance. The distance is the closest distance possible to any of the sources.<br />
** Now has a definition for "Planetary" range (which is 70k base, at the default range modifier of 0.8x it becomes 56k which is slightly larger than double the gravity well, which is 52k).<br />
*** Background: Now that every weapon with 100k or higher range counts as a sniper and doesn't move towards enemies some entities in Kaizers Marauders and Devourer Chrysalis needed to have a weapon range that is planetary, but does not make them stationary snipers.<br />
** Source Code was updated.<br />
<br />
* Civilian Industries Update<br />
** Changed some references in the project to point towards the latest game dlls.<br />
** This should finally stick a nail in the Raid notifications bug.<br />
<br />
== Version 2.712 Civilian Pause ==<br />
(Released December 31st, 2020)<br />
<br />
* Under the hood, the game has always had a "toggle pause" command that basically says "whatever the state of pause is when I execute, invert it."<br />
** This was problematic in multiplayer, as several people might hit pause at the same time, or might repeatedly hit pause if there's a lag situation, and this would cause lots of confusing inversions.<br />
** Now what happens is that if it's unpaused locally, it sends a pause command. If it's paused, it sends an unpause command. This way, even if 16 people hit pause all at once, it will be 16 pause commands, 15 of which are redundant. It won't be 16 state flip-flops with a result of unpaused since it was an even number.<br />
** Hopefully this solves all of the pausing woes in multiplayer, but if not then please let us know and we can consider some more harsh methods that might subtly irritate people if we're not careful (things like "can't change pause state for a short time after it was just changed, etc"). The latter can always be a tuneable option if that's where we have to take it.<br />
** Thanks to Hecsa and Arides for reporting.<br />
<br />
* Civilian Industries updated for the latest version, and now works again!<br />
** Rebuilt to fix a reference changing from an attribute to a property.<br />
** Added some extra debug information that ClearOrders now requests.<br />
** Thanks to StarKelp for the update to his mod.<br />
<br />
== Version 2.711 Deep Memories ==<br />
(Released December 30th, 2020)<br />
<br />
'''This version is coming back out of beta faster than we had planned. People seem really happy with the new budgets, and we have too many fixes in this version and the last one for us to feel good about holding those back out of worry for any balance edge cases. If you wind up running into something like that, we apologize in advance, but it seems solid.'''<br />
<br />
=== Deepstrike Intelligence ===<br />
<br />
* Deepstrikes just got vastly more dangerous. Previously, if you put your ships into a transport then the AI ignores that for deepstrike purposes. <br />
** This led to various kinds of cheese on the part of players like just putting your ships back into the transport periodically to cancel the countdown timer of an AI Reserves attack. <br />
** We wanted to be able to retain the ability for you to fly through a bunch of planets in your transport without triggering deepstrikes, but get rid of this cheese. Until today we hadn't figured out a way to do it.<br />
** Now there is a concept of "full alert" and "residual alert" when it comes to planets that are suffering from a deepstrike from those mean players. <br />
*** Essentially, until you go about actually triggering what would always cause a deepstrike before now, nothing changes. If you have your ships in transports and move them along through enemy planets, that still works. Hooray!<br />
*** But once you have unloaded at a planet that triggers a deepstrike, it will remember that you did that for 10 minutes of gametime after you have last had unloaded ships that would trigger the alert.<br />
*** During this period of extra awareness, the AI will actually not just monitor your ships in transports, but also your ships on adjacent planets to the planet in question. Remember, a deepstrike is always deep in AI territory. So you have to retreat at least two hops away to stop them from hurling things at you. Either that, or go ahead and win quickly! Until that 10 minute period is up, even returning to be adjacent to this planet will trigger a near-immediate response. It won't reset the countdown unless you actually directly unload ships on that specific planet again, though.<br />
** As part of this, the deepstrike danger galaxy map view has been updated to reflect all of this, and have the proper details in tooltips for affected planets.<br />
** Additionally, we made some updates to the deepstrike notification in general to make it clearer what the numbers are, and when it's in absorb mode versus actively after you.<br />
** Thanks to Arides and his play group for reporting.<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in some logic that should make DoShotHitLogic errors on the client less common, as well as less damaging to the overall performance of the client. It also tells us exactly where the error is now, if it happens again, so we can truly finish the rest of it.<br />
** Thanks to Arides for reporting.<br />
<br />
* Some sort of exception in the Stage3 logic for a faction getting into an infinite loop is happening for a couple of players, but now the game will provide extra information when it logs the death of those threads.<br />
** Thanks to Isiel for reporting.<br />
<br />
* The various popup windows now have some extra lines at the bottom of them to work around the scrolling window area from incorrectly calculating very tall text sets and thus cutting off the bottom of some of them.<br />
** Thanks to Daniexpert, ParadoxSong, CRCGamer, Smidlee, Chthonic_One, and others for reporting.<br />
<br />
* Fixed another case where reconquest seeding would throw exceptions on multiplayer clients.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* When fireteams try to attack a planet but don't have a target set, it now logs an invisible warning and keeps on going rather than throwing and exception and blowing up the entire thread it is on. It also now logs which faction the fireteam belongs to.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Actually, in the two places where it is possible to have even a warning from a fireteam trying to attack a planet but having no target, both are parts of regiments of fireteams that are aimed at a planet, so we just use that planet now and correct the missing (for whatever reason) data.<br />
<br />
* In the case of a mod that is not updated and has a missing method exception during an attempt to draw a notification tooltip, it will now just not draw the tooltip. Next time the mod author compiles their code, the compiler will make them fix it, but until then it won't break games.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Greatly expanded the instrumentation on the DoFactionStepLogic method logic so that if we have an error happen in there we will know exactly where it is and what faction it is for. This doesn't actually fix anything, and the errors in there seem very rare, but it will let us fix them after someone runs into them again.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Fixed an issue where one branch of code that is used to create shots (bullets) would not properly set the origin system, even in single-player and on hosts.<br />
** This branch is not used by any actual main game code, but appears to be used by some mods. That code branch is now marked as deprecated, which will force mod authors to recompile when they start using this method, with instructions on what to do. In the meantime, any mods that are triggering this code path will just have those particular shots not appear, since they would only be a source of errors, anyhow.<br />
** Thanks to NR SirLimbo and Isiel for reporting.<br />
<br />
* Fixed another issue where if the timing was just wrong, we could create shots without a parent system, mostly in the case of multiplayer clients.<br />
<br />
* Not sure what was happening or why, and we may have fixed it two versions ago, but DoCombatStepForPlanet() now has a lot more instrumentation and will catch exceptions and report them more nicely rather than having its entire thread potentially suicide. This would probably have only been relevant for multiplayer clients, but the fix would help anyone.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Put in some extra logic to prevent the "Shot had no origin system, so discarding" spam when you are loading a savegame off disk. In those situations, it's valid to happen in general.<br />
** In the case of clients in multiplayer, it's much more rare to be valid, but still can happen, so this is also still quieted there while still trying to do connections where it can.<br />
** This sort of log spam that slows down the game right after load should be a thing of the past.<br />
<br />
* Fixed a bug where Hydral outguard minor heads were spawning hydral major heads when dying.<br />
** Added an ability to specify "None" as the type on any table-style field and have it return null. Prior to some xml upgrades it was maybe possible for it to be just set to null by having "" set, although we're not positive that would actually have worked anytime recently. At any rate, now there's a pattern that works and is also clear.<br />
** Thanks to tadrinth for reporting.<br />
<br />
* Fixed a bug from the last couple of versions where flagships would often fly off to random-seeming locations. This was them attempting to be "assisters" in a way that was unhelpful, and usually related to claiming units, which they can do from any range when needed.<br />
** This change will prevent something like a repair factory from ever wandering around the planet if you put it in pursuit mode... but we can't really think of cases where it would be desirable for one to do that. They have a long enough range that you tend to want to park them where you want to park them.<br />
** Thanks to Arides and Kahuna for reporting.<br />
<br />
=== Audio Fixes ===<br />
<br />
* Removed some old constants from the external constants xml, and in the case of the audio-alert-related ones, moved those into the settings.<br />
<br />
* New Audio tab settings:<br />
** Alert If Enemy Attackers Overpower By Ratio<br />
*** Give an audio warning only if enemy forces outnumber friendly forces on the planet by this ratio to one. So for instance, if you select the default of 5, then the enemy must outnumber your forces 5:1 (they must locally be 500% stronger than you). This prevents you from getting too many voice alerts about threats that you aren't worried about.<br />
*** Note: the old version of this in the external constants xml was still 5, but it wasn't working properly.<br />
** Min Enemy Strength Required For Major Attack Warning<br />
*** Only give audio warnings about 'major' attacks against your planets if the total enemy attacker strength is at least this. Default is 20.<br />
*** Note: the old version of this in the external constants xml was defaulting to 5 strength, instead.<br />
** Min Seconds Between Attack Alerts On Same Planet<br />
*** Do not give audio warnings about attacks on a given planet more frequently than this number of seconds. Default 300.<br />
*** Note: the old version of this in the external constants xml was still 300.<br />
** Note: the code for all of this has been completely rewritten, as the old version of the code was really unclear and often let us bypass these limiters despite them existing. So it was leading to way too many audio notifications about unimportant situations.<br />
** Thanks to Kahuna, Lord Of Nothing, and others for reporting.<br />
<br />
* More new Audio tab settings:<br />
** Min Seconds Between Attack Alerts On Home Command Station<br />
*** Do not give audio warnings about attacks on an unprotected human home command station more frequently than this. Default 30. Bear in mind you lose the game if this is lost (or if all of these are lost if you are in multiplayer).<br />
*** The old behavior was to give a warning after there had been at least 1 enemy strength on your planet, and then there was not, and then there was again.<br />
** Min Seconds Between Attack Alerts On Shielded Home Command<br />
*** Do not give audio warnings about attacks on a human home command station that is under a bubble forcefield more frequently than this. Default 60.<br />
*** The old behavior was to give a warning after there had been at least 1 enemy strength on your planet, and then there was not, and then there was again, and not differentiate between this and the warning above.<br />
** Alert If Your Shielded Home Command Overpowered By Ratio<br />
*** If your home command station is under a bubble shield and getting shot, then only give an audio warning only if enemy forces outnumber friendly forces on the planet by this ratio to one. So for instance, if you select the default of 2, then the enemy must outnumber your forces 2:1 (they must locally be 200% stronger than you AND shooting the forcefield protecting your home command station). This prevents you from getting too many voice alerts about threats that you aren't worried about.<br />
*** Note: the old values were hardcoded in, and the math was inverted so that it would give an alert any time the enemy was stronger than 1/5th of your own forces, and at least 1 strength total. This was a source of great annoyance for folks.<br />
** Thanks to Kahuna, Lord Of Nothing, and others for reporting.<br />
<br />
* At the bottom of the escape menu details screen, it now has a new section which includes things like sound playbacks that are queued, and things of that nature.<br />
** If you feel like you are having some audio issues, this will let you see if there's some sort of backlog there. Look for the lines "SFX Requests" and "SFX Delayed Requests" in particular.<br />
<br />
* The way that playback of delayed voice clips is done is now slightly more efficient, as well as hopefully slightly more correct.<br />
** It now sets a time in the future at which to play the clip, versus a countdown timer that gets reduced by the deltatime. This lets us switch back to using a struct instead of a class.<br />
** Additionally, we are now making sure that nothing can be delayed more than 10 seconds (even that is excessive). If there's a worse delay than that that happens now, it's somewhere else further down in our pipeline.<br />
** Thanks to folks for various older reports of this, like wm46.<br />
<br />
== Beta 2.710 The AIs Visit An Accountant ==<br />
(Released December 29th, 2020)<br />
<br />
'''This is on the steam beta branch! Be sure to switch to the current_beta branch if you'd like to give this a shot (which we'd appreciate). There are a ton of balance changes in this one, and more coming soon, so no way do we want to inflict this on folks without giving them the ability to test it first. The idea is a more balanced and interesting experience, really in every phase of the game at every difficulty level.'''<br />
<br />
* Forcefield guardians are now 1/100th as likely to spawn as previous, particularly when it comes to the Warden fleet. This won't help existing savegames with a bunch of them, and it's still possible for lots of forcefield guardians to show up, but it should not be very common.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
=== AI Income Balance By Difficulty And AIP ===<br />
<br />
* Removed from the ExternalConstants table:<br />
** balance_seconds_times_planets_worth_of_aip_required_to_accumulate_one_cap="50"<br />
** balance_ai_purchase_cost_per_cap_ai_income="400"<br />
** balance_strength_per_cap_general="200"<br />
*** This has been replaced by balance_base_difficulty_for_raid_traversal="10", which is the equivalent of what was being used in the code previously.<br />
*** Arguably this shouldbe 20 instead of 10 in order for this to match what the AI budgets were based on in the past, but honestly the two concepts are not actually related.<br />
<br />
* Updated the math for GetOverallAIPurchaseCostGainPerSecond()<br />
** The old logic was was effectively the following:<br />
*** EffectiveAIP / 20<br />
*** Mult by balance_ai_purchase_cost_per_cap_ai_income (400)<br />
*** Mult by ai_purchase_cost_income_multiplier for the AI Difficulty (9.5 on diff 10, 2 on diff 7, 0.8 on diff 5).<br />
*** Divide by balance_seconds_times_planets_worth_of_aip_required_to_accumulate_one_cap (50).<br />
*** Then do some other stuff that is fine, and we'll ignore that other stuff for now.<br />
** As you can see with the old logic on higher difficulties in particular, any and every AIP change upwards is incredibly painful, partially since there's no baseline income. Everything is added income completely dependent on the AIP.<br />
** There's a spreadsheet with the new logic: https://docs.google.com/spreadsheets/d/1oSsxmKXDxP28Hc-ZYXngCnqnu3mc0vXipGEdj3HqKUo/edit?usp=sharing<br />
** The new logic requires the following data changes:<br />
*** ai_purchase_cost_income_multiplier has been removed from AI difficulty levels.<br />
*** budget_base_income, budget_income_multiplier_for_AIP_Over_10, budget_income_multiplier_for_AIP_Over_50, budget_income_multiplier_for_AIP_Over_100, budget_income_multiplier_for_AIP_Over_200, budget_income_multiplier_for_AIP_Over_400, and budget_income_multiplier_for_AIP_Over_600 have all been added.<br />
** The formula for the new logic is not perfect in terms of isolating each coefficient to each range, but it does a really good job of letting us tune the ranges in general and arrive at a variety of different slopes:<br />
*** BaseIncome+((MIN(50,CurrentAIP-10))*Mult_Over_10)+(MAX(0,MIN(CurrentAIP-50,100))*Mult_Over_50)+(MAX(0,MIN(CurrentAIP-100,200))*Mult_Over_100)+(MAX(0,MIN(CurrentAIP-200,400))*Mult_Over_200)+(MAX(0,MIN(CurrentAIP-400,600))*Mult_Over_400)+(MAX(0,CurrentAIP-600)*Mult_Over_600)<br />
*** The end result is something that is substantially more income at the lower difficulties (4 and down), while still keeping them very tame. They are not so incredibly poor as before.<br />
*** At AIP 10, the general bump is at least around 300% over what it used to be, but on difficulty 5 the budget at AIP 50 is only 8% what it was. For difficulties above 5, the budgets are only about 75% of previous at AIP 50.<br />
*** Overall the budgets are higher for AIP 4 and down, and in general you can see how that works on the spreadsheet here: https://docs.google.com/spreadsheets/d/1oSsxmKXDxP28Hc-ZYXngCnqnu3mc0vXipGEdj3HqKUo/edit#gid=1751215831<br />
** Thanks to TechSY730, ArnaudB, Strategic Sage, CRCGamer, -NR-SirLimbo, Puffin, waspwasd, and others for helping with discussion and thoughts on this.<br />
<br />
==== And For Multiplayer ====<br />
<br />
* When there is more than one human empire present in a galaxy, the budgets of the AIs actually now ARE scaled up, counter what we had planned to do in the past:<br />
** At 2 human empires, the budget for each AI is 1.33x up.<br />
** At 3 human empires, the budget for each AI is 1.8x up.<br />
** At 4+ human empires, the budget for each AI is 2.4x up.<br />
<br />
* It's worth reminding that when there are multiple allied AIs, they already all get lower budgets, which happens after this increase. However, we are redoing the budget logic.<br />
** Old logic:<br />
*** On difficulty 5 and below, each AI gets one portion out of the whole of what a single AI would have. So 3 AIs each get 0.33x, 2 AIs get 0.5x, 1 AI gets 1x, etc.<br />
*** On difficulty 6 and up, if it's 2 or 3 AIs then they get 0.75 of normal for each, and if it's 4+ AIs then they each get 0.5x of normal.<br />
** New logic:<br />
*** This no longer differentiates by difficulty level, as there are already plenty of dials dealing with that.<br />
*** At 2 AIs allied to one another, the budget for each is 0.9x.<br />
*** At 3 AIs allied to one another, the budget for each is 0.8x.<br />
*** At 4+ AIs allied to one another, the budget for each is 0.7x.<br />
<br />
* If there are multiple humans versus multiple AIs, it all gets multiplied together.<br />
** So as one example, 4 humans versus 4 AIs, then those are combined and the original budget of whatever (we'll call it "100" for easy math) becomes 240 because of the humans, and then down to 70% of that because of the AIs, so 168 for each.<br />
<br />
==== All Four Difficulty Meters Expanded ====<br />
<br />
* For whatever reason, previously you could never set the Praetorian Guard Difficulty level, so it was always set to 5.<br />
** Now you can properly set it from 1 to 10 per each AI in a game. A "perfect 10" game is now 10/10/10/10, not 10/10/10.<br />
<br />
* The way that the starting budgets, and the bonus budgets, are calculated for the hunter fleets are now entirely based on the hunter themselves and not in any way on the actual AI sentinels difficulty.<br />
** Previously, the starting budgets and bonus budgets were defined as increasingly large on the higher hunter difficulties, but also were affected by the sentinels difficulty quite a lot, so a 10/10 was multiplicatively harder than a 10/7 or a 7/10.<br />
** This basically is a huge nerf to the hunters if you were playing with them AND the sentinels cranked up, or if you were playing with these on the defaults but the main AI higher. If you were playing with these higher but the main AI more in the default range, then it's about the same as it was.<br />
** It is entirely possible we are going to need to rebalance these substantially, so if there is any feedback please let us know.<br />
** On hunter difficulty 5, you wind up with about 2 strength at the start, and maybe 3 total strength after 3 minutes if you don't do anything. On hunter diff 9, it's more like 9 total strength after 3 minutes, and much more rapidly aggressive.<br />
<br />
* In the lobby, you can now see all the details of the hunter fleet difficulty levels in their tooltips.<br />
<br />
* The Warden and Praetorian Guard fleets have also gotten the same sort of upgrades, with the ability to see what their difficulty levels do, and with their difficulty levels being redefined to be independent of the main AI sentinels difficulty level.<br />
** One of the things that was really not clear unless you went wiki-diving is that the raw incomes of these two factions are based entirely on the difficulty level of the sentinels, not their own difficulty.<br />
** Their difficulty determines their starting populations, and their population caps, but that can be quickly dwarfed by the donations from others forces of the AI (particularly donation from AI sentinels converting to Hunter, or Warden becoming Praetorian when an AI Homeworld is attacked.)<br />
<br />
* The main AI types now continue to show their narrative description, but also show some hard data to go with it.<br />
<br />
==== AI Floor And Related ====<br />
<br />
* Added a new aip_absolute_floor for each AI difficulty level, with the following values:<br />
** Diff 1-4: 10.<br />
** Diff 5-6: 20.<br />
** Diff 7: 30.<br />
** Diff 8: 40.<br />
** Diff 9: 50.<br />
** Diff 10: 60.<br />
** Note that the underlying starting AIP is still always just 10. But the effective AIP will never actually BE 10 on anything higher than difficulty 4 now, which basically has two effects:<br />
*** Firstly, it gets the game moving more quickly, with the AI being a lot less anemic at the start as the difficulty levels go up. The AI is increasingly quick to recognize you as you get up there in difficulty levels.<br />
*** Secondly, it does also give you a certain amount of "free AIP that doesn't change the situation" in each difficulty level right at the start. For instance, on difficulty 10, there are now 50 AIP that you can incur -- without any reduction -- before you even START to see the AIP rise from its new starting value.<br />
**** It's worth pointing out that this is not TRULY "free" AIP, because the floor percentage is still going up no matter what, and the game is already starting you out in a harder situation now, but it is essentially "free for a while," anyway. In the long form of a campaign it is not free at all, but in terms of short-term consequences in the first 15-20 minutes of a campaign, there's no change to the AIP responsiveness levels when you take your early objectives.<br />
***** This means the early game is likely to be more difficult at higher difficulties in general, but there's also no need for strategies where you keep the AIP ultra-low (since you can't), and instead you have the flexibility of HOW to spend your first "free for now" AIP, and after that shift into thinking about how not to raise it any more if that's your strategy.<br />
** The in-game tooltips have been updated to include wording about the new absolute floors that were added, including a special note if your actual AIP is currently lower than the absolute floor.<br />
** The reason that we didn't just flat make the starting AIP higher (which would have in some ways been simpler) is that it would have been just a straight nerf to players, versus giving the higher difficulty levels this "free for now" grace period to play around in. Once you are to the mid-game on any difficulty level, this new "absolute floor" really is not likely to be a factor at all. This just gets games off the ground faster, and makes the AI progressively more dangerous in the early game on higher difficulties.<br />
** Thanks to TechSY730 for suggesting something along these lines.<br />
<br />
* With all of the changes that have been made to AI budgets, the "Absolute AIP Floor" has just been set to 10 across the board for now.<br />
** This lets us keep the option of using it more in the future, or lets mods turn it on and use it, but effectively turns it off for now.<br />
<br />
* The initial AIP that players start with is no longer 10. It is now 10 per human empire -- so if there are 3 human empires, it will start at 30.<br />
** If you are playing single-player, or shared-faction multiplayer, there is no change here.<br />
<br />
* Added a new "AIP Never Reduces Below" mechanic:<br />
** No matter the AIP Floor, no reduction will happen that would cause the AIP to shrink below this amount, or shrink while it is below this amount.<br />
** This is set to:<br />
*** Diff 1-4: 10<br />
*** Diff 5: 50<br />
*** Diff 6: 60<br />
*** Diff 7: 70<br />
*** Diff 8: 80<br />
*** Diff 9: 90<br />
*** Diff 10: 100<br />
** How is this different from the AIP Floor? Well, the AIP will actually BE whatever the floor is. <br />
*** So if the floor was set to 180, then (ouch) the AIP would be 180.<br />
*** This is instead a limiter. At difficulty 7, if you pop an early data center and get 20 reduction any time before you have 70 AIP total, it doesn't matter. It will be there waiting for you later, but it won't reduce your ongoing early progress.<br />
*** This changes the flow of the early game, preventing you from blunting the rise of AIP for a while. In some ways, this helps to make it so that you don't need to worry with data centers early, and can focus on things later.<br />
*** Of course, as with an AIP Floor, when you pass over the "never reduces below" level, then any reductions that you previously got will kick in. So for instance, if you popped a data center to save 20 AIP too early on diff 7, and then you get your total up to 90 AIP, your actual total will stick at 70 for a while. If you did 60 AIP of reduction, then it will stick at 70 for a LONG while.<br />
*** Essentially, what this prevents is advanced players denying the AI any chance to play its own early game. It allows for the same amount of flexibility in AIP reduction in the really long term, assuming you go over the very low AIP counts, and it does allow you to deny the AI at every level the ability for it to really get into its mid-game or late-game.<br />
*** If folks find this too restrictive, we can adjust it, but particularly with all of the nerfs to the AI budgets on AIP in the 100-600 range on difficulties 5+, this is something that seems to pair well with that. We definitely like the idea of low-AIP games, but even 100 AIP at the end of a game is considered ultra-low-AIP. What this does is prevent you riding the floor during the very early game in an ultra-low-AIP game, which gives the AI a bit more chance to react and build up, but still not TOO much.<br />
<br />
=== AI Reserves Balance ===<br />
<br />
* If players have controlled any of the planets that the AI Reserves thinks they are "attacking" any time within the last 10 minutes, then there is no warning from the AI Reserves prior to them spawning a wormhole and spewing forth ships.<br />
** For anyone who is using the normal AI Reserves Grace Period setting, which defaults to 60 seconds, this will mean that after the 60 seconds is up, you immediately get jumped by the AI Reserves. For anyone who has turned the AI Reserves Grace Period setting down to 0 seconds, they should get jumped immediately after losing a planet if it's too far from their other planets.<br />
** Thanks to Smidlee for suggesting.<br />
<br />
* The AI Reserves grace period has been updated as follows (and its tooltip now shows this):<br />
** If the highest-level AI is difficulty 8, it will give you half this time. If the highest-level AI is difficulty 9 or above, this grace period does not apply at all.<br />
** So when we get into very high-level play, the grace period for losing planets in hostile territory and having the AI strike back at you disappears entirely. This is how it was for all difficulty levels prior to October of this year.<br />
** Thanks to Smidlee for inspiring this change.<br />
<br />
* Previously, some of the AI Reserves timings were hardcoded in, and now they are data fields on the main AI difficulty.<br />
** ai_reserves_wormhole_spawn_interval was always 80, previously (this is how often there are new spawns after the first).<br />
** ai_reserves_initial_wormhole_spawn_delay was always 120 (this is how long before the first spawn if you're deepstriking but didn't lose a planet).<br />
** ai_reserves_wormhole_despawn_time was 180 (how long the reserves hang around after their work is done; keeps them from popping in and out).<br />
** ai_reserves_income_increase_interval was 30 (how frequently they get more budget, which is the major balance lever for making them harder.<br />
** These now are set up by difficulty as follows:<br />
*** Diff 1: 140 spawn interval, 200 initial spawn, 100 despawn, 60 income increase.<br />
*** Diff 2: 130 spawn interval, 180 initial spawn, 100 despawn, 55 income increase.<br />
*** Diff 3: 120 spawn interval, 160 initial spawn, 110 despawn, 50 income increase.<br />
*** Diff 4: 110 spawn interval, 140 initial spawn, 120 despawn, 45 income increase.<br />
*** Diff 5: 100 spawn interval, 120 initial spawn, 160 despawn, 40 income increase.<br />
*** Diff 6: 90 spawn interval, 100 initial spawn, 180 despawn, 35 income increase.<br />
*** Diff 7: 80 spawn interval, 80 initial spawn, 200 despawn, 30 income increase.<br />
*** Diff 8: 70 spawn interval, 60 initial spawn, 220 despawn, 25 income increase.<br />
*** Diff 9: 60 spawn interval, 40 initial spawn, 260 despawn, 20 income increase.<br />
*** Diff 10: 40 spawn interval, 20 initial spawn, 320 despawn, 15 income increase.<br />
** This makes it so that on most difficulties, the AI Reserves are now less threatening, but on the higher difficulties they are even more of a big deal.<br />
** It should be harder to sneak in on a high difficulty and neuter a planet before they can get you.<br />
** Thanks to Smidlee for inspiring these changes.<br />
<br />
* Grappler Guardian nerfs<br />
** Move speed from 2,900 to 1,800<br />
** Damage from 10,000 to 3,000 <br />
** AI cost from 525 to 700<br />
** Grapplers were already ridiculously strong without the changes to the reserves, but Zeus realized these would have been just miserable in the new balance by Chris.<br />
<br />
=== AI Praetorian Guard Balance ===<br />
<br />
* Added a new gets_praetorian_bonus_to_mark_level_from_ai_faction_difficulty field to factions, which is true for the AI Praetorian Guard only.<br />
** This causes the below to kick in.<br />
<br />
* Added a new added_praetorian_mark_levels_above_ambient for the AI difficulty level, which will make the Praetorian Guard a higher mark level than the "general mark level" of the AI that they are guarding by this many mark levels.<br />
** Bear in mind that they are almost always guarding Mark 7 or Mark 6 planets, so if the ambient level is only 2 or 3, then these were really wimpy compared to the rest of what they were trying to protect until now.<br />
** On difficulties 1-4, this is just 1. So if everything else is mark 2, these will at least be mark 3 helping out defend the mark 7 planet. Not a large jump.<br />
** On diffs 5-6, this is 2. So if everything else is mark 2, these will at least be mark 4 and a bit more helpful to that mark 7 planet.<br />
** On diffs 7-8. this is 3. So if everything lese is mark 2, these are a much scarier mark 5 defending that mark 7 planet.<br />
** On diff 9, this is 4. So if everything else is 2, this is 6.<br />
** On diff 10, this is 5. So unless everything else is somehow mark 1, this is always going to be mark 7 like the planet it is defending.<br />
<br />
* Added a new upgrades_ships_to_general_mark_level_if_they_are_lower for factions, which is now applied to the following factions:<br />
** AI Wardens (NOT hunter)<br />
** AI Praetorian Guard<br />
** AI Instigators and Risk Analyzers (probably never relevant)<br />
** Astro Trains (probably rarely relevant)<br />
** What this does is make the existing ships of these factions rank up if their effective general mark should be higher. This is similar to how player ships rank up when you unlock a new tech. Normal AI Sentinels and Hunter and CPA ships all just stay at the level they were created at, and any new ships would be at a higher level as needed.<br />
** This ha a particularly outsized boost on the PG, but also can be a pretty big Warden boost if you've not been engaging the warden.<br />
*** In one test-case game where there was 21 PG Strength at the AI home world an hour into the game, all mark 1, with 95 AIP the general mark level was 2 and the AI difficulty level was 9, so all of the PG ships immediately upgraded to mark 7 on load and their strength jumped to 76.<br />
*** In that same test-case game, the Warden ships were already largely mark 2, so their strength went up only maybe 25% as they upgraded the older stragglers to mark 2. Threat did not change at all.<br />
<br />
=== Updates To Included Mods ===<br />
<br />
* AMU<br />
** Removed the Marauder-related MarauderInvasionAvoidIfHostileRollup and MarauderInvasionAvoidAlwaysRollup rollups (which were used universally anyway).<br />
** Replaced them with a 3-pronged system for factions to make smarter decisions with fireteams:<br />
*** NastyCriminallyUnvervaluedStructuresToAvoidRollup contains things such as Eyes, Nasty Picks, Conquest Vengeance Generators, Nanobot Centers, etc and will NOT block attacks, but denote that attacks will NEED to be much stronger than strength indicates.<br />
*** NastyStructuresToAbsolutelyAvoidRollup contain things that should NEVER be attacked and planets with these should NEVER be settled on. Such as, for example, hostile Dyson Spheres, Dark Spire Vengeance Generators (non-destroyables that is), etc...<br />
*** NastyStructuresToAbsolutelyAvoidAllegianceIrrelevantRollup is the same as above, but they are extremely fluid in their allegiances and unreliable allies, thus they are just off the list permanently. For the moment only used the Dyson Precursors of the Precepts of the Precursors mod.<br />
** Created AnyPresentOnPlanetOnly(), as well as Friendly-only and Hostile-only variants of it in EntityRollup for very quick checks whether or not any are present at all.<br />
*** Additionally for all of these for-specific-faction-only variants were created: TotalNumberPresentOnPlanet(), GetAllPresentOnPlanet(), GetAllStrenghtPresentOnPlanet() and AnyPresentOnPlanetOnly().<br />
** Created ShouldAVoidBecauseOfNastyStuff() which now also invalidates CanGainOwnershipOfPlanet() and ShouldBeDefended() in SmartFireteamedFactionImplementationBase when present.<br />
** This will fix Factions trying to gain control of planets with, for example, hostile Dyson Spheres which will always in time erradicate the attacker, even if the current strength is enough to deal with enemies.<br />
** Created some static faction allegiances to reduce GC churn and improve run times: AbsoluteNeutral, HostileToAll, FriendlyToPlayers, AlliedToAIs.<br />
** The ExecutorFakeFaction now bears the display name of "AI Special Operations", and is always allied to all AIs (even in civil war), and allied to all AIs are allied to.<br />
*** The purpose is to have an AI-allied faction which can be modded based on ships having certain related factions to respond to, such as creating an AI response to the various, vastly more powerful Devourer Golems in the upcoming Devourer Chrysalis mod, as well as other special mechanics for the upcoming Fatal Warfare mod.<br />
*** As before scripts can be added to the ExecutorFakeFaction which can then be made to search for the various ships, structures etc and manipulate those.<br />
** AMU Stand-Alone Features have been implemented. By default these amount to no change!<br />
*** Additional starting AIP or AIP reduction can now be set freely, anywhere from -250 to 250. This will added as AIP or AIP reduction to the default 10 starting AIP.<br />
*** Auto AIP can now be set. At an interval of 1-120 minutes anywhere from -100 to +100 AIP will be added. If set to 0 the function is entirely disabled.<br />
**** Both of these are in the "Balance" tab of the Galaxy Settings menu.<br />
*** Auto Juggle Energy is a new setting with a much more complex mechanic behind it.<br />
*** To sum it up: It's a setting in the Automation Tab that attempts to keep the player's energy pool at a at least X amount energy. Can be set to 0 to disable the function. Every second the code will scan all player-owned planet fleets and try to adjust:<br />
**** If there's too little energy more Matter Converters will be built, if possible. Additionally, if the Micro Mod Collection is installed and Energy Converters exist, those will be destroyed up to the energy threshold before even starting on Matter Converters.<br />
**** If there's too much energy as many Matter Converters as possible will be destroyed. Additionally, if the Micro Mod Collection is installed and there are no more Matter Converters to destroy then as many Energy Converters as possible will be constructed.<br />
**** The code also recognizes the player trying to build something. If the player attempts to place 5 entities (by pressing the key associates with placing 5x) with 20k cost each it will automatically try to free up another 100k energy so these can all be built.<br />
***** It's also smart enough to recognize the maximum possible amount that can be built, so if only 3 more of the 20k entities can be constructed, even if the key for 5x is pressed only 60k energy will be factored in. Note that entities that cost no or negative energy will simply be left out.<br />
**** Same goes for capturing objects. If they cost energy that energy will be added to the required balance.<br />
**** The best efficiency and safety net would be to to, for example, set the required balance to a very low value (maybe 20k so that all types of Frigates can still be built) at the start and get as much bonus metal as possible, while later on when planets are at risk setting the value to slightly more what losing the most productive would cost. This actively improves the metal economy of the player while also cutting down on the risk of brownouts when more command stations fall in quick succession.<br />
**** A notification warns the player if they are spending more than 10% of their metal income converting it to energy. The notification warning level goes up from informational to full-on-red-alert when at least 50% of the total metal income is spent on conversion.<br />
** Updated the included source code.<br />
<br />
* Kaizers Marauders:<br />
** Used the above changes to no longer have Marauders invade on planets (and disfavor neighbors of planets) with NastyStructuresToAbsolutelyAvoidTags, and totally avoid planets with NastyStructuresToAbsolutelyAvoidRollup and NastyStructuresToAbsolutelyAvoidAllegianceIrrelevantRollup on them, along with heavily disfavoring their neighbors.<br />
** This in combination with the changes to Fireteam logic in SmartFireteamedFactionImplementationBase should now fix the bug where Marauders were stuck on a Planet with a DSVG, always camping there because Fireteams told them it could be conquered, but in fact they were not allowed to settle there.<br />
*** Marauders SHOULD not get stuck if between such inconquerable planets, all they'd need is the strength to path through these planets and conquer an adjacent world, but it may inhibit their expansion. This, however, would only happen if Marauders were totally boxed in, and it doesn't account for them being able to pop up anywhere in the galaxy with invasions. It SHOULD be fine. But there COULD be issues, remains to be tested.<br />
** Fixed the notifier for superstructures not telling the player what structure is about to spawn, only what it does, and instead displaying the faction name.<br />
** Removed a potential memory leak in the superstructure notifier.<br />
** Fixed another potential bug in the superstructure notifier related to cloning itself.<br />
<br />
* Fixed a mix-up in the description for the Auto Juggle Energy option description.<br />
<br />
* Fixed a typo in the Galaxy Setting for starting AIP [reduction] and adjusted it to no longer refer to the static 10 starting AIP as this now scales with AI difficulty.<br />
<br />
* AMU:<br />
** Created GetAllPlanetsNearOwnedButNotOwned() with a faction or faction type as input to get the "neighboring" territory of a faction within a set amount of hops.<br />
** More bugfixes to the Fireteam logic to prevent especially Kaizers Marauders from getting stuck on planets they have no business on.<br />
** Potentially fixed an exception in the Marauder debugging printouts in SmartFireteamedFactionImplementationBase's FireteamMaintenance() function.<br />
** The Metal Bleed notifier (from the Auto Juggle Energy function) now has an icon, the severity now accurately factors in game speed, hovering over it shows raw values of and percentages of the metal production efficiency.<br />
*** This fixes the severity increasing for no good reason the lower the game speed went, and vice-versa.<br />
** Included Source Code updated.<br />
* KM:<br />
** Yet more debugging to prevent Marauder fireteams from becoming stuck on planets they are not allowed (for good reason) to settle on.<br />
** More fixes to the Superstructure tooltip:<br />
*** The icon of the superstructure now shows.<br />
*** The planet name will now be revealed if the planet is explored, not just if the superstructure is visible to the player.<br />
*** Clicking onto it will, if the planet is explored and not just if the superstructure is visible to the player, take the player there.<br />
* ESV:<br />
** Rescue Beacons are now no longer swappable. This didn't do anything functionally, but it did most certainly cluttered the swap-ship-line UI.<br />
** Rescue Beacons and all other types of drone projectiles are now unable to target or alert guard posts.<br />
<br />
== Version 2.709 Obedient Engineers ==<br />
(Released December 23rd, 2020)<br />
<br />
* In the build sidebar, the mark level is now the first thing that is shown in the top line where it shows the name of the things being built. With long names of units, that could sometimes push the mark level underneath the text of the metal cost where it was invisible. The end being cut off is fine, but the mark level is the important thing to be seen.<br />
** We have also made the text 10% smaller on this line, because with the recently-revised font it was a bit on the large side for a lot of units.<br />
** Thanks to Corpserule for reporting.<br />
<br />
* Depending on network latency and a few other factors (particularly running the game speed at a high rate), it was possible for multiplayer clients to have a very quiet battle where ships lost health but were not showing visible or audible shots.<br />
** The game now goes to great lengths to account for this and prevent this sort of thing. This should make the "Shot had no origin system, so discarding" silent messages in the client log vastly more rare, but they are still possible to have happen. Especially at a mega high game speed and with enough lag, it's inevitable to happen, but it really should not be too common now (whereas it was almost guaranteed to happen before, at least some).<br />
** If some folks are still seeing this happen more frequently than desired, we can work on putting in yet more data encoded into the shot objects as sent from the host to the client to work around this. We made a huge number of those changes already, but there's certainly more that we could do if it is more than just an edge case now. Just let us know!<br />
** Thanks to Ozone and his play group for reporting the most severe case we'd seen.<br />
<br />
=== Bugfixes ===<br />
<br />
* The host is now able to fix capturable fleets if they wound up seeding empty for some reason. It happens automatically as a form of self check. This being empty probably was an indication of some other error that happened during mapgen, but it's hard to say for sure. At any rate, self-correction is nice, and it now does that in cases where it is needed.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* Somehow we were having some decollision move orders that were happening for certain ships that made them move in strange wrong ways even though we check to make sure that ships are on the same planet that the order was calculated for. The only real conclusion that we can draw is that this is a ship that changed planets during the middle of the calculation. We now have it compare the current planet at the start of the calculation and at the end of the calculation, and if those do not match it does not send the decollision data that it calculated.<br />
** We already have logic for stopping the logic for ships that have a wormhole order as their next command, but potentially it happens in the part-of-a-second gap between that existing and it switching planets.<br />
** Additionally, just in case, we also now have it not queue any decollisions for any ships that have been on their current planet for less than 3 seconds.<br />
*** We wound up putting this logic in several places, preventatively. Decollision orders were already cleared when a ship changes planets, so we were extra careful to make sure to find these since these are a bit latent, clearly. The three second window should be plenty to find all of them at normal game speeds, although at extra fast game speeds it might be a bit too narrow. If that ever still causes strange movement, we'll look into that.<br />
** Thanks to poljik2, Crabby, and Isiel for reporting.<br />
<br />
* When decollision move orders are invalidated, it now always does a more thorough job and removes the decollision coordinates on the entity itself. This may have been part of the very rare "move to wrong location" issue.<br />
<br />
* Fixed a number of bugs that were causing notifications to either show a random icon when nothing was set, or to show no icon at all. This affected a good portion of our icons, where the code was not really set up to actually draw the new icons we had set up for them.<br />
<br />
* Fixed a potential bug for speed group units that were calling GetTotalDistanceToFinalMoveTarget() and potentially erasing a lot of orders as invalid as they did so. Nobody reported it, but it was probably a thing.<br />
<br />
* The Extra-Strong Marauders that zeus made for Badger will no longer appear in new games. All existing Extra-Strong marauders will blow themselves up now.<br />
** Undo the balance problems for marauders with their extra strong raiders. Those stronger units will come back in the future sometime, but in a more limited way under different circumstances.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* Quieted some pointless steam errors that could happen when a multiplayer host killed their program non-gracefully.<br />
<br />
* Put in a couple of minor protections for stale text showing next to planets. We've seen it happen, but have trouble duplicating it. Is it possible that there are some very specific conditions like loading a savegame that is much earlier into the game after playing another way later in, or something like that? We've tried testing that and a few similar theories, but can't duplicate it with those. We also tried a code review, and did not see anything wrong. Hopefully it is intermittent enough to not be a true problem until someone figure out how to help us reliably replicate the issue.<br />
** Thanks to Kahuna and Crabby for reporting.<br />
<br />
==== Engineers In Particular ====<br />
<br />
* When engineers are given wormhole orders, they are now actually obedient.<br />
<br />
* When engineers are explicitly told to assist a factory, they will now do so regardless of the factory type.<br />
** Previously there was a bug that only made them work with stationary factories that way, not mobile support ones.<br />
** Thanks to Strategic Sage for reporting.<br />
<br />
* When engineers are not in Pursuit mode, they will now gang-up assist a factory within their assist range, if available.<br />
** It doesn't matter if they spread out their assistance or not, since 10 engineers assisting 1 factory while a second factory just does normal speed is equal to 5 engineers each helping those two factories.<br />
** Previously, engineers had to be in pursuit mode to automatically choose to help a factory.<br />
** Thanks to Strategic Sage, ArnaudB and Metrekec for reporting.<br />
<br />
* Fixed several bugs with engineers helping with the construction of things in general, which led them to stop building things before they were actually finished, etc.<br />
** Thanks to DEMOCRACY_DEMOCRACY for reporting.<br />
<br />
=== Balance ===<br />
<br />
* Data Centers now increase in volume on larger maps. It says the following in their tooltips:<br />
** On maps larger than 80 planets, the number of data centers selected increases by half the scale of the extra number of planets. So on 160 planets (200% planet count), it would give you 150% (9 by default) data centers.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Added a new is_immune_to_zombification for faction types, which is now true on the three types of zombie factions and on the "natural object" faction.<br />
** This prevents any ships in those factions from being nanocausted or zombified, though they can be [redacted] (future feature).<br />
** If not being able to play "zombie pong" is hated, then these can easily be turned off via just xml. But the goal is to not needlessly prolong battles when you have two zombifiers against one another.<br />
** Thanks to Ozone, Metrekec, Chthonic_One, CRCGamer, and Badger for weighing in on this.<br />
<br />
* After lots of feedback from folks disappointed that zombie pong was gone, we are bringing it back. The feature to disallow factions from being zombified remains, but is not being used on the zombie factions.<br />
** Thanks to Strategic Sage and many others for bringing this up.<br />
<br />
* General reductions to the Extragalactic War ship speeds. Spire ships can now catch almost all of them.<br />
** Planetcracker and Mothership speeds have been reduced from 1000 to 400. <br />
** Flenser was already at 200. It's staying there for now.<br />
** Thunderchild reduced from 800 to 500.<br />
** Jackalope reduced from 2200 to 1400.<br />
** Hunter / Annihilator reduced from 700 to 600.<br />
** Chimera from 600 to 400.<br />
** Wyrm, Wendigo, and Wendigo Drones from 2200 to 1200.<br />
** Hunter / Seeker from 1000 to 500.<br />
** Phoenix from 2200 to 1200.<br />
** Poltergeist from 1000 to 300.<br />
** Maugrim from 1000 to 300, and their drones from 1600 to 600.<br />
** Thanks to Astilious, Lord Of Nothing, Chthonic_One, CRCGamer, zeusalmighty, Ozone, and others for weighing in.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* AMU: More adjustments towards Chrysalis Devourer:<br />
** The ExtendedHackingImplementation now supports metal and science costs on launch, per second and whether or not the hack auto-cancels if the limit (on cost 0 in storage, on granting metal, since there's no limit to stored science, the metal storage limit) would be exceeded.<br />
** CheckIfHackIsDone() in ExtendedHackingImplementation now checks for the hacker's hacking points to be sufficient.<br />
** Added an auto-description feature that will provide additional info to the various factors (if a hack is done by a battlestation/citadel, if it costs metal/science, all that kind of stuff). This affects all hacks in Kaizers Marauders that use such special mechanics.<br />
** The WarpToPlanet function also accepts a location to warp to. Even if it's on the same planet the location is always used.<br />
** Created SetEntityPath as a simple means to create have a ship move somewhere.<br />
** Created FactionAllegiance.ResetAllegiance() in order to reset an allegiance without provoking a ton of GC churn and a need for comparison.<br />
** Added a variant of getMarkLevelFormated() to the AMU core and ArcenDoubleCharacterBuffer extensions that takes in a byte of the actual mark. Mark 0 refers to markless.<br />
* Kaizers Marauders were adjusted to work with these changes<br />
<br />
== Version 2.708 Mapgen For Multiplayer ==<br />
(Released December 21st, 2020)<br />
<br />
* The icon for cross planet attacks has been updated to a stylized prison cell rather than the stylized handcuffs. Now that we have different severity colors for events, this will be vastly more visible.<br />
** Thanks to Badger for suggesting.<br />
<br />
* In the medium tooltips, it now shows the "G-Speed" of ships if they have a group-move speed that is different from their normal base speed. In the full tooltip, it now shows what the original speed of the ship would have been, if there is a group move speed, since now the original is not shown up in the main stats area. This makes group move speeds easier to understand at a glance, for new folks in particular.<br />
<br />
* We had some old logic in the game for not having sniper-range-style ships chase targets, but it was set at a value of 120k or so range, and so did not handle some lower-ranged ships that still have no reason to do this sort of movement. Artillery Golems have a range of 99,200, for instance.<br />
** We have now set up a new external constant, balance_distance_after_which_ships_will_not_chase_targets, rather than having this hardcoded. And this is now set to 50k, which is just slightly less than the diameter of the gravity well. Any ship with that level of range should not be chasing its targets.<br />
** Thanks to GreatYng, Arides, ArnaudB, Isiel, CRCGamer, TechSY730, and Metrekec for reporting.<br />
<br />
=== Map Seeding Logic (Mostly Multi-Faction MP, But Also A Bit More) ===<br />
<br />
* The seeding for all of the major capturables is now fully updated to be based partly on how many human empires there are, and the tooltips in the galaxy options now also reflect that.<br />
** Additionally, when it comes to seeding "one near the player homeworld," that's now "one near each human homewold," which by itself already makes multi-human-faction multiplayer far better than it was.<br />
** Details for each category of major capturable are below, in the order of seeding:<br />
<br />
* Regular Fleets<br />
** It's now 1 adjacent to EACH human homeworld, not 1 adjacent to A human homeworld.<br />
** There is also now a second one 2 hops out from EACH human homeworld, not 2 hops out from A human homeworld.<br />
** So far, for these early capturables this means that for a 2-human-empire game it's doubled numbers, for 3-H-E games it's tripled, etc.<br />
** If there was not room to seed any of these for some reason (cramped maps with dead ends, all humans very close together, whatever), then it will seed the remainder further out in the galaxy somewhere. Ideally in the first nearer half of the galaxy if possible.<br />
** For the rest of the flagships of this type in the galaxy, mostly that is based on galaxy map size. However, it adds 2 additional flagships for each human faction beyond the first.<br />
** All of the rest of the logic is all the same, and ultimately this does not change how single-human-faction logic works at all.<br />
*** This is a general template for how the new seeding works, so we'll describe the rest of the capturable types a bit more briefly.<br />
<br />
* Global Command Augmenter<br />
** One adjacent to EACH human homeworld.<br />
** Then this is one difference that affects both single player and multiplayer:<br />
*** There is a second one that used to be seeded within 2-3 hops from A human homeworld. Now there is one that is still seeded within a distance from A human homeworld, but that distance is now 3-6 hops.<br />
*** This means that there are fewer early GCAs in multiplayer than in single-player, and additionaly in single-player that second GCA is probably substantially further off (but not always).<br />
** Then a standard extra 1 GCA per human empire beyond the first seeded wherever.<br />
<br />
* Advanced Research Station<br />
** One adjacent to EACH human homeworld.<br />
** Rest of the seeding is the same as before, but an extra 1 ARS per human empire beyond the first seeded wherever.<br />
<br />
* Tech Vault<br />
** This is pretty rare, and it used to just seed 1, period, in the first pass, 2-3 hops from you. <br />
*** Now it seeds 1 per human empire 2-3 hops from any empire. These may wind up being very much clustered around one empire more than others. It's not meant to be quite so fair as the others above.<br />
** Then for further out, it used to always just seed a flat 4. Now it seeds 3 plus the number of human empires.<br />
** As with all the other changes except for the GCA, none of this affects single-player games.<br />
<br />
* Fleet Research Station<br />
** This is another relatively rare one. It used to seed 1 within 3-8 hops of you, but now it seeds one per human empire within those 5-10 hops.<br />
*** This is another major change to how single-player games are also going to look, as it will make you travel further to get these extremely powerful goodies.<br />
** There are others seeded further away, but as with all the other notes on seeding above, all the parts that have not changed are not detailed here.<br />
*** Except... one more change with those. For the ones with them seeded "mostly anywhere," they now will have to be at least 5 hops from human planets, instead of 3.<br />
**** Again this one affects single-player balance and gives you more goodies on the far side of the galaxy for yourself. Too many of these things were close up to you. It was more obvious when looking at this in multiplayer, but it was true in general.<br />
<br />
* Fleet Capacity Extender<br />
** This one seeds two per human empire within 2-4 hops of each player homeworld.<br />
*** It used to be 2-3 hops, so this is actually one more place where it affects the balance in single-player. One of these could be one extra hop out.<br />
** Previously, the number of Fleet Capacity Extenders were multiplied by the "Advanced Research Stations To Seed" setting in galaxy options.<br />
*** We have now added a new "Fleet Capacity Extenders To Seed" setting, instead.<br />
** For the stuff further out in the galaxy, it now seeds one extra one for each human empire beyond the first.<br />
*** Instead of being a seeding zone of 3-8 from human homeworlds, the middle-distance for these are now 4-9 out. And for the "mostly anywhere" ones, the min distance from human worlds is now 5 rather than 3.<br />
*** These are both NOTABLE changes to the balance in single-player maps as well, and will give the player more goals that are further out in the galaxy.<br />
<br />
* Battlestations<br />
** This one mostly works like it does in single-player.<br />
** However, there are an additional 2 seeded at random per human empire beyond the first.<br />
<br />
* Mobile Support Fleets<br />
** This again mostly works like in single-player.<br />
** However, it now seeds one 2 hops out from each human homeworld, rather than A homeworld.<br />
** And for the more distant fleets seeded, it adds an additional 1 per extra human empire beyond the first.<br />
<br />
* Lone Wolf Flagships<br />
** Mostly the same as single-player.<br />
** It adds an additional 1 per extra human empire beyond the first.<br />
<br />
* Citadels<br />
** This one mostly works like it does in single-player.<br />
** However, there is an additional one seeded per human empire beyond the first on the nearer half of the galaxy.<br />
<br />
* Officer Fleets (Golems, etc)<br />
** This one mostly works like it does in single-player.<br />
** However, even in single-player, there is now one extra officer fleet seeded than there used to be. These felt a bit thin on the ground, so there's now one more to choose from even in single-player.<br />
** In multiplayer, there are also an additional two seeded per human empire beyond the first. They remain all pretty much on the far side of the galaxy.<br />
<br />
=== Smaller Captuables And Destructibles Balance (MP and SP) ===<br />
<br />
* Intra-Galactic Coordinator Seeding has been updated for multiplayer to be the following general amount:<br />
** 0 per type if 0 human empire factions (not possible right now, but could be a thing in the future).<br />
** 1 per type if 1 or 2 human factions.<br />
** 2 per type if 3 or 4 human factions.<br />
** 3 per type if more human factions.<br />
** We also are making it so that they can't normaly seed closer than 5 hops to a human homeworld, rather than the 3 of before. This second part also affects single-player and once again gives more goodies further away on the map.<br />
<br />
* Coprocessors are balanced a new way for multiplayer.<br />
** It's important that there always be exactly four of these if there are any, based on the pros and cons of how to hack these, but now it won't seed any at all if there are 3 or more human empires.<br />
** Given the huge amount of power that large numbers of human factions gain with all the positive capturables, some of the AIP reduction needs to be a bit more sidelined. You'll need to deal with higher-AIP AIs in general because of the extra territory you need to take to support multiple empires.<br />
<br />
* The SuperTerminal seeding is the same in MP and SP (and hey, this is way too fun to stip out), but the response now scales wtih how many human empires there are.<br />
** If there are 3 human empires, then the response of the SuperTerminal is going to be 3x as strong at all levels. So you really will have to work together to hold off this thing, it's incredibly scary but still very valuable.<br />
** The tooltip of the superterminal now mentions this.<br />
<br />
* The number of "minor capturables" used to be hardcoded at 5 per galaxy, but now it's 4 plus the number of human empires. So for single player there's no change, but there are extras of these in multi-faction MP.<br />
** However, the more players there are, the more it seeds these away from your side of the galaxy. Normally the minimum distance from your planets was 1, but now the distance is however many human empires there are.<br />
<br />
* We used to have a Destroyables setting called "Normal Data Centers," which let you customize how many data centers you would see in your galaxy, from 0 to 10, defaul 6.<br />
** This was frankly too powerful, since a lot of these can really make the AI response rather brain dead. So this setting has been removed.<br />
** It now seeds the default 6 at all times in single-player, but for each player beyond the first in multiplayer it now seeds 2 fewer, with a minimum of 1. So in a two-factiong ame there are 2 data centers, and in a 3 player game there is only one.<br />
** These also now seed further away: it used to be that the minimum distance away was 3 hops on AI difficulty 7 and down, but now that's 5, and on 8 and up 5 has become 7.<br />
*** This keeps these to the far end of the galaxy, mainly, and again gives you more reasons to be over there.<br />
<br />
* The number of distribution nodes also used to be a setting that you could control, 0-10 default 6.<br />
** This was less powerful than the data centers thing, but still pretty powerful and in multiplayer is even more of a benefit.<br />
** So that setting has been removed, in single player it always gives 6, and in multiplayer games with 2+ human factions these no longer seed at all.<br />
** With all the hacking points and science that you get in multiplayer with multiple factions as it is, trading AIP for more is almost always going to be a bad deal for you. Especially with the lowered AIP reduction opportunties.<br />
<br />
* Major Data Centers used to have a setting that would let you customize them, from 0-4, default 2.<br />
** Once again this was too powerful, so has been removed. The destroyables category of the galaxy map options is now gone.<br />
** The game now seeds 3 minus the number of human empires, min 0. For single-player this means the default of 2, for a 3 player game and up this means none of them.<br />
** In 3+ player faction game, expect for the AIP to be much higher in general, with very few chances to reduce it, but in return you have vastly more territory and more fleets and goodies in general.<br />
<br />
* Normally Zenith Power Generators and Zenith Matter Converters can be anywhere that is at least 3 hops from a starting player homeworld.<br />
** It is now 3 hops plus 1 for each human empire, so they are a bit further off in solo play and substantially more as you get more human empires at once.<br />
<br />
* The prior "Destroyables" galaxy options have been brought back, but with revised names and tooltips (old games that used these, and quick starts, will still work).<br />
** Max Normal Data Centers, Max Major Data Centers, and Max Distribution Nodes are now the options. These have the same defaults that they used to, but the max is now whatever the default used to be.<br />
** The purpose of these options is essentially to allow you to adjust things and make them harder than normal, since we had some people and quickstarts doing that sort of thing.<br />
** What we wanted to avoid was people making it easier in an unbalanced way, or us not being able to adjust the stated amount downward in multiplayer.<br />
** Thanks to Puffin and Astilious for catching this.<br />
<br />
=== Seeding Adjustments To The AI Starting Special Weapons (MP Mostly, But Also SP) ===<br />
<br />
* The way that the number of fortresses and superfortresses are calculated for the Fortress Baron AI type is now completely different.<br />
** In a single-player game the number of these is probably roughly comparable to how it was before, but with more AI factions it will now work a bit better, and the distribution will in general be a bit better.<br />
** In multiplayer games with multiple factions, there will now be increasingly more fortresses and superfortresses depending on how many human empires there are. Work together!<br />
<br />
* Same logic applies to the upcoming DLC AI type of Geneticist.<br />
** Ditto the upcoming Gladitor.<br />
** Ditto the upcoming Ragnarok.<br />
** Ditto the upcoming Spire Hammer.<br />
** Ditto the One Way Doormaster.<br />
** Ditto the Peacemaker.<br />
** Ditto the Royal type.<br />
** And lastly, ditto the Turtle type.<br />
<br />
* For all of the AIs, the BigGunNastyPick, EyeNastyPick, SupportStructureNastyPick, and WildCardNastyPick "percentages of planets we seed on" are now increased as follows:<br />
** For each player empire beyond the first, increase the percentage based on whatever level it is at right now, and loop for each player faction.<br />
*** If it was less than 15, add 2, if less than 30, add 4, if less than 50 add 8, if less than 60 add 12, if less than 70 add 14, if less than 80 then add 18, if less than 90, add one. Otherwise if already great than 90, stop adding.<br />
** As you can see, if something is already pretty common, it will become a lot more common more quickly. If it's fairly rare at the moment, it gets more common more slowly unless there are a LOT of players causing it to hit the loop crazily.<br />
** If you had something insane like 10 human factions, then it would wind up driving most planets to being incredibly fortified. With more like 4 players, it should be extra tough but not gargantuanly so. Depending on the AI types in question.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an infinite loop that would happen on multiplayer clients when certain unit types were used that build more units based on some sort of build points that they accumulate over time. Essentially the Von Neumann type ships, among a few others. Various base game units and mods use these mechanics, and it would be triggered by any of them. This is logic that should never be run on the client or else it leads to an infinite loop since it would never actually add ships on the client. Now it properly ignores that whole bit of logic on the client, just letting the host manage it instead.<br />
** Thanks to Arides, ParadoxSong, Sinzdri, and others for reporting.<br />
<br />
* Quieted another harmless error message that could show up in the debug log during the process of being disconnected forcibly from a multiplayer game.<br />
** In the process of this, also made the real cases of this error message start showing up visibly as errors and not just as silent in the logs.<br />
<br />
* Fixed several different errors that could happen in multiplayer in particular, mostly around debug code 157 for DoEntitySecondLogic with drones in multiplayer. Essentially, drones that were attritioning or going back into a transport could cause exceptions on multiplayer clients, but that should no longer be possible.<br />
** Thanks to Badger and his play group for discovering.<br />
<br />
* Fixed a variety of exceptions that could happen on multiplayer clients with factions or planetfactions being null on ships during DoEntitySecondLogic. These now exit more gracefully.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* Fixed a couple of exceptions that could happen on multiplayer clients during reconquest seeding.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* Debug logging (errors, etc) now includes the game version and the MP status (SINGLEP, HOST, or CLIENT) next to every error line. This will immediately help clear up a variety of things that can be confusing to us.<br />
<br />
* Fixed up the CalculateSpeed() method on the CPA logic to handle a couple of thins:<br />
** Firstly, we no longer base it on the CalculatedSpeed of each ship, because that can include a lot of temporary things like paralysis, or it can include things that are temporary boosts (like existing speed groups), or it can even be 0 if nothing has been calculated yet. <br />
*** It was possible in the prior code that if multiple speed groups were created in succession that included some ships that were all of one type, that the average speed would rise each time, eventually leading to truly absurdly high speeds.<br />
** Secondly, we are now using 64bit math to calculate the average speed just in an abundance of caution, since if the speed group is large enough it could otherwise overflow and theoretically cause very strange results. We doubt this was happening, but it's nice to have in place.<br />
** Lastly, when the "average speed plus a little" is fully calculated for a speed group with a CPA, it now makes sure that it is not higher than the maximum speed of any ships in the group. Previously, it was possible for a mono-type group to always get a boost of 1/9th their speed, plus 200 if the game was far enough in, plus up to 50 just for the sake of randomness. Now that will cap out at the actual speed of the ship type in question.<br />
** We're guessing that this was the cause of the hyper-fast speed groups that a few people were seeing from CPAs, but it's hard to be sure. If this fixes it, then this simply means that the code for setting the overriding speed of speed groups was not working properly in the past, which is something we may have fixed recently.<br />
** Thanks to NRSirLimbo and Crabby for reporting.<br />
<br />
* In order to avoid having existing savegames with excessive speed group speeds running around, during the load off of disk it now checks the overriding speed limit against the max speed of all the ships in the group, and if the max speed is lower it sets that as the new speed group for that speed group.<br />
** Thanks to NRSirLimbo and Crabby for reporting.<br />
<br />
* Since apparently Bombards were giving an outsized counterattack response, we've set up a counter_attack_budget_override_multiplier of 0.25 to cause it to rise only a quarter as rapidly.<br />
** Counterattacks are mostly based on the strength of the strength of a squad at its base mark level (so higher marks do not increase the counterattack strength at all), but there are some extra multipliers based on flagship types that are present, and what type of planet is there, and what the AI type is set to (different AIs can have different amounts of counterattack intensity). Hopefully it wasn't just a factor like the AI Type in question.<br />
** Thanks to Arides for reporting.<br />
<br />
* Fixed a bug in the last few game versions since we have been tracking human empires where for each time you loaded a savegame or regenerated a map or generated a new map seed, you would get another set of old empires added in that never cleared until you restarted the program. This would lead to a variety of insane things at times, including some lag on the galaxy map in particular, but also including some hacking costs that could be insanely inflated even in single-player.<br />
** Thanks to Metrekec and Isiel for reporting.<br />
<br />
== Version 2.707 Thread Tracking And Lost Planets ==<br />
(Released December 18th, 2020)<br />
<br />
* Completely reworked the way we track long-running background threads. It's no longer just the faction planning threads, but instead is ALL of the background threads, even those that are only supposed to run for part of a second at a time.<br />
** These all now will start showing on the interface as slow-running background threads after some warning interval (varies by thread), and then the main thread will forcibly kill them after a certain longer interval.<br />
*** For the short-term threads, it generally warns you after 2 seconds and kills it after 10 seconds. For the longer-term stuff, it generally warns you after 10 seconds and kills them after 30 seconds.<br />
** This provides a hopefully-foolproof way for us to find threads that are stuck in infinite loops, which is something we're aware some multiplayer clients are experiencing at the moment. The only thread it can't detect this on is the main thread itself, but if in those instances the game program would appear entirely unresponsive (white screen, nothing displays, OS is worried, etc), and that's not what we're having reports of.<br />
*** If you are having one of these slow background threads happen and it's causing an issue in multiplayer, please wait until it counts all the way up and actually throws an error. The error handling is designed to give us as close a view as possible of where the error actually is. Please then give us the error log that contains several detailed errors (usually between one and three) rather than a screenshot.<br />
** We should then be able to fix whatever is going on, or if the problem is in a modder's code (in this instance it does not seem that is the case), then the modder can also find out and solve that.<br />
** It's worth noting that the "main simulation thread" is actually on a background thread, and so that's a thread that we can indeed (and do) track.<br />
** Thanks to CRCGamer, NRSirLimbo, Arides, Paradox Song, Ozone, and others for reporting.<br />
<br />
=== Notification Improvements ===<br />
<br />
* All of the various notifications that were missing icons, or which were reusing icons that some other notification had, now have icons of their own.<br />
** Additionally, there's about two dozen extra notification icons that we now have in place in the new metallic style that we considered using but did not yet; those can be used for mod notifications, or whatever else.<br />
<br />
* In the event that you WERE in control of a planet, but lost it, in the past the game did not show you very useful information.<br />
** Prior to recently, it would probably show no notifier at all about it anymore, not on an ongoing basis.<br />
** Recently, if you still had some fighting forces on that planet, then it would show you as attacking that planet. Unless your forces were too weak.<br />
** Now it actually has its own unique icon for planets that have been lost -- based on there being the remains of a command station there -- and it pops those up to major priority (if it was not already higher), and it will keep the notification there even if all the enemies leave or if all your forces get wiped out.<br />
** This way you always have a reminder of a planet to get back to and either repopulate, or remove the command station and turrets if they are not going to be used again.<br />
<br />
=== Multiplayer Improvements ===<br />
<br />
* If a client gets a message from the host that they have been disconnected in an orderly fashion, the client now gets sent back to the main menu instead of trying to continue on in a format that seems connected but is not really.<br />
<br />
* In the event that a multiplayer client is disconnected for whatever other non-proper reason (a connection drop, not the host shutting down the game or something), then the client is now booted to the main menu rather than dropping into single player mode that seems to be still connected. Holy guacamole that was confusing (and never intended).<br />
<br />
* Fixed a bug where if a client connected to a host lobby directly after the client was in the planet view, the client would not be able to see the galaxy map properly.<br />
<br />
* For the first three seconds of each game, there are no notifications shown up at the top bar, now. This should basically never be the case anyhow, but this will hopefully work around the "30 different planet attacks" bug.<br />
<br />
* Because it could gum things up and even lead to network errors, there is now a rate-limiter applied to the randomize seed button on the galaxy map. When it is disabled because of rate-limiting, it now shows a countdown until it can be used again.<br />
** In solo play, the rate limiter is only 1 second. In multiplayer as the host, it is 3 seconds. In multiplayer as the client, it is 5 seconds.<br />
** This should be sufficient for keeping things out of trouble while not overly slowing down people who want to thumb through items.<br />
<br />
=== Bugfixes ===<br />
<br />
* Removed a metabolization debugging line that was apparently left in, that explained how much metal was gained each time that happened.<br />
<br />
* Fixed several cases of "Fixed attempt to read more faction data than we had factions on the client." that would happen sometimes when the client was disconnecting from the server on purpose.<br />
<br />
* Fixed an issue where because of the way we have been reading the controls input xml for the last few months, things like the control groups have been out of order. In general the order of the controls has been random and funky.<br />
** Thanks to Endovior for reporting.<br />
<br />
* Fixed an issue with the framerate types being randomly ordered due to xml reading changes a few months ago, which was probably leading to the wrong framerates being matched up. If this doesn't solve the related issue, please let us know! In the next build, everyone's framerate type will be reset to the default.<br />
** Thanks to AnnoyingOrange, Daw11, and poljik2 for reporting.<br />
<br />
== Version 2.706 Selection And Regression Fixes ==<br />
(Released December 17th, 2020)<br />
<br />
* Switched our delayed messages over from being a ConcurrentBag to a ConcurrentQueue. This is slightly less efficient, but should keep the order properly.<br />
<br />
=== Regression Fixes ===<br />
<br />
* Fixed one-character bug in the prior build where we had a typo that we did not even know was possible. We needed to invert a boolean, which you usually do with the ! character. But we had !! instead. Turns out that is valid syntax and double-inverts it back to its original value.<br />
** This led to the ship models not being loaded properly ever: if you had ship models set to draw, they would not; if you had ship models set to not draw, they would draw raiders only.<br />
** Thanks to Ozone, InvisiblePhil, and Crabby for reporting.<br />
<br />
* Fixed a couple of bugs in the prior version that were causing the planet faction boolean flags to sometimes not be read properly, or come out inverted. This was often leading to things like player ships attacking AI command stations without orders to do so. This should now be solved for any existing savegames and new ones.<br />
** While we were at it, we discovered that the ability to set a planet to be avoided by player ship pathfinding was improperly handled for multiplayer games, and so only the host would have been able to use that function and have it stick. Now it will work for any player.<br />
** Thanks to Sigma7, Arides, and others for reporting.<br />
<br />
* GameCommand queues from the long term threads have been returned to how they used to work with locks and such. This should prevent any misordering of gamecommands that are issued within a single cycle.<br />
** It was suspected that these were maybe causing some chaos in the prior build, but it's hard to be entirely sure. The issue with ships losing selection after being shot if they were in a stack was unrelated to this.<br />
** Thanks to a variety of folks on discord for reporting.<br />
<br />
=== Ship Selection Improvements ===<br />
<br />
* Added the ability to deselect ships, fleets, and similar from the current selection by holding alt and clicking them in the selection window. The tooltips have all been updated to inform players that this is now possible. This now works like the first game did, in that regard.<br />
** Thanks to nas1m, Fluffiest, cybersol, poljik2, and others for suggesting.<br />
<br />
* EntitiesToSelectNextFrame and EntitiesToSelectNextFrame were both unused and have been removed.<br />
<br />
* When ships are selected or deselected, there is now a ReasonCode string that is passed in so that we can log what is happening and why.<br />
<br />
* If a ship is created from another ship, and the first ship was selected, that ship is now selected.<br />
** This handles cases where stacks of player units were split, and the new units were not properly selected. However, it does not handle them on multiplayer clients.<br />
** If you select by fleet, none of this affects you at all. Only if you are directly selecting ships.<br />
<br />
* When a ship is created into a player fleet, if any other ships of the same type are selected AND on the same planet as it, then the new one is now selected.<br />
** This handles a variety of edge cases. However, it does not handle them on multiplayer clients by default, so we have now hooked into the fast-blast data syncs (that's actually very helpful in the end) to make that work, too.<br />
** If you select by fleet, none of this affects you at all. Only if you are directly selecting ships.<br />
<br />
* We no longer try to deselect and reselect ships when they change planets. That was a relic of when selection used to be related to the planet you are on. When a ship changes planets, just... nothing happens. It's still selected.<br />
** Thanks to OzoneGrif and Asteroid for reporting.<br />
<br />
* When ships die, we are no longer explicitly unselecting them. That was probably causing a lot of our problems, particularly around stacks.<br />
** There are many cases where ships "die" and then just pop an entry off their stack instead, and those were winding up being deselected ever since stacks have been a thing.<br />
** Again this is something that doesn't happen if you select by-fleet. Which at least for Chris, is how he plays. When you're managing ships by-type or just by bandbox selection it's a lot better now.<br />
** Thanks to Ozone for reporting.<br />
<br />
* Fixed a longstanding issue where the second click of a double-click into a planet was being treated as a single click in empty space on that planet and thus clearing your selection.<br />
** Thanks to Asteroid, Badger, BadWolf, Brainsample, Histidine, Fluffiest, and others for reporting.<br />
<br />
== Version 2.705 Clarity, Refinement, and Performance ==<br />
(Released December 16th, 2020)<br />
<br />
* At the end of generating the details of a new map (from custom games or quick starts), the game now quickly takes an extra bit of time to actually generate the strengths of each planet as they exist from the 0th second of the game. This takes on average an extra 8-18ms from what we can see so far.<br />
** The result of this is that players can trust their intel from the very start, even if they pause immediately or start paused. And factions that might want to invade or do whatever else very early in the game can also now trust THEIR information, which is similarly useful.<br />
** Thanks to Smidlee for initially raising the issue, and then -NR-SirLimbo, Strategic Sage, and CRCGamer for chiming in with details.<br />
<br />
* When loading existing savegames to continue playing, the game now also does a recalculation of all the strengths in the galaxy prior to actually letting you start playing. This is taking double digits of milliseconds, at most. This can prevent the galaxy map display from being wrong in some rare circumstances, and thus can also prevent NPC factions from making brief bad decisions off bad data right after coming in.<br />
** At worst this is overkill, but realistically we sometimes change the strength formulas and so forth and this will keep things correct, anyhow.<br />
** Thanks to -NR-SirLimbo for reporting a rare instance of this being wrong with some really specific setup circumstances. This should handle that case and any others.<br />
<br />
* The "Minimal Fog of War" setting has been removed from the Galaxy Camera settings section of the personal settings. This was not an appropriate setting to have on a per-player basis in multiplayer in particular.<br />
** There is now a new "Minimal Fog of War" setting that behaves identically to this in the Scouting section of the galaxy options menu. This is something that any player can change, even during gameplay, and it will then give all players a consistent view. No need to wonder why someone sees things differently from everyone else, and nobody can "peek" without others knowing.<br />
** Also happened to increase the efficiency of the checks for this a bit, making it not be called so frequently to find out if it's on or not.<br />
<br />
=== Galaxy Map Display Mode Updates ===<br />
<br />
* Galaxy map filters now have the ability to add text to planet tooltips, or outright replace the bulk of the planet tooltip contents.<br />
<br />
* When you are in the Deepstrike Danger galaxy map display mode, the bulk of the planet tooltips are now changed to explain what each planet's status means in terms of danger level. What happens if you go there? How do you trigger the AI Reserves? Etc.<br />
<br />
* Added another new galaxy map view: AI Sentinel Alert Levels<br />
** For each AI planet, shows what the alert level is for that planet. Planet tooltips give advice on what this means for each specific planet. Shows the same icons as the Normal view.<br />
** This whole thing also now includes some extra information that was not previously in the game itself at all, such a WHY each planet is at a given alert level. Again, most people don't need to know or care, but for the detail-oriented this is a big win.<br />
** Inspired by a discussion on discord with dano and -NR-SirLimbo. This isn't a function of the AI that you HAVE to understand, but it's nice to be able to if you want to, and it's REALLY nice not to have to go to the wiki release notes to get the details.<br />
<br />
* The hex colors of the higher two AI Alert Levels are now more bold, making them easier to pick out at a glance in their display mode in particular, but also otherwise.<br />
** Thanks to -NR-SirLimbo for suggesting.<br />
<br />
=== Notifications And Their Icons ===<br />
<br />
* The icon for a non-home planet of yours being attacked has been updated.<br />
** The old one that was a general warning-style icon is still there, but is called generalwarning and is no longer used for these purposes. It was too generic.<br />
<br />
* There is now an icon for when you are in a fight with an enemy on a planet that is not yours.<br />
<br />
* All of the notification icons that were previously existing have been updated to a more gritty/physical/metallic style.<br />
** This is a bit different from other icons in the game, but is fitting with their placement and the style of the notification backgrounds. These are more of a physical part of the UI, visually speaking, compared to the other elements which are thematically more digital elements.<br />
<br />
* Previously, we only had a single "our planet is under attack" sort of notification. It had two variants, one for our home planets and one for not-our-home-planet. <br />
** For a long time, we have also been using it to note when "our" planet is being attacked if the planet was a beachhead where we had a lot of turrets. In the most recent build, we expanded that to include any planet we or our human-player allies are fighting on, but that had the side effect of making it so that it gave very confusing notifications about "us defending our planets" in enemy territory.<br />
** Now we have a whole new set of text, and new icon, for notifications of us attacking an enemy or neutral planet, whether that's a beachhead or otherwise. These show up under the informational level of severity, so right at the bottom.<br />
*** These show the lists of allied attackers, and the list of enemy defenders. They also show any interesting capturables on that planet, same as on our own planets we were showing infrastructure.<br />
** Thanks to Crabby and ArnaudB for reporting.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* AMU:<br />
** Repositioned the GrantShipCountType to no longer be inside the AMU_Utils class but inside AMU namespace itself<br />
** Created 2 variants of WriteShipLinesGrantedToBuffer(), one for a specific player, the other without a player given tries to find the local player or if there is none for whatever reason uses the first player if possible. If no player is found all units will be displayed as mark 1. Optionally a headder explaining what this is for can be added (such as "Hacking this can grant the following units:").<br />
** Created more variants of AddToShipGrantList() so that it's not only entities that can have potential ship lines added but also raw lists.<br />
** The ShipOrTurretGrantingHackingImplementation now uses a GrantMode which can be set to all entities, only specific entities and only centerpieces (and potentially others too in the future) instead of a simple bool for all-or-nothing.<br />
* Kaizers Marauders<br />
** Used the above logic for displaying hackable ship lines.<br />
** Defensive lines hacked from Outposts no longer display if the Planet has its systems on lockdown, preventing all further hacks there. Less useless clutter is always good.<br />
** Put in a fix for an oversight that would lead to saves from previous versions very likely (in most likely all cases, the only case to avoid being when all marauder planets would have a turret-hack going it seems) not loading.<br />
** Fixed Marauders not spawning when the beacon was destroyed until their invasion time limit was reached.<br />
*** Thanks to Doc_Den for asking about it on Discord.<br />
** Fixed the Journal that's supposed to appear when the game is launched with a Marauder beacon present not actually showing.<br />
** Put in a new Journal for discovering the Marauder beacon.<br />
<br />
* AMU:<br />
** Some more internal adjustments towards Devourer Chrysalis.<br />
* Kaizers Marauders:<br />
** Fitting in with these adjustments.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a MP sync issue with the outguard, where every time an outguard beacon was synced to a client it would cause its list of mercenary groups to grow. So when hovering tooltips over a beacon on an MP client it would do that every 1 second.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* The "Unable to render visuals for 3.00s, because of:" message is one that is really old and really doesn't matter. It's something that happens during really long loads from disk, and it just silently puts junk in your log. We put this in back in 2017 when we were originally designing this and worried that there might be a long-running process that the game didn't come back from. That's not really a thing, in practice, and if it was then this message would not be helpful (actual deadlocks are not caught by this anyway).<br />
<br />
* Previously, any exceptions in the AI Reserves were silent and just showed up in the log. This was not super helpful. These errors now show up more visibly.<br />
** In the UpdateDeepstrikePlanetsUnderAttack method, we were able to get an exception, so we now have more logging in place.<br />
<br />
* In the settings menu, it was previously possible to see settings from mods or expansions that you had installed but disabled. Now it only shows them if they are installed and enabled.<br />
<br />
* Fixed a bug dating back to changes on October 9th, when the new AI sentinel readiness code was put in place.<br />
** Essentially there was an oversight in the code that said "there are player forces here now, or there were within the residual timeframe for alerts to last" that let it just assign alert level 4 and then bypassed that and kept assigning a lower alert level based on other factors.<br />
** This made it so that raids into territory not adjacent to your own would never trigger alert level 4, and it also made it so that raid engines would never count down their timers.<br />
** Thanks to Strategic Sage, TechSY730, GreatYng, Smidlee, Endovior, and Arides for reporting.<br />
<br />
* The "share allied vision" setting in the galaxy map has been removed and replaced with a new "Share Allied NPC Vision" setting.<br />
** This effectively does the same thing, but makes it really clear that human allies always share vision, and this is just about NPC factions sharing with you.<br />
<br />
* Fixed some bugs with how the allied vision setting was implemented that was preventing you from seeing a lot of intel in general on the galaxy map, or leaving it pretty stale in general.<br />
** The biggest thing was that it was often causing a planet you had ships at to flip back and forth rapidly between "watched" and "explored" status, thus making the intel counts often have a question mark behind them or fail to show up entirely.<br />
** Thanks to Crabby for reporting.<br />
<br />
* Changed it so that you retain the currently watched status on a planet for 5 seconds rather than 2 after a ship was there. This prevents issues with players at a faster game speed having their explored/watched status flicker for a planet.<br />
<br />
* Fixed a bug in the prior version of the game where the cost per extra human empire to hack for science was being increased including for the first empire (so also including solo games or single-empire multiplayer).<br />
** Thanks to Metrekec for reporting.<br />
<br />
=== Multithreading Improvements (MP and SP) ===<br />
<br />
* Went over speed groups with a fine-toothed comb in terms of their fast-blast sync in multiplayer, and it all looks good. Put in slight extra instrumentation to let us know if there is actually an oversight, but at the moment it looks like the error is really on the side of fast-blast shots, not speed groups, and the speed groups were a downstream casualty.<br />
<br />
* Updated the central dictionaries that have lookups for shots, ships, and wormholes to be concurrent dictionaries that expect access from 8 threads at once (but can do more). This mostly affects nothing, but in certain cases where we were trying to write to one of those dictionaries from two threads at once, it will prevent any issues.<br />
** What we were observing in some cases (one client out of five in a six player game, for example) is that shots were failing the basic method call of "assign self into dictionary by ID." This should be frankly impossible, but it was erroring on an internal method call TryInsert on the Dictionary<> class. That's a great sign that there is a cross-threading issue going on, because again that should be impossible in any other circumstance. So the simple solution is switching to a ConcurrentDictionary<>, and that problem should go away.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* A couple of locks used, one on fleets and one on squads, are no longer used on multiplayer clients. This new change CAN have the effect of briefly having the wrong number of units in a stack or the wrong number of drones undeployed in a fleet, but it would be a very brief time that would be wrong, and it's not super likely to be wrong.<br />
** The positive thing about this change is that clients wind up with these methods being called a LOT compared to hosts or single player machines, and almost always it's just a simple overwrite rather than several different places trying to increment or whatever. The idea is that this speeds up the sync on clients, does less processing, and removes a potential source of deadlock that could happen. In the very rare case that a client gets slightly off because of this, it will fix itself within seconds, but the overall processing will be much better and cleaner without this here.<br />
<br />
* Our campaign against thread locks continues: GameCommands have been using a set of Queue<> collections that were locked when things were taken out and put in, but now we are just using a ConcurrentBag<>. This should be a minor boost to performance in singleplayer or multiplayer. The more factions and threads and things you have going on, the more it's likely to make at least a small difference.<br />
<br />
* During our xml import, we now have switched over to using ConcurrentBag<> collections where we were using List<> collections that had to be locked. This may be a minor speed boost on load for some machines.<br />
<br />
* The "long term planning" threads (either intermittent ones for a faction, or continuous ones for something like decollision or whatever) now use ConcurrentBag<> instead of List<> collections that are locked.<br />
** This DOES mean that the order in which items come out of these will be arbitrary, now, whereas before they were ordered. But in general we are not aware of any cases where there are GameCommands that are strictly order-dependent that happen within the same cycle, and if there are any they might have been getting misordered elsewhere in multiplayer in particular.<br />
** Generally the order of GameCommands is something closer to a human scale, at least on a few hundred ms timeframe, and that is still honored. If we have any problems with this, we can switch to a ConcurrentQueue<>, which should be ordered, but the performance is probably not as great.<br />
** These boosts only help on the host in MP and in general in SP games. MP clients already don't run any of these threads.<br />
<br />
=== Performance Improvements ===<br />
<br />
* Made the creation of PlanetFactions a bit more efficient by not initializing things like their entity lists or boolean arrays until and unless those are actually needed. This makes the first map generation or savegame load after a run of the program happen more quickly.<br />
<br />
* Performance improvements around extra planet factions:<br />
** The strength counting logic is now explicitly not run for the natural object faction (hopefully causes no issues) and the beacon-only factions (definitely will cause no issues).<br />
** The metal flows logic now early-outs much faster for planet factions that are beacon-only or which have no squads at a given planet.<br />
** The tractor beam planning logic now early-outs much faster for planet factions that have no squads at a given planet.<br />
** On a 500 planet map (not supported) with basic factions included this gets Chris' dev machine from 12% sim speed to 18%. For actual normal map sizes, this will also improve performance, but we're looking into the case of "when planet counts are absurd, where does the extra processing go," since that probably will yield a benefit for non-absurd planet counts.<br />
<br />
* The old setting "Skip Drawing Ship Models" has been removed, and replaced with one called "Draw Ship Models."<br />
** This is functionally the same, but more clear now. This will wind up removing whatever your settings were from the past, so if you were playing without ship models before you will need to alter this setting.<br />
** Same with Disable Tachyon Beam Visuals, it has become Draw Tachyon Beams and its description has been updated.<br />
*** However, THIS one has changed to now default to off, since it really is not needed and uses a lot of performance. You can turn it back on, but it now defaults to off.<br />
** Disable Tractor Beam Visuals has also become Draw Tractor Beams, and it defaults to on. Very people would have changed this from the default.<br />
** Disable Beam Weapon Visuals has become Draw Beam Weapons, and it defaults to on. Very people would have changed this from the default.<br />
** Disable Parallel Faction Processing has become Parallel Faction Processing, and now defaults to on. Again this is something that almost nobody should change.<br />
** Do Not Show Shot Visual Effects has been renamed to Draw Bullets, and now defaults to on.<br />
** Do Not Show Explosion Visual Effects has been renamed to Draw AOE Explosions, and now defaults to on. It's also now clear which explosions are even meant!<br />
** Other than the ship models one, very few of these are used by most people, and all of these are functionally the same as the old versions except for the tachyon beams which are now off by default.<br />
** The general goal here is to make these settings more clear, since folks were finding the wording and double-negatives confusing (we can't not imagine why).<br />
** All of these settings have also been updated to a check model that is slightly more efficient, which is always nice.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* Added a new Show Faction Performance In Escape Menu option in the escape menu.<br />
** If your game simulation is running slowly, you can turn this on to see how long each faction is spending doing its work on the main simulation thread. Background thinking of factions is not included in this, since those don't block the main simulation or impact performance in that sort of way.<br />
<br />
* Using the new Show Faction Performance tool, we can see that on a 500 planet map, most factions are doing great, but AI Reserves are spending 4.5 seconds per second doing... something. That obviously is no good.<br />
<br />
* Multiplayer clients no longer do any of the stage2 or stage3 logic of AI Reserves, since there's nothing in there that would be useful for them in the first place. All of that is best controlled on the host.<br />
<br />
* The way that deepstrike-eligible planets are calculated now happens only once on the background thread of the AI Reserves, and the result is cached on the planet itself where other threads and the UI can get the results with ease. <br />
** Our overall algorithm is not much more efficient than it was before, but it is doing well under half the work that it used to, as well as only being on a non-blocking background thread now.<br />
** Because of this, our 500 planet extreme test case example now runs at full speed, and all other savegames should also see a bit of a speed bump.<br />
** Because of how multiplayer sync works, the MP clients are kept up to date on all of this even though they are running none of the logic.<br />
** This is our big mysterious performance drain, finally solved! It was not remotely what we expected. At any rate, giant counts of planets are still not a great idea for many other reasons, but the baseline performance drain of each planet added to the game is now gone.<br />
<br />
== Version 2.704 MP Notifications And Mapgen ==<br />
(Released December 14th, 2020)<br />
<br />
* The shield points of all the raiders and their variants have been dropped dramatically, while their hull points remain the same.<br />
** Additionally, the metal costs of raiders have been almost doubled. This extra specialization and power of them, when compared to V-wings is now something you have to have a more robust economy to support.<br />
** And finally, their armor rating has been dropped from 50mm on most of them to 30mm, and from 30mm on the drones down to 10mm, making them vulnerable to anti-light-armor attacks.<br />
** Thanks to Crabby and Arides for suggesting.<br />
<br />
* AI Eyes are no longer allowed to be reinforcement spots, as the units contained within them get messed up as they transform between states. In general, units that transform should no be containers of AI reinforcements.<br />
** Thanks to DEMOCRACY_DEMOCRACY for reporting.<br />
<br />
* Fixed a bug where guardians could be confused about whose side they were supposed to reinforce, and thus be added to the player faction if the player partly owned a planet that was being reclaimed by the AI at the same time.<br />
** Thanks to Kizor and Metrekec for reporting.<br />
<br />
* Fixed a bug in the new hot-reloading code where, after changing some mods or expansions, various "External Data" fields would not be able to be loaded completely properly. This was pretty much just limited to the "custom data" that is added to those fields by a variety of factions and mods.<br />
** Restarting the game in prior versions would fix it, but now it just works correctly from the get-go.<br />
** Thanks to Crabby and Badger for reporting.<br />
<br />
* The game has been updated to require/allow ArcenSimContext to be passed to a lot of the galaxy map filter functions, etc. This lets them use some of the working lists and things like that.<br />
<br />
* The AI Reserves faction now registers an instance singleton of itself so that other parts of the code can query it for things like deepstrike eligibility.<br />
<br />
* There is a new Galaxy Map filter option: Deepstrike Danger<br />
** Shows which planets will trigger a deepstrike if you bring your own ships to them and unload them. Shows the same icons as the Normal view.<br />
** This is a great idea, since it has never been perfectly clear which planets will and will not show this.<br />
** Thanks to Asteroid for suggesting.<br />
<br />
* Fixed a possible nullref exception when stationary player constructors were destroyed in multiplayer. Looks like Badger may have already fixed it, though.<br />
** Thanks to NRSirLimbo and Flipkik for reporting.<br />
<br />
* Updated the instrumentation of EmitOnAOEParticles so that if it does have an error, it will give us useful data.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Three different threading race conditions in TryWiringUpShotToTarget() no longer throw exceptions but instead just deal with the "TrueLocationByFailure" path. This is something that already was a minor visual glitch at most.<br />
** Thanks to NRSirLimbo for reporting. <br />
<br />
=== Multiplayer And MapGen Improvements ===<br />
<br />
* Upgraded the mapgen logic to work better when there ae multiple human factions, or indeed when there are multiple AI factions.<br />
** When there were multiple AI factions, there were times where lots of planets adjacent to player homeworlds could be set erroneously to mark 3. This no longer happens.<br />
** When there were multiple human factions, then it was letting mark 3 or 4 planets be seeded next to human homeworlds sometimes, but it was also giving a LOT more mark 1 planets than normally are in a single-human-faction game.<br />
*** Now it gives the same number of mark 1 planets for a map size regardless of how many human players there are, and these are distributed randomly next to however human homeworlds there are. Any other planets adjacent to a human homeworld that is beyond the amount allowed by a map will now be mark 2 no matter what.<br />
*** In single-faction games, sometimes there are non-adjacent mark 1 homeworlds, but that will probably not happen anymore. <br />
*** The rest of the planets that are more than 2 hops from human homeworlds will continue to use the logic that they previously did for whether they should be mark 2, 3,or 4.<br />
** The overall result should be something that always makes sense, and it will not favor player factions 1 over any other factions.<br />
** Thanks to Badger and others for reporting.<br />
<br />
* In multiplayer games, the clients no longer get any sort of "are you sure?" prompt or ironman autosave or anything when they quit from the game or quit to the main menu. Those are host-side things.<br />
** Thanks to Badger for reporting.<br />
<br />
* "Pause Game When Opening Esc Menu" in the Game part of the settings menu has been split into two parts:<br />
** Pause Game When Opening Esc Menu In SP (default on)<br />
** Pause Game When Opening Esc Menu In MP (default off)<br />
** Additionally, made it so that sub-menus of the escape menu no longer cause the game to be paused when you go into them even if the setting here was disabled (previously that was happening, which was a bug with the SP version of this).<br />
** Thanks to Badger for suggesting.<br />
<br />
* The game is meant to only have a single hack going on at a planet at once, and has previously just been enforcing this for you personally (assuming single-player by accident).<br />
** Now the game checks for all factions, meaning that if an ally is hacking at a planet you have to wait until they are done there. <br />
** The message now specifies if it is one of your ships doing a hack, or if it is an allied ship.<br />
** Thanks to crawlers and Arides for reporting.<br />
<br />
* Added a new "is_human_empire_faction" xml tag, which we now use for the standard human factions.<br />
** This allows for us to check for regular human factions that should count for certain types of new functionality, but inherently exclude other specialized "player type" factions that will arrive in the future (champions) or which we might think up.<br />
** There is already a way for us to check if a faction is a champion faction, but this is for the opposite: in theory we could someday have many different kinds of human factions, and some would act like an empire (that should scale a few things related to AIs) while others would act like tag-alongs.<br />
*** In theory, we could design a faction that contains properties of both an empire and also something specialized like a champion, and so having individual flags is also useful for that sort of reason.<br />
<br />
* Just like there has long been an AIFactions list on the World_AIW2 instance object, we now have the following:<br />
** AllPlayerFactions, which has absolutely every faction with type == Player.<br />
** ChampionPlayerFactions, which includes only champion factions (from DLC3).<br />
** HumanEmpirePlayerFactions, which includes only those that are marked as human empires.<br />
<br />
* The "Neutral Planet Science Extraction" hack has the following changes:<br />
** Cannot be done (is invisible) if there are no human empire factions in the game (aka if you were theoretically playing a champion-only game, which we have no idea if that will be a thing or not).<br />
** When done and there are multiple human factions, each of them gets a copy of the science properly, unlike in the past.<br />
** Normally this hack just cost 10 HaP. However, that cost now goes down if you have previously partially gathered some of the science. If you got halfway through with gathering science from the planet, then lost the planet, it will now cost only 5 HaP.<br />
** For each human empire beyond the first, doing this sort of hack now costs 1.5x as much. So if it would normally be 10, and there are two playrs, it will be 15. If there are three players, it would be 22.5.<br />
*** Given that this is a HUGE advantage to lots of player empires (the HaP of only one player gives science to all), this is something we wanted to be careful of.<br />
** Thanks to Puffin for reporting.<br />
<br />
* The "Covert Science Extraction" hack has the following changes:<br />
** Cannot be done (is invisible) if there are no human empire factions in the game, same as above.<br />
** This hack already costs less based on however much there is to hack out of the planet, since this is a per-second-over-time hack. So we did not need to adjust that.<br />
** Same 1.5x cost added for each human empire beyond the first as with the neutral planet hack.<br />
** Thanks to Puffin for reporting.<br />
<br />
* A variety of things that are involved in exo strikes or other things that are launched against a specific player will PREFER a specific human empire, but in the event that there are multiple human empires and one has a dead king, it will switch over and attack another human empire instead.<br />
<br />
==== Notifications ====<br />
<br />
* Planet under attack messages have been changed as follows:<br />
** Previously, if you personally had 5 strength of turrets on a planet, then it would include the planet even if you did not own it.<br />
*** Based on player requests, it now includes planets where there is at least 5 strength of turrets OR mobile strength. Aka you can see fights that are not just beachheads.<br />
*** Previously, in multiplayer this did not show for spectators or clients in general. Now it shows for all players. Additionally, that "strength of 5" calculation includes strength from all players, not just the host.<br />
** Thanks to crawlers for reporting.<br />
<br />
* There was a minor bug with brownout notifications in multiplayer if you were a client.<br />
** In general in multiplayer, brownout notifications are now shown to all people in multiplayer, including spectators.<br />
** This is a significant-enough event that it's good for other players to know if your forcefields all just went down without you having to tell them. If you are distracted, it also gives them a chance to notice and tell you.<br />
<br />
* In multiplayer, previously it would only show the ongoing hacks of the host. Fixed.<br />
** Now all players, as well as spectators, can see all hacks from anyone. This is hugely useful for coordination in multi-faction games.<br />
** Thanks to BadWolf and crawlers for reporting.<br />
<br />
* Hostile macrophage notifications in multiplayer now are based around them approaching and threatening any player's king, not just the host player.<br />
<br />
* The code for all of the other notifications has been reviewed, and it should be sufficiently informative for spectators in multiplayer, as well as work properly for multiplayer clients.<br />
** This includes all of the factions in upcoming DLC.<br />
<br />
== Version 2.703 Hotfix ==<br />
(Released December 14th, 2020)<br />
<br />
* Astro Trains can't be at a mark level higher than the faction intensity<br />
<br />
* The Fleet Sidebar now dynamically modifies the font size to prevent some line wrapping<br />
** The wrapping was pointed out to me by NRSirLimbo<br />
<br />
* Fix a bug that was preventing new games from starting<br />
** Reported by a number of people, including mazanaka09, niki, maxi and tyak<br />
<br />
* Fix a bug causing excessively strong CPAs<br />
** Reported by Lictuel, Arides and poljik2<br />
<br />
=== Included Mod Updates ===<br />
<br />
* Updated Civilian Industries for the latest version.<br />
** Updated all references of 'Balance_MarkLevelTable.MaxOrdinal' to refer to 'Balance_MarkLevelTable.Instance.MaxOrdinal' instead.<br />
<br />
* AMU:<br />
** The GlobalImportantRollupHolder now refreshes when Expansions or Mods are being reloaded. This refreshing happens upon the ExecutorFakeFaction being instantiated for the first time which means that it should no longer create a hang on the first game second and instead do so when loading the galaxy or custom game menu.<br />
** Removed the following functions: AddAllShipsWithTagToFleetStrengthAdjusted, AddRandomShipsWithTagToFleetStrengthAdjusted, AddRandomShipsFromRollupToFleetStrengthAdjusted, AddAllShipsFromRollupToFleetStrengthAdjusted, AddShipsToFleetOrCreateNewFleetIfCenterpieceBasedOnStrength and AddShipsToFleetOrCreateNewFleetIfCenterpieceBasedOnCount.<br />
** In their place created 3 variants of AddToShipGrantList (one for each List, TaggedEntityTypeRollup and GenericDrawingBag).<br />
** Created IsCenterpiece(GameEntityTypeData) which reacts to it being any kind of mobile centerpiece such as transports, arks, golems, battlestations, citadels, support factories or spire city pseudo-centerpieces.<br />
** Created GrantStuffToFleets_ReturnEmptyIfClient which adds all it's being given to a fleet and returns the memberships, or if something to be added is a centerpiece itself adds it in a new fleet.<br />
** Created AddToAllPlanetaryFleets which does exactly what it sounds like. Note that this adds to the permanent items as if hacking a GCA.<br />
** Created Hacking utilities:<br />
*** ExtendedHackingImplementation adds the following functions:<br />
**** HackedByBattlestationOrCitadelInsteadOfNormal (upon the first second "transplants" the hack from the centerpiece that started it to the battlestation or citadel closest to the target). AMU also creates notifications for battlestations and citadels with active hacks because the base game does not see them as valid hackers.<br />
**** ParalyzesTarget, ParalyzesHacker, TargetIsInvulnerable, HackerIsInvulnerable, DecloaksTarget (self-explanatory, for the duration of the hack).<br />
**** CounteractsTargetAttrition (every second of the hack the target receives health if it has any self-attrition).<br />
*** ShipOrTurretGrantingHackingImplementation is based on ExtendedHackingImplementation and adds the following functions:<br />
**** GrantAllLines (grants all lines of turrets, ships, etc instead of just one).<br />
**** GrantLikeGCA (if adding turrets, non-turret defenses, station-keeping ships or alike grants them to all settled player planets as if it were a GCA hack).<br />
**** DoesNotRequireFleetSlots (for adding centerpieces, only exists to ignore the requirement that at least one ship line must be free on the hacker).<br />
**** ThrowsRemainingLinesIntoFirstNewFleet (when a centerpiece is present will create it first and all other ship/turret/whatever lines will be added into it).<br />
** Updated the AMU source code.<br />
* Kaizers Marauders -> IMPORTANT NOTE: SHOULD be savegame compatible (it had serialization gates) but was not tested! <-<br />
** Fixing Marauder Invasions:<br />
*** Fixed Marauders always being present even if not added to the galaxy setup. Note that this could only be done by creating a second Invasion Timer setting, the first one doing nothing. Apparently they cannot be manipulated through is_partial_record. Also removed the debug option from that.<br />
*** The new default setting for invasion timing is to invade in Mid-Game. This is important for when playing without beacons (!) because if you truly wish for Marauders to immediately invade the timing needs to be set to "immediate". Right now the default is Random Mid-Game, at which point Marauders will be allowed to invade and, if need be, even destroy their beacon which would be preventing them from invading alltogether.<br />
*** For players who want no part of Kaizers Marauders in their current setup a new Invasion Timing has been added: 'Never' sets the timer to 2147483647 seconds. Unless you plan to play some almost 14 years in 5x speed you won't see them.<br />
** Fixed an exception happening after a converted defector was hacked. Either that was old and nobody ever reported it or was created during the refactoring.<br />
** Fixed some external constants being wrong due to not overwriting the Vanilla Marauder constants. Kaizers Marauders now use different constants alltogether.<br />
** Fixed Kaizers Marauders not updating their external constants at all if the game is hotloaded with altered constants (which should only be the case if modding).<br />
** Reworked the hacks using the logic above and confirmed them working. Though it's probably only a matter of time until someone discovers bugs and glitches. Testers welcome, saves and/or steps to repro always appreciated!<br />
** The mark level at which Outposts and the Capital can get hacked is no longer hardcoded and has been set to be based on external data. Also reduced the mininum mark to begin Outpost hacks from 3 to 2.<br />
** Shortened the sidebar name of the Fusion Torpedo Bomber to F. Torpedo Bomber similar to its drone variant because it was getting too long for the fleet menu sidebar when transporting triple-digit counts.<br />
** Increased the likelihood of a Marauder Raider turning to a defector by 10 times. This was way too low. For reference: Before Raiders would have a [outnumbered raider count on player planets] / 10000 chance to defect each second. So a single Raider would have to stay some 10000 seconds while outnumbered on a player planet, statistically, for it to defect. 1000 seconds may sound low, but keep in mind that the amount scales with the raider count there.<br />
** Raider Defectors now display the ship lines and the centerpiece received upon being hacked, and the evacuation-hack lets the player choose any of 3 fleet ship lines (NOT the ark variant of the raider!).<br />
** Added a new bonus mechanic to grant the player the science and hacking points to deal with Marauders: Special-First-Kills-Per-Mark:<br />
*** The units eligible are the Marauder Capital, all 3 types of Raiders (Cruiser, Carrier, Blaster) as well as all 9 Superstructures.<br />
*** The science and hacking gained is global, not per Marauder sub-faction, or per player.<br />
*** Per mark level difference to the highest mark level they were killed by a player yet and per eligible unit there are 100 science and 2 hacking points granted if a player kills them.<br />
*** So Player kills a Mark 2 Marauder Capital: +200 science, +4 hacking. Player kills a Mark 1 Capital: Gains nothing. Player kills a Mark 3 Capital: +100 science, +2 hacking.<br />
*** As Marauder Mark level rises with intensity, the Raid Blaster only appearing at all if Marauders have debris and Superstructures being optional the amount of science and hacking that can be obtained varies greatly. The upper limit (Intensity 10 Marauders with debris and Superstructures) is 13x7x100 = 9100 science and 13x7x2 = 182 hacking. If the player can beat the most powerful Mark 7 raiders and superstructures.<br />
*** These values are experimental, as of yet, so feedback is appreciated! Note that this is NOT supposed to be a primary income of science and hacking, but only supplementary because Marauders offer new ways to spend hacking points. And science is always good.<br />
** (EXPERIMENTAL AND UNTESTED!) Updated Kaizers Marauders to no longer require the first expansion The Spire Rises to function. To accomplish this the Raid Blaster (which Marauders can use when having acquired Spire Debris) will no longer load when TSR is not installed, and the Setting for giving Maruaders debris at start will hide. Additionally the Nukes of the Mark 7 Kaizer use the Autobomb model and no longer the warhead model, thus making them Vanilla-compatible.<br />
<br />
== Version 2.702 Hot-Reloading Mods And Expansions ==<br />
(Released December 12th, 2020)<br />
<br />
=== Ship Line Swap Menu ===<br />
<br />
* Add some QoL improvements to the Swap Ship Lines menu. <br />
** Information is now in columns for easy reading<br />
** Ship Line Name is now colour-coded based on Mark Level.<br />
** It also shows the Strength of a Ship Line as well as the name and number of ships.<br />
** Along with the flagship name, it also tells you the hotkey number and the fleet strength<br />
*** The goal was to make sure all the information you might want is included in this screen<br />
<br />
* Add a bit of colour to the Headings for several Fleet-related menus<br />
<br />
=== New Included Mod: More System Defenders by CRCGamer ===<br />
<br />
* Added a new mod that is now distributed along with the game in an off-by-default fashion. This one is by CRCGamer.<br />
** Description: More System Defenders Revision 1.13 - Now with DLC checks<br />
** This mod primarly adds alternative planetary defense options into the game. Some of which are also utilized by the AI as well.<br />
** Notable Additions to the game include (but not limited to):<br />
*** Escort Carrier, A light frigate with a debuff and sub units available in random gen fleets, ARS, planetary defense fleets, and some AI defenses. Also includes a special cloaked ambush variant also in general distribution.<br />
*** Flypaper Frigate for Logi and Military systems and a special AI defense option. Loves blowing up small fry with small power grids.<br />
*** Gorgon Aggregate Body Frigate a medium hull with heavy paralysis that breaks apart into smaller damage focused units in combat.<br />
*** Artillery Cruiser, A defensive champion that punches big holes in heavier targets at range and boasts fairly stong defensive armament. Vulnerable to shield bypass however. Is available at Military Commands, a special fleet version can be acquired from FRS, and the AI is happy to use them as Dire Guardian alternatives. Only available if you have The Spire Rises installed.<br />
*** Cruise Missile Battery: Advanced defensive structure that attacks using self-homing missiles from long range. Home command and Logi system supported. AI has special fortified version. Also available only if The Spire Rises is installed.<br />
** Several additional systems mainly available within GCA include:<br />
*** Briar Patch cloaked turret that slows down enemy ships entering a system from a wormhole for a short while before being revealed. Automatic for Econ Commands as well.<br />
*** Screamer Rocket Pod an absolutely devastating disposable fusion armament that ignores shields and deals double damage to enemies under half health.<br />
*** Bomb-Pumped Laser Mines are short lived but incredibly damaging within a small line effect.<br />
<br />
=== Xml Parsing Upgrades ===<br />
<br />
==== For Speed, And For Groundwork For Hot-Reloading ====<br />
<br />
* Completely reorganized our xml parsing logic from game start.<br />
** Previously, we were opening xml files one by one in groups, parsing out the information into one data format, wrappering the format a little, then parsing the data from that data format and wrappering a bit more as we went.<br />
** This was SLOW, because sometimes we'd wind up waiting on disk access for a few extra ms on some file and that can compound (OSes can be funny like that), all that other main parsing had to happen on the main thread, and in general only the final parsing happened on background parallel threads.<br />
** The new approach finds all of the files in the background in about 25ms, then loads them all on background threads in about 300ms (on a quad core machine, on a basic SSD), does all that wrappering and initial translation on those same background threads, and THEN later goes back to the normal final parsing process with no need to worry about the disk anymore.<br />
** In practice, it looks like this actually does not speed up much (siiiigh), but it does remove some variability on slower machines in particular, probably. And the reorganization of this allows for us to make further enhancements to both speed (maybe) and functionality (definitely).<br />
** Update: actually, this may be a bigger deal than we expected at the start. Even on an SSD, sometimes this will spike to about 5 seconds instead of 300ms. If this was not happening on many background threads at once, then the wait might be even longer, so this is probably a solid win.<br />
<br />
* The LookupSwaps table no longer uses a lock to write into its dictionary. Instead it uses a ConcurrentDictionary.<br />
** This takes a process that was often between 2-6 seconds long (just depending on luck), and turns it into a 300ms event.<br />
<br />
* In the event that a sprite can't be found for some reason during sprite lookup in xml parsing, it now gives you much more informative reasons for that, and in a more brief format.<br />
<br />
* Previously, any game settings or achievements that were defined in expansions would not appear in the main game. Fixed.<br />
** This is one immediate and concrete benefit of the revised xml parsing logic.<br />
<br />
* Restructured even more of our xml reading and pre-parsing so that it happens on background threads absolutely as much as possible. This leads to a small speedup.<br />
<br />
* Carefully continuing to make changes to our xml processing while verifying that the results remain identical. We are now removing the "get row or create it if you don't find it" method, because this was only a sentiment that we wanted to enact three places in the codebase (related to settings, expansions, and mods), and the potential harm of accidental usage is a lot higher. This also sets us up for our next two goals on table row creation.<br />
<br />
* The name and ready status of xml nodes is now read on background threads and cached.<br />
<br />
* All of the creation of any row nodes is now done on the main thread, prior to any multithreaded processing that will later happen with them.<br />
** This lets us avoid using locks, and avoid using the ConcurrentDictionary for the central list of rows.<br />
** This also saves us a couple of dictionary lookups in the end, and in general reduces the chances of there being thread contention that causes inexplicable extra load time delays... fingers crossed. We do have a few other places with locks, but they are not used remotely so frequently as the other central lock was.<br />
<br />
* For xml tables that are parsed without multithreading, they now have a slight code branch to avoid using any locks at all, which speeds them up slightly once more.<br />
<br />
* RowAlteredByPartialRecords has been removed from table rows, as we are not actually using that.<br />
<br />
* Finding the "None Row" is now way more efficient on tables, and happens on the background processing threads.<br />
<br />
* The DoPostInitializationAndSortingLogic() method on tables has been split into two rows, one on the main thread and one on background threads.<br />
** Same with DoPostInitializationLogic(), which is also now more clear as being DoPostInitializationPreSortingLogic() with those two variants.<br />
<br />
* The sorting for table rows, and a lot of the post-initialization stuff, now happens much later (after the initialization of all threads) and on parallel background threads.<br />
** This drastically speeds up certain aspects of loading the game, and lets us handle certain things in a more orderly fashion on more threads.<br />
<br />
* The RowsBase collection has been removed off of ArcenDynamicTableBase, which simplifies a number of things and makes for fewer operations.<br />
** On ArcenDynamicTableBase, there is now a new DoForRows() method which lets us iterate over the rows even without knowing the type of the end table generics. Handy.<br />
** Also added a variant of DoForRows that is kind of like Parallel.DoFor(), since that's a pretty neat processing pattern. This turns out to be very useful when combined with yield statements, which can't be in anonymous methods directly.<br />
** Additionally, added a GetCountOfRows, which also helps with much the same group of things.<br />
<br />
* Several places that were trying to get things from ArcenDynamicTableBase later in the runtime are now more efficient thanks to using the DoForRows().<br />
<br />
* Added LogDelayedSingleLine() and DumpAllPriorDelayedSingleLines() to ArcenDebugging, which allows us to not have rapid multithreading messsages miss some line writes.<br />
** Otherwise, when there are many threads all trying to write to a log within microseconds of one another, they wind up largely not all writing. This makes it so they can all write.<br />
<br />
* Added a new OverrideAndSkipSortingNoMatterWhat to ArcenDynamicTableBase, which lets us skip the sorting even if some sort orders were specified.<br />
** For whatever reason, an old bug was preventing the team color definitions from being sorted, and that was actually good. The revised code does not have that bug, so we have to explicitly tell it not to sort.<br />
<br />
* Surrogate tables load a bit earlier, and death effect type tables sort themselves extra early on the main thread in order to maintain consistency with the order that things used to be in.<br />
** At this point we again now have parity with the way things have been up until now, despite doing a whole lot of things on background threads that used to block the main thread.<br />
<br />
* Rather than having LoadFinalSFXStuff() as a one-off for the SFXItemTable, there is now a generalized DoFinalLoads() that can be triggered on any table during load by setting a new HasAFinalLoadStageToCall = true on it.<br />
** The idea is to make it possible to do this style of late-load-with-UI-conting for any data table, and also to make that possible on reload.<br />
* Though in the end we found up needing this specific one load earlier, because of the way it links across to other things.<br />
<br />
* Adjusted a number of pieces of code in our xml import pipeline to be more multithreading-friendly. We noticed that there were cases where if there was an erroring row then it could potentially hit multiple tables that were unrelated to it, which was very confusing. But it turns out that in general we were just not quite threadsafe with every last bit of import process, so the remaining parts have been moved into standalone xml importer objects that no longer have these issues.<br />
** As a side effect, it now runs even faster (if your machine was prone to cross-thread contention). Either way, it runs properly correctly, which is the real thing that matters.<br />
<br />
==== For Hot-Reloading ====<br />
<br />
* There is a new PrepForCompleteReloadLater() abstract class required on every table.<br />
** The job of these for any tables where ReloadDuringRuntime.Allow is set is to make sure that any static variables are reset or destroyed.<br />
** But frankly, any instance variables that are lookups or big lists of things should also be reset.<br />
** This will likely break at least some code mods, but they need to implement it in order to be sure that they are not doing anything that will cause a problem with in-place reloads of the mods and expansions when switching those out when the game has already loaded. This is the chance for the modder to fix anything that might be going awry that would be a memory leak or otherwise.<br />
<br />
* Added a new ObjectDumper.DumperPurpose.DataTableAggregations, which lets us output the table instance variables and any collections on them.<br />
** The idea here is that if we have tables that allow for reloads, and they have some sort of aggregators, we want those aggregators to now be instance variables rather than static variables so that this process can verify correctness.<br />
** There are certain classes where that would be incredibly hard to do, like input actions or music buses, etc. We are NOT reloading those tables during runtime, because untangling all that is too complicated for now and also not likely something that any modder would need.<br />
** However, there are some new classes that previously were set to disallow reload-runtime (not that that was a feature yet, but we were preparing for this a long time ago), and those are now set to allow reload.<br />
<br />
* Dozens of classes have had minor changes to make things not be static that were previously static, or otherwise shift things around so that we can reset things after a during-runtime data table reload and then verify correctness.<br />
<br />
* A variety of functions on the ArcenDynamicTableAggregator class have been updated to properly allow for resets and removals of surrogate tables (aka stuff from externaldata) more easily.<br />
** Initially we thought we were going to have to change things up substantially in a way that would break mods, but the current approach is a lot more gentle and centralized.<br />
<br />
* Substantially upgraded our ObjectDumper code so that we can now import the details of a lot of lists, which is really handy.<br />
** Specifically when we have lists of things like key values, and the value is a list inside the list, it now exports the inner list.<br />
<br />
* DumpInternalNameOnlyForArcenDynamicTableRow now longer works except on ArcenDynamicTableRows. Now you must use DumpInternalNameOnlyForAnything for other things.<br />
** This lets us assigned the former to lists of values, and have the values way down in there just export row names, but not stop at just giving the name of the inner list type itself.<br />
** This works specifically for entity system types, which are no longer ArcenDynamicTableRows (have not been for quite some time).<br />
<br />
* All of the various data tables now export header information talking about any instance objects they have with all their various data on them.<br />
<br />
* Added INoFurtherDumpingNeededBeyondMyToString and INoFurtherDumpingNeededBeyondMyToString as root interfaces to help us have a bit more brevity in how we output some of our KeyValuePairs in particular.<br />
** The GameEntityTypeData was getting SO huge to export that the text files were no longer something that could be compared with regular diffing tools.<br />
<br />
* Added a IDumpDetailsNoMatterWhat, which we can now use on structs that we want to report their details, such as TaggedUnitIncomeData.<br />
<br />
* And really, we just had to keep changing and changing even more things for the data dumps, but the end result is that we have a clearer view of more data when we choose to do them, and they don't take TOO long.<br />
** This is in general a really important part of us being able to do something like load or unload a mod on the fly and then know if the game is in a correct state or not.<br />
<br />
* Added a new GameProgramIsAboutToReloadExternalXmlAndSimilar() virtual method that is on all of the faction implementations, and which we or modders can override as needed to proactively clear out data right before the game tries to dump all its stuff and recreate things from xml.<br />
** Thanks to NR SirLimbo for inspiring this addition.<br />
<br />
* Added a new IDumpForMyselfRatherThanBeingAutomated interface relating to ObjectDumper, which lets certain classes choose to stop being dumped via reflection and instead state how they wish to be dumped.<br />
** This is now used on ArcenRandomDrawBag, so for the first time in these dumps we can actually see the entries for each item in there and how many tickets each one has! This is pretty darn important for knowing if something actually changed, or if we have the wrong number of tickets now after a reload, etc.<br />
<br />
* FleetItem and FleetItemForLater both now override ToString() so that they give details on what is in them for cases where things like them being in draw bags happens.<br />
** This makes Arcen.AIW2.Core.FleetDesignTemplateTable_Header.txt and Arcen.AIW2.Core.FleetDesignTemplateTable.txt and similar super informative and interesting even when we're not trying to debug anything. For someone interested in the design and how the ratios of turrets or whatever are actually stacking up, this is great info to be able to see now.<br />
<br />
* Enabling and disabling mods and expansions now causes the game to purge a lot of its data and try to reload that immediately, rather than requiring a game restart.<br />
<br />
* The settings for exporting the data after an initial game start and after a purge and reload are now two different options for the sake of ease of testing.<br />
<br />
* A variety of changes and tweaks have been made to various parts of the xml import pipeline to let it actually properly reload things.<br />
** Additionally, a variety of small tweaks to prevent exporting working data that muddies the view of the data dumps for comparison.<br />
<br />
* Added in some centralized logic to get the DeathEffectType to properly sort themselves at the right time during reloads.<br />
<br />
* The way that music data is initialized is done a little more consistently with other tables now, and music tracks can now be dynamically loaded from xml based on expansions or mods.<br />
<br />
* Made some substantial improvements to our general data table reloading and export dumping for purposes of checking validity.<br />
** Specifically, generalized out the overall pattern from this to a new IReloadableXmlSource interface, which is now being applied to ArcenAbstractExternalData.<br />
** This means that when mods make changes to things like the core constants, visual constants, and things like that, those now actually get applied (or un-applied as the case may be) during a hot reload.<br />
<br />
* The way our ExternalClassDefinition files are initialized is now more efficient, and also compatible with optional reloads of linkages where needed.<br />
** Actually, wound up splitting this into two new versions: ExternalSingletonClassDefinition and ExternalClassFactoryDefinition.<br />
** It's worth noting that if a few of these things are altered as part of a mod -- and that would be one heck of an ambitious mod with really super unusual properties -- then the ones that are based on the factory class won't properly be reflected in the visuals after a hot-reload.<br />
*** All of those are basically revolving around the code of how ship-to-ship lines/beams, special effects, and ships themselves are drawn. The odds of anyone actually needing or wanting to wholesale replace those, even in a total conversion mode, are next to zero. There are better ways to accomplish the same thing, depending on the level of C# savvy the modder has.<br />
*** The ones that are based on a singleton ALSO are incredibly unlikely to need or want to be replaced, but they can be replaced with ease and the hot reloading will update them properly. These are the ones that would actually affect gameplay rather than just visuals, too.<br />
** This actually wound up being a bit of a time sink, but at least it works correctly now.<br />
<br />
* Changed the final calculation stuff from the game entity type table to use the recently-added DoFinalLoads() callback.<br />
** This thus fully fixes most of the remaining things that were wrong with game entities when we do a hot-reload of them.<br />
<br />
* The game now completely throws out all the old xml and reads the new xml from disk when you do a hot reload of expansions or xml mods.<br />
** With this change, the last strange little ghosts we were having are all fixed in terms of the data not coming in quite the same way again.<br />
** This also has the side benefit of being a quicker way to refresh the xml if you want to do that without restarting the game.<br />
<br />
* When doing a hot reload, the game now properly expands its search for code to look in the newly-available mods that have just been turned on.<br />
<br />
* The game now properly updates things like the paths it will look for asset bundles on when you change the expansions/mods and thus do a hot reload (this was never possible before, so it's a new thing).<br />
** '''All of the data in the game now properly hot reloads!! This is a pretty major milestone after a lot of work. It saves an enormous amount of time for players and for us as developers.'''<br />
<br />
=== Ship Model Loading Improvements ===<br />
<br />
* Error checking for ship models has been shifted to be sure it only does it once per actual ship visual, rather than once per ship type.<br />
** Essentially we have a ton of variants of ships that use the same model (six different kinds of raiders, for instance), so checking those fewer times makes things way faster.<br />
<br />
* Added a new debug settings option, defaults to off: Check For Errors On Ship Models During Load<br />
** If you are creating a mod with custom ship graphics, you may want to turn this on. When we are adding new ship models, it's also useful for us to turn this on. But otherwise this is something that most users can skip.<br />
** Previously we were always doing this on all ships when you had ship graphics on, which made the loading of ship graphics needlessly slow.<br />
<br />
* If you had ship models disabled, and then later enable them, it now draws the correct model rather than just raiders at various scales.<br />
** Thanks to Vic, Badger, and Ovalcircle for reporting.<br />
<br />
* Previously if you had ship models disabled when you loaded the game program, and then turned that on, various unpleasant things would happen:<br />
** If you turned it on while playing, then the ship models would still not show until you left the game to the main menu and came back in. Now they just appear immediately.<br />
** If you were on the main menu and loaded into a game, then it would sit around for a REALLY long time (many seconds) with the game seeming to be frozen as it loaded all the models. Now it loads them as-needed as you play in this scenario, which leads to slight hitching when new ship graphics are seen for the first time, but that's pretty minor.<br />
<br />
=== General Fixes And Additions ===<br />
<br />
* It was apparently possible in some cases to get exceptions in trying to initialize the dynamic table base for various tables at random. These errors are now caught better and reported more accurately.<br />
** These seemed to be more likely in hot reloading, but now should not really be possible at all, or at least not break the game if they do happen.<br />
<br />
* Fixed a few errors that could happen with modal question boxes where they could potentially have errors when you clicked them multiple times if they were still executing a long command (such as a hot reload) after you clicked the button the first time.<br />
<br />
* Implemented some new ways to force immediate hiding of all the windows that are open, for purposes of getting things out of the way for doing things like a hot reload.<br />
<br />
* Also implemented ways to hide the main menu background scene during these sorts of times.<br />
<br />
* Added a few more coroutine yields near the end of the load process. This will make "Stimulate Modulation" no longer take an inordinate amount of time if that's what was actually being slow for you. But also, there are some multithreaded processes in there and it will let them breathe a bit easier between one another and avoid situations of one group running up against the next. That was happening on some internal builds when things ran too fast without a gap of at least one frame, and the hope is that won't happen at all anymore.<br />
<br />
* On every main loop of the UI, the game now checks for "delayed log messages" that were sent from other threads, and logs them.<br />
** Please note that because of the multithreaded nature of these, they are often not quite in the correct order when a bunch of them come in at once. If you see a bunch with the same timestamp, then the order within those is effectively random, but that's okay.<br />
<br />
* Our delayed message logging system is a bit more robust now.<br />
** One thing that we can now do is call ArcenDebugging.LogDelayedSingleLineErrorThatMayBeFromAMod, and pass in a mod-or-null (typically these are related to a dynamic table row).<br />
** This lets us detect if certain kinds of data loading errors are coming from mods, and if so we append a note on the front of the error message that explains that the mod has had an error.<br />
<br />
* Certain xml errors are now more brief, and these error messages also specify what mod they are coming from if they are from a mod (which is really common if you use a mod that requires an expansion or another mod).<br />
** We have also made it so that if an official expansion has such an error, then it specifies the error, but that is hopefully exceedingly rare.<br />
<br />
* Various types of xml parse errors were previously then leading to secondary errors about unrequested attributes or nodes. Those secondary errors were spurious and got in the way of seeing the real errors. They are now quieted.<br />
<br />
* Fixed a perplexing issue that was remaining with exceptions happening in multiplayer from speed groups being created. We suspect that maybe some of the code did not get properly pushed in the most recent build for that one item, but if it was properly pushed then this will make it work properly, either way.<br />
** Thanks to CRCGamer and Badger and their multiplayer groups for reporting.<br />
<br />
* Fixed a couple of cases where multiplayer clients were potentially causing either exceptions or excess gamecommands or both based on exogalactic aattacks.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
=== New Mod Capabilities ===<br />
<br />
==== Mods That Adapt To What DLC Or Other Mods You Have Enabled ====<br />
<br />
* Every type of xml row in the game now can use a new required_expansion_list="whatever" attribute.<br />
** If this is present and there is at least one expansion listed in there, then this row will be completely ignored if the expansion(s) are not present.<br />
** This is super useful for mods that want to make changes to both expansion and base game content, as one example.<br />
** It is also useful for our own expansions that might want to add certain things if another expansion is present. For example, DLC2 adds a some more content to the Scourge if you also have DLC1.<br />
** For an individual row, you can say required_expansion_list="1_The_Spire_Rises" to just make it happen if DLC1 is present, or you can say required_expansion_list="1_The_Spire_Rises,2_Zenith_Onslaught" to make it so that the individual row requires BOTH the first and second expansions for some reason.<br />
** If you specify an expansion that does not exist, then the game will throw a visible error, since it's assuming that's a typo. There are no expansions that exist that an up to date version of the game would not be aware of.<br />
** It's worth noting that if this is place on a parent node, then it does not have to be placed on the child nodes under it. The child nodes will be ignored automatically.<br />
<br />
* We also added a required_mod_list attribute, which works exactly like the above.<br />
** However, in the event that a mod is not found, it logs something much more brief, and does so silently on game load only.<br />
** The reason for this is that it's extremely likely that a mod might not be on your computer but another mod requires it. We only know about the mods that we either package with the game or that you happened to install.<br />
<br />
==== Cosmetic-Only Mods ====<br />
<br />
* Added the concept of "cosmetic mods," and added an example cosmetic mod (the example is disabled so that it doesn't show up in-game).<br />
** To turn a mod into a cosmetic mod, simply add a file named ModIsConsideredCosmetic.txt to your folder<br />
** Here's how it all works:<br />
*** This is an example mod that shows how to create a mod that is purely cosmetic -- aka it changes nothing that would affect gameplay. This mod then is not logged in the list of mods applied to a game, which means that the savegame can be shared with other people. The other people would have no idea that a mod was in use at all, in fact. You can even use this sort of mod in multiplayer, with you having the mod on and others not, and there are no problems.<br />
*** The general idea is that this is for text changes, or visual updates, but nothing else. If you change the size of a unit's radius, even, then that will affect gameplay in terms of how ships decollide.<br />
*** If you do something like double the ranges of your turrets, you could still mark that as a cosmetic mod. With no new ships being added, and no new shot types added, other players can load your savegame fine. If you have a personal list of tweaks that you want to make to the base game, but you want to still be able to send in savegames to the devs easily, this is a way to do that.<br />
*** In multiplayer, if you have very different stats on your ships in a "cosmetic mod that is actually affecting gameplay after all":<br />
**** Then if you are the host, the game will proceed by your rules, to the surprise of everyone else.<br />
***** Everyone else will see the usual ranges and stats and things, but ships will be violating those rules seemingly without reason. Please don't prank people and then send us bug reports on that.<br />
**** But if you are the client, you will see your ships start to act your way, and then they will constantly be corrected by the host.<br />
***** No one else would be aware of your shenanigans, and you would not alter the game flow at all, but your ships and shots will tend to jump around and make shots that differ from the host and just generally test the self-correction the game has in place.<br />
<br />
==== Fixes To Existing Mods ====<br />
<br />
* The adjustment for the scourge faction in DLC2 now uses a required row for DLC1, so that people who have DLC2 without DLC1 won't get errors.<br />
<br />
* The "Extended Ship Variants" mod by NR SirLimbo previously had a separate variant that was specifically for DLC1. That has been removed, and wrapped into the main mod. So all of the features are all in a single mod, and the extra stuff for DLC1 just turns on if you have that (and is harmlessly off if you don't).<br />
** We are using this as an example of how to handle a mod of this sort. There are some things that were originally part of the fallen spire mod that COULD function without the first DLC (no errors happen), but they would have wound up not making any sense. These are mostly in the Fleet Design Templates. So you can see we limited those to also require DLC1, which means that they will only appear when the ships that would populate them would appear. This might seem obvious, but it's easy to overlook.<br />
** We also are using this as an example of how to combine mods. We are using ModAlternateNames.txt in order to include the old name ExtendedShipVariants_FallenSpire, and with this that means that if either mod was enabled before, they both map to the one combined mod now.<br />
** And lastly, we also have updated this to be a proper example of prefixing of filenames. We have the prefix ESV_BaseGame for the files that are for the base game, and ESV_TSR as the prefix for the ones that require DLC1, just to make things easier.<br />
*** In the base game, you see many files with prefixes like CMP or KDL or Badger or similar, but these are simply the initials or handles of Chris, Keith, and Badger and should not be copied elsewhere. For the ease of knowing where a file came from (when just looking at the filename itself), you should use your own name, initials, handle, or mod name.<br />
<br />
* In the event that you enable the Spire Railgun Shop (mod by Lord of Nothing) without having DLC1 installed or enabled, that mod no longer generates a bunch of errors.<br />
<br />
* The More Starting Options mod by ArnaudB has been updated so that it no longer strictly requires DLC1 to be installed. Most of the additions will not be present without DLC1 installed and enabled, but there were a couple of fleets in particular that happen to use only base game ships, so they would appear.<br />
** The mod no longer gives a bunch of silent log errors (and strange options with next to nothing in them) if players enable it despite not having DLC1 installed.<br />
<br />
== Version 2.701 Good Grief Hotfix Bonanza ==<br />
(Released December 6th, 2020)<br />
<br />
* Confirmed that beam weapons DO work in the new multiplayer system for clients.<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in some various protections for exceptions that could happen when it was trying to calculate the difficulty of various hacks. This kind of falls under the category of "how did this ever work?" since it was in some cases trying to check information from the first AI faction even if you were not in a game (and thus there were no factions yet).<br />
** In other cases where it might be something else, these errors are now also more informative as well as not causing issues in further execution of the code.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Fixed an issue in the most recent version that had prevented things from compiling properly and thus was causing all manner of strange issues. Visual Studio has been acting a little funky on Chris's machine and doesn't always report errors the way it usually should, so this slipped past (rather than having a big list of errors, you have to look for the tiny text of build failed, which disappears after a few seconds -- fun!).<br />
** Thanks to Puffin for discovering the issue in code.<br />
<br />
* Previously it was possible to hit an exception in GameCommand_CreateSpeedGroup that would cause the entire execution to stop in multiplayer. We're not sure exactly what was happening there, but now two things are true:<br />
** Firstly it will no longer block the rest of everything. It also has some code in there to prevent a few possible causes of this.<br />
** Secondly it will now give a more detailed report on what went wrong if something does go wrong in here again in the future.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed an issue that was probably not a real issue, but if it does come up again it will at least give a more visible error and also ask about missing mods.<br />
** Essentially this was probably due to the compile bug, but was entity systems not being found via fast blast data sometimes.<br />
** Thanks to CRCGamer for the log that had this in it.<br />
<br />
* Fixed an issue in the most recent version of the game where disposed rect transforms could wind up being checked for position offsets, thus causing endless streams of exceptions. This was most common when opening the settings menu and then clicking to the performance tab, but could also happen other ways. We now intercept this so that it doesn't happen.<br />
** Thanks to ParadoxSong, ArnaudB, Puffin, and NRSirLimbo for reporting.<br />
<br />
* Fixed another bug with hacking difficulty causing exceptions. Factions are sometimes just validly null in there, and it now recognizes that.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* For unknown reasons, it was possible for the Scenario on the long term world setup data to be null on multiplayer clients, particularly with certain mods in use.<br />
** The game now has been adjusted all over the place to use wrappered calls to scenario objects and get the default scenario if one is null. Additionally, if the scenario is STILL null then the game just skips whatever was supposed to happen there.<br />
** The client will wind up getting the proper information from the host soon enough.<br />
** It's possible that code mods may need to be recompiled against this.<br />
** Thanks to CRCGamer and NR SirLimbo for reporting.<br />
<br />
* Added a new debug setting: Thread Debug Log<br />
** Log when each thread kicks on and off. Only use this for short periods if you are experiencing a game lockup, particularly with multiple mods on.<br />
<br />
* Added a new debug setting: Per-Second-Sim-Stage Debug Log<br />
** Log when each part of the per-second sim stages process on and off. Only use this for short periods if you are experiencing a game lockup, particularly with multiple mods on.<br />
<br />
* Added a new debug option: Network Code Branches Debug Log<br />
** Log when various parts of the networking code kick on and off. Only use this for short periods if you are experiencing a game lockup, particularly with multiple mods on.<br />
<br />
* Fixed a couple of boneheaded programming bugs that could lead to infinite loops and the game locking up when the server was trying to send certain data to clients.<br />
** The recent changes in the last version of the game made it a lot more likely, particularly when ships were added by a background thread, but that version did not originate the problem.<br />
** Thanks to NR SirLimbo and CRCGamer for reporting and providing an excellent savegame test case.<br />
<br />
* Put in defensive code in a few places that could have exceptions if the multiplayer client had exceptionally bad data because the host was having some kind of issue of its own. Hopefully never needed, but at least making things more clear and self-repair-y if there are problems.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* When loading savegames, it was possible to get a bunch of log spam that was invisible but said "Shot had no origin system, so discarding." This is quiet now, as it's not important. It only will go to the log when these are network messages.<br />
** Thanks to NRSirLimbo, CRCGamer, and others for reporting.<br />
<br />
* Fixed that bug that could still happen on clients if speed groups were created in multiplayer.<br />
<br />
== Version 2.700 Multiplayer Shared-Faction Reaches Beta ==<br />
(Released December 6th, 2020)<br />
<br />
* Previously, the new "invert ui mousewheel scrolling" feature was not inverting lists inside of dropdowns. Now it does.<br />
** Thanks to False and Daw11 for reporting.<br />
<br />
* Added a new setting to the HUD section: Mousewheel UI Scroll Speed<br />
** How fast should the scroll wheel move UI scrollbars when you spin it? The default value is 30, which should be comfortable for most folks. But if your OS has unusual settings, and the in-game interface feels like it scrolls to slowly, then go for a higher number. If it's too fast, go for a lower number.<br />
** Thanks to Daw11 for suggesting.<br />
<br />
* The tooltips from dropdown items now aligns to the dropdown item itself instead of the base dropdown. This makes it consistent with all the other UI elements, and again far more legible.<br />
<br />
* A further continuation of the bug that Badger was running into last night in multiplayer, it was still possible for the fast blast process to try to send squad info from the server to the clients before the fleet membership was assigned. It now detects that, waits up to 2 seconds, and then discards the data if the squad was never fully set up correctly.<br />
** There are two scenarios here. One of them is that sometimes we might start trying to create a squad which then we decide to discard, and those need to just get junked.<br />
** The other is that we are having a race condition within a few milliseconds or even microseconds one thread and another, and thus the main thread just needs to wait a bit. It tries every 50 milliseconds or so for 2 seconds.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* New galaxy map display mode: Priorities<br />
** Very focused view that just shows you any priorities that you have set, and nothing else beyond your own fleets. This information is available in every view, but this view makes it easier to see this information on its own.<br />
<br />
== Version 2.647 Planet Names, Notes, And Priorities ==<br />
(Released December 5th, 2020)<br />
<br />
* Fix a bug with clicking on the Spire Debris notifier<br />
** Thanks to UFO for reporting<br />
<br />
* Fixed an exception in Kaizers Marauders tooltips due to some changes in the Vanilla codebase.<br />
<br />
* Likely fixed the bug where galaxy map under-attack or ping indicators were showing in the planet gravity well edge in the prior version.<br />
** Thanks to Mac for reporting.<br />
<br />
* Deathgrip tackle drones now have aggro invisibility like most other drones.<br />
** Thanks to poljik2 for reporting the oversight.<br />
<br />
* Corrected an oversight in the threat strength galaxy map display mode that showed you threat that was not actually visible to you because of the fog of war.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Fixed a variety of potential places where exceptions might happen from the host to the clients when trying to sync squads. Why these ones were happening is a bit of a mystery, but it will either be more informative now, or fixed.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed an issue where playing with the nanocaust and winning the game could cause exceptions at the end.<br />
** Thanks to Crabby for reporting.<br />
<br />
=== Edit Planet Name, Notes, And Priorities ===<br />
<br />
* For planet priorities, in the original AI War we had P1 through P10 with specific colors, and we by convention players used those for specific things. Those are all making a return in this game, with the same colors.<br />
** However, because we have the flexibility to do so much more, we've also added the following words with their own colors: Ignore, Important, Later, Next, Danger, Help, Protect, Wanted, Trap, Wave, Hack, and Team.<br />
** We've also added the following letters with very different colors, for allocating sub-teams or objective order or whatever you like: A, B, C, and D.<br />
<br />
* Previously, intel-based higher and lower priorities would show on the galaxy map with lower to the left and higher to the right. Now it shows both of those on the right.<br />
** The new "planet priority" that you can set directly is instead shown on the left (if present).<br />
** If there are an uneven number of rows between the two things, then it puts blank rows on the opposite side to make other things line up properly.<br />
** Also if there are high and low priorities on a planet, it now only mentions the count of high priorities since the low priorities are not worth thinking about. This cuts down on clutter.<br />
<br />
* The Edit Planet button on the galaxy map is now fully functional.<br />
** Clicking this allows you to edit the planet name, add freeform notes to the planet (up to 512 characters, that show in the tooltip for the planet after that), and set a priority for the planet. The priority levels for the planets include the same exact ones from the original AI War, plus a bunch of new ones.<br />
** Thanks to Quiet, doctorfrog, Chthon, Badger, and others for suggesting various parts of this.<br />
<br />
== Version 2.646 Pings And Battle Indicators ==<br />
(Released December 4th, 2020)<br />
<br />
* Civilian Industries Update<br />
** Updated for the latest version of the game.<br />
<br />
* The Abandoned Asteroid Mine now has a bit of flair to make it easier to tell it apart from regular metal generators. I do think this probably could use some additional icon tweaks for more clarity, but it's something.<br />
<br />
* Fixed a bug in the logic for the top units by strength not showing properly if you had fleets at that planet, in the Strength With Top Ships mode.<br />
<br />
* Ship lines in the Fleet Health menu are now sorted from strongest to weakest.<br />
<br />
* Added a new hotkey to a new Other UI section of the controls window: Toggle Fleet Status Window For Current Planet<br />
** Pressing this button combo will open or close the fleet status window. You can also open that window from the bottom left bar on the galaxy map.<br />
** Defaults to Ctrl+F.<br />
** The button on the galaxy map now informs you this tooltip exists.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Added a new hotkey to a new Other UI section of the controls window: Toggle Fleet Status Window For All Planets<br />
** Pressing this button combo will open or close the fleet status window for all player fleets in the galaxy. You can also open that window from the bottom left bar on the galaxy map.<br />
** Defaults to Ctrl+Alt+F.<br />
** The button on the galaxy map now informs you this tooltip exists.<br />
** Thanks to Badger for suggesting.<br />
<br />
* One of Chris's greatest pet peeves, which for some reason stayed under the surface in terms of actually really thinking about doing much about it, is now resolved.<br />
** Essentially, big tooltips often covered the thing you were actually trying to look at, which was just super frustrating. Now tooltips automatically try to either move up or down, whichever is available, to not cover the thing you are hovering over.<br />
** As one example among many, the new ping button was absolutely invisible when you moused over it, because of its own tooltip. Now you can see the darn thing.<br />
** Dropdown elements may need some adjustment at some point, because it aligns to the top or bottom of the dropdown itself, not the dropdown item in the popup, but that's a smaller annoyance than what it used to be, at least.<br />
<br />
=== Battle Indicators On Galaxy Map ===<br />
<br />
* In any galaxy map mode, on planets that are owned by a faction that is friendly to the players (or is in fact player-owned), if there is an attack going on a little animation of swirling circles like voice echoes play around the planet. It comes in four severities:<br />
** Darker blue and smaller if good outnumbers bad 2:1.<br />
** Lighter blue and still pretty small if good outnumbers bad.<br />
** Orange and larger if bad outnumbers good less than 2:1.<br />
** Orange and more vigorous and larger if bad outnumbers good 2:1 or more.<br />
** We experimented with a variety of effects, but all of these ones are subtle enough that they should be noticeable but not something that cause anything close to a strobing effect or anything that would cause motion sickness or headaches. But please let us know if you experience something different. The idea is to just draw the eye a bit, but it's a pretty small indicator on your screen. Overall the goal being to notice spots of conflict on the map more easily.<br />
** Thanks to Badger for inspiring this addition.<br />
<br />
=== Pinging Planets And Locations For Multiplayer ===<br />
<br />
* Another new button in the Other UI key combo section: Toggle Ping Mode<br />
** Pressing this button combo will enter or exit 'ping mode', in which you can leave colored markers strewn across one or more planets. These markers fade over 6 seconds, and are mainly for communicating in multiplayer.<br />
** Default: F1<br />
<br />
* The ping button on the galaxy map is also now fully functional. Its new description in its tooltip:<br />
** Click to enter ping mode, which works on the galaxy map or at individual planets (shortcut key: F1). Any pings you leave on the galaxy map last for 6 seconds, but don't get any smaller over time. They're for drawing the attention of multiplayer allies with a little green marker. If several of you are pinging at once, it's a good idea to take turns for the sake of clarity as you discuss things. On an individual planet, you can draw a whole series of pings, which get smaller over time, thus letting you indicate direction.<br />
<br />
* It is now possible to hold down hotkeys during ping mode and do different ping colors: orange, blue, pink, and yellow in addition to the usual green. This lets you indicate different things more easily while discussing. The UI shows what will happen very clearly, and you can customize the keys.<br />
** Thanks to Badger for suggesting.<br />
<br />
=== More Galaxy Map Display Modes ===<br />
<br />
* New galaxy map display mode: Energy Consumption<br />
** Shows how much energy the selected faction(s) are using at this planet. If there are two lines, then the top line is how much is being used by units directly, and the second line is how much is being used by units contained in other units (usually transported ships). Unit icons shown under the planet are for the three heaviest energy users at the planet.<br />
<br />
* New galaxy map display mode: Threat<br />
** Very useful! Ignores what factions you select on the left dropdown. Shows how much Threat strength there is at this planet from any source. So this is threatfleet ships belonging to the AI Sentinels, and AI Hunter ships, mainly.<br />
** Thanks to ArnaudB and Badger for suggesting.<br />
<br />
* New galaxy map display mode: AIP Reducers<br />
** Ignores what factions you select on the left dropdown. Shows any unit that is able to reduce the AI Progress (AIP) of the AIs.<br />
** Created by Badger in 2017.<br />
<br />
* New galaxy map display mode: AI Defenses<br />
** Ignores what factions you select on the left dropdown. Shows all major AI defensive structures at each planet as icons. In text, shows the strength of all hostile units at each planet. If it's stronger than your current selected ships, then it's orange text. If it's more than 2x as strong as your current selected ships, then a deeper orange. If it's less than half as strong, then it shows as a light blue.<br />
** Created by Badger in 2017 and spruced up very slightly.<br />
<br />
* New galaxy map display mode: Capturables<br />
** Ignores what factions you select on the left dropdown. Shows any unit that is considered to be a capturable, or that maybe are not capturable but exist purely to be hacked to gain new stuff.<br />
** Created by Badger in 2017 and spruced up to include a lot of new things.<br />
<br />
== Version 2.645 Hotfix ==<br />
(Released December 3rd, 2020)<br />
<br />
* Fixed a wide array of exceptions that could happen, particularly as of the last version, if you had a partially failed save or quickstart load. If the playeraccount was missing, which is the real bug, then certain other parts of the code would spam tons of errors and obscure the real one. They no longer do.<br />
<br />
* Fixed a one-line typo with the recent changes to delayed invasion support for the nanocaust that was causing all older quickstarts and savegames that included the nanocaust to not be readable.<br />
** Thanks to Cel for reporting.<br />
<br />
== Version 2.644 So Many Good Things All At Once ==<br />
(Released December 2nd, 2020)<br />
<br />
* Added a new "Invert Mousewheel UI Scrolling" setting to the HUD section of personal settings:<br />
** Description: Normally when you spin the mouse wheel forward, any scrollable areas you are hovering over in the UI go up; spinning backwards goes down. This lets you flip that functionality. OR, in the case that your hardware or OS is inverted for whatever reason, this lets you correct it to work like everyone else.<br />
*** Note: if you also want/need to invert how your mouse wheel works when zooming the game view, then be sure to also set the 'Invert Mouse Zoom' option in the All Cameras section.<br />
** We also updated the other setting to also mention this one, so that if you find one of them you can find them both. We left them as two separate settings since some people might want one and not the other if this is a personal preference and not the "backwards linux mousewheel" bug.<br />
** We thought that this was something we could not fix without unity taking care of it on their end, but we took a peek at some of their old decompiled source code and found an efficient way to find all of the objects that need reversed scrolling and update them in cases where that is indeed needed.<br />
** Thanks to Blu3wolf, The Main Man, whetstone, TechSY730, Matruchus, Elos, carewolf, and others for raising the issue again.<br />
<br />
* Remove a mechanism where fireteams would deliberately overestimate turret strength; turrets are no longer under-valued strengthwise so this mechanic was now making the Hunter even more timid.<br />
<br />
* The Hunter is no longer allowed to retreat from a battle involving the AI Overlord. They must fight to the death there. This includes Exogalactic War Units. <br />
** This has been reported in a number of places, but most recently by Waladil on discord<br />
<br />
=== Delayed Invasion Support ===<br />
<br />
* Marauders can now be requested to do a "delayed invasion", ie they won't start attacking until a ways into the game. <br />
<br />
* The Nanocaust can be set to invade at a random time during the game, or immediately. This replaces the old "Non-Immediate Nanocaust are seeded as beacons" paradigm. <br />
** If not explicitly requested, the nanocaust will appear in a beacon.<br />
** This change means the Nanocaust now works "correctly" in the game lobby.<br />
** This resolves bug reports from ParadoxSong and Isiel. Possibly others as well<br />
<br />
* Also you can request the nanocaust to appear on a player planet. This is a terrible idea unless they are your allies<br />
** Requested by Arc-3N-4B<br />
<br />
=== Galaxy Map UI Additions ===<br />
<br />
* On the galaxy map bottom left bar, there are edit planet and ping planet buttons, but for now those are just going to have a "coming soon" tooltip on them. We'd rather not delay the rest of this release another day just for them.<br />
<br />
* The new default for when icons and text on the galaxy map stop drawing is 10, rather than 1.5. It will update existing settings for you.<br />
** This makes them always show, even if it does get crowded. Trying to use galaxy map filters with them disappearing was an exercise in anger management.<br />
<br />
==== Planet And Unit Search ====<br />
<br />
* Added a new "GalaxyMapTextboxFunction" xml table, which lets us (or modders) define "a thing that uses a textbox on the galaxy map to do something."<br />
** That is vague somewhat on purpose. But mostly we expect it will be used for searches of various sorts.<br />
** For now we have implemented one for finding planets, and another for finding units.<br />
<br />
* There is a new bottom-left UI element on the galaxy map view. This has a number of functions built all into one.<br />
** First of all, it has a new find planet option, which is extremely responsive and lets you search for planets by partial text, darkening all others that are not including that text.<br />
*** It also shows the names of all the planets that come back as possible matches, even if they would not normally be shown right now.<br />
*** It does not try to do any centering on the planets it finds, as it might find many. But at any rate, this is a very dynamic and simple way to find planets by name.<br />
** Secondly, it has a function that lets you search for planets by name of a unit (ship or structure).<br />
*** Any icons shown at planets will be shown in this mode, regardless of zoom distance.<br />
*** Even better, it actually hides all of the icons that would normally be shown, and instead shows the first ship icon of each match that it's finding on that planet (if there are 100 v-wings, it will only show the icon for one of them, but you're usually not searching for something like that).<br />
<br />
==== Fleet Status Window ====<br />
<br />
* Added a general new Window_BottomLeftSelfUpdatingTextWindow, which works pretty much like Window_ModalSelfUpdatingTextWindow from a code standpoint. However, this lets us give a non-modal (aka non-input-blocking) onscreen view of some sort of information over there on the left where chat and such would be. Tooltips and chat and similar will block this view, but otherwise it stays open until you close it, which can be useful for information players want to have at their fingertips and that a modder or developer wants to provide them.<br />
<br />
* Over the last couple of weeks, Badger has been working on a Fleet Status display that was kind of hidden up there on the attack buttons in the top resource bar. There is now a dedicated F Stat button on the galaxy map that you can hover over to find out about this function, and left click or right click to get information on local fleets or all fleets.<br />
** This is the first usage of the new Window_BottomLeftSelfUpdatingTextWindow, and it lets you keep an eye on your own status of fleets, or the status of allies in multiplayer, that sort of thing.<br />
** This is no longer openable off of the resource bar, but instead just off this new galaxy map button.<br />
<br />
==== Galaxy Map Display Modes ====<br />
<br />
* Galaxy map display modes make a triumphant return! <br />
** All of the prior ones that were there were really old, not having been altered since... goodness, September 2017.<br />
** When we updated the game to a new UI style in 2018, these were disabled and we never got back to adding them in until now. With that said, we're revisiting what they actually do, or replacing them.<br />
<br />
* Normal display mode (what you've seen always for the last few years):<br />
** Ignores what factions you select on the left dropdown. Shows your strength on the right of each planet, and enemy strength on the left at each planet. Unit icons shown below the planet are a general mix of high priority units.<br />
<br />
* On all of the galaxy map modes, it now is sure to keep showing your own fleets, since those are useful to be able to select and click and such no matter what else you're looking at.<br />
<br />
* Metal Production display mode:<br />
** Shows how much metal the selected faction(s) are generating at this planet in gray, and how much is available but not used by that faction in red. Unit icons shown under the planet are one per type of metal generator.<br />
** Useful for seeing which planets have more metal that you might want to capture, where your main metal production is, and where your metal production has taken damage.<br />
<br />
* Energy Production:<br />
** Shows how much energy the selected faction(s) are generating at this planet in gold, and how much is available but not used by that faction in red. Unit icons shown under the planet are one per type of energy generator.<br />
** This is useful for seeing where you're generating energy in a visual way, AND for finding large energy generators that you might want to capture out in the rest of the galaxy.<br />
<br />
* Science And Hacking<br />
** Shows how much science and hacking points are left to be gathered on each planet. The only unit icons shown under planets are player fleets.<br />
<br />
* Strength:<br />
** One of the most useful display modes! Shows how much strength the selected faction(s) have at each planet. The only unit icons shown under planets are player fleets.<br />
** This is the really important filter! This is how you find out just how strong the hunter is, wherever it is, or easily pick out exactly where the warden is hiding. Assuming you have up to date intel, of course.<br />
<br />
* Strength With Top Ships<br />
** Mostly the same as the Strength display mode. However, this is much more cluttered because of the icons showing the three strongest units of the relevant faction(s) being shown as icons under each planet. So this is less useful than the general Strength display mode for seeing an overview of everything, but it's great for observing what the big hitters are at various planets all at once.<br />
<br />
===== Faction Filters =====<br />
<br />
* On the galaxy map, there are now detailed faction filters for EVERY faction, including normally-not-listed ones, all organized into various categories with proper explanations.<br />
** This actually took WAY longer to create than we expected, but it gives the ultimate in flexibility in all that.<br />
** The nice thing is that this only fills in as you actually encounter members of each faction, so this starts out smaller but then grows substantially as you find sub-parts of the AI, etc. So for example, you likely will not see any Praetorian Guard entries for a while, and you would not see AI Reserves until they have struck you at least once, etc. No tamed macrophage unless you actually meet one.<br />
<br />
* Factions in general can no longer override CheckIfPlayerHasSeenFaction(), which we have upgraded to properly support beacons and other things of that sort.<br />
** There is now a new DoOnFirstSightingOfFactionByPlayer() that factions can override to get the same sort of effect they used to have.<br />
** You may need to let the game run for about one second before things will properly show up in terms of factions that should be visible.<br />
<br />
* Added a new FactionGroup class, which lets us start displaying/discussing factions by whatever arbitrary categories.<br />
** For now we have All, My, Allied, Hostile, and Beacon as the categories, with tooltips explaining each.<br />
<br />
* Added a new FactionFilter struct, which lets us mix actual factions with faction groups, and display them in a nice list that we can also sort.<br />
<br />
* Badger's fancy SortFactionsForDisplay() has been removed off of Human.cs and is now on BattlefieldVisualSingleton.<br />
** However, it should never be directly called anymore. It should now be retrieved from FactionFilter.GetLatestSortedFactionCompleteList() to get that result which is cached and only updated once every 10th of a second.<br />
** This now lets us get that from other parts of the code that are not in externalData, too.<br />
<br />
* Beacon factions that have not been summoned yet now show "(Beacon)" in front of their names.<br />
<br />
* Added a new is_considered_visible_part_of_the_ai_faction_for_filter_purposes for factions, which lets us have certain sub-factions like the AI Hunters and such show up more prominently in the list of factions in the galaxy map filters.<br />
** Also added is_considered_player_allied_for_filter_purposes for purposes of getting the Outguard to show as a player Ally even though they are usually invisible.<br />
<br />
=== Updates To Included Mods ===<br />
<br />
* Fixed the spire railgun shop mod to use the newer xml that is about spire ships not working when not on a PLAYER planet, instead of a specific owner faction. This was a change we made for multiplayer compatibility, and it changed an xml tag.<br />
** Thanks to Badger for reporting.<br />
<br />
* Kaizers Marauders improvements:<br />
** Removed the ability to assign negative budget and in return changed and integrated the Invasion Time setting from Vanilla<br />
*** Assigning negative Budget would work, but had its issues: Marauders were forced to start out very small, the timing was estimated at best and could vary incredibly<br />
** Now the player can choose Immediate, 1-10 hours and Random /Early/Mid/Late/Very Late game and Random All, which translate to 0-2, 2-4, 4-6, 6-8 or 8-10 hours of actual game time, with Random All being 0-10 hours<br />
** Essentially the mechanic is that in beacon mode the beacon will self-destruct when the time mark is reached, BUT the player can still destroy it earlier. During this time Marauders gain NO Invasion Budget<br />
** When not in beacon mode Marauders are prevented from doing any invasion logic until their time has come, but they passively accumulate more budget and will invade with quite a few forces. Note that they do NOT get any bonus budget from owning no planets as that would likely lead to much, much greater invasions yet...<br />
<br />
* AMU now has a new function: parseFIntFromStringUpToFirstSpace(). Can parse numbers like 1 / 1.6 / 100.738, etc. If more than 3 decimals are used any excess is discarded.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed divide by zero exception that could happen in the risk analyzers faction. This was not related to any recent changes, it just was apparently rare.<br />
** Thanks to Isiel for reporting.<br />
<br />
* Previously, mod names with spaces in them would cause the settings file on your machine to become corrupt and unable to be loaded. This should no longer be the case, although we've not tested it.<br />
** Thanks to ArnaudB and Isiel for reporting.<br />
<br />
* The capsule colliders on the lines between planets on the galaxy map no longer size up or down. This can mean that on very far zoom on very large maps it can be hard to get your mouse exactly over the line, but it's still very much possible and this is hardly a crisis. The main thing is that these no longer get in the way of the planets themselves, which may have been happening.<br />
** We investigated the planets themselves getting off on scale, but did not find any evidence of drift, and were already using the careful approach that we were considering "switching to."<br />
** We did also find a number of cases of places where things like notifications might have been getting in the way, with text that was extending beyond their bounds. We fixed all of those as well, in case those were what the problem was.<br />
** Thanks to AxiomExotic, afterthought, Vortex, Karlant, and Badger for reporting the problem with the hitboxes on the planets on the galaxy map still being there after long enough sessions of play. This may not solve it, but it does remove several areas of potential problems that were in place.<br />
<br />
* If a dropdown list is extended, and the number of items in the list changes, it now refreshes with the new options included. Previously, you had to close and reopen the dropdown list. That was potentially not possible to have happen as a situation before, but with the list of factions on the galaxy map it now is.<br />
<br />
* Fixed another issue with dropdowns still staying open after you switch to a different context where their parent window area is no longer visible. This was super noticeable with the new galaxy map controls.<br />
<br />
=== Balance Tweaks ===<br />
<br />
* Fixed Veteran Sentinel Gunboat having lower damage than normal, due to being missed in a long ago previous update.<br />
<br />
* Fixed Cloaked Mugger having less health than the normal version, due to being missed in a long ago previous update.<br />
<br />
* Reduced range of any Tier 1 Extragalactic units that were above 8,000 (before global range modifier) to 8,000.<br />
** Due to mentions of most Turrets being incapable of fighting these, and these are the tier that will be hit in most normal games, excluding modded ones and Fallen Spire runs.<br />
<br />
* 'Ram' Auto Bombs swap their armour damage bonus for a new one, that works against armour of +90mm. Mass damage bonus increased from 5x to 7x.<br />
<br />
* Altered Parasitic starting fleet. Normal Parasites are replaced with 25 Parasitic Pike Corvettes, 1 Mugger is removed, and 40 Stalkers are added.<br />
** The Why:<br />
*** Too many Parasites and not much damage led to this being a very slow start.<br />
*** Thus, some Parasitic Pike Corvettes were swapped in for some extra firepower, but keeping zombification.<br />
*** 2 Muggers is actually in excess of the normal cap size, so 1 is removed.<br />
*** Stalkers are added to give this fleet more single target power, making up for the loss of the Mugger, and lets it fight things such as Sabot and Nucleophilic Guard Posts early on (things which counter said Muggers).<br />
<br />
* Dire Tesla Guard Posts weapon jam works on armor <= 90, rather than <= 101.<br />
<br />
==== Turrets ====<br />
<br />
* Altered "large" Turret energy costs to have the same "cap scaling" as the "small" Turrets.<br />
** E.g a Pike Turret cost 2,250 energy. A Crusher Turret cost 37,500 energy.<br />
** A full cap of Pikes would be 5, costing a total of 11,250, compared to the full cap of just 1 Crusher Turret, still 37,500.<br />
** Now, the Crusher Turret costs the same as that full cap of Pikes.<br />
<br />
* Mini Fortress energy cost halved.<br />
** An exception, due to a report about its power, this has less of a change (66% reduction often).<br />
<br />
* Crusher Turret magnetic pull range increased from 4,200 to 6,500 (before global range modifier of 0.8x). Crusher weapon range changed from 1,000 to 1,700, hits 20 targets instead of splitting damage evenly, net DPS the same.<br />
** The last part lets it focus damage more, rather than spreading it out so much it doesn't help to kill anything off.<br />
** Also hopefully improved its pull targeting.<br />
<br />
* Acid Turret effect increased from 50 to 65, shot count 3 -> 5.<br />
** Will attempt to add Mark scaling to the effect, requires code investigation.<br />
<br />
* Increased target priority of Bulwark Turrets a chunk.<br />
<br />
* Doubled the self-build rate of the "Raid" technology Turrets, excluding Blitzkrieg which is a "large", and did not have the appropiate build rate for its size. It now does, and then that is doubled, leading to it being 6x what it was before.<br />
<br />
* Fusion Turret reload time reduced from 2s -> 1s, damage 700 -> 350, loses shield bypass. Instead, gains a 12x damage bonus versus personal shielding.<br />
** This replaces the ability to quickly destroy structures (not too useful on defense) with instead a highly supportive role, potentially useful combined with Imploder and Subverter Turrets.<br />
<br />
* Fuseball Turret range 10,100 -> 15,000.<br />
<br />
* Makeshift and Blitzkrieg Turrets no longer spawn units on death. Instead, they use the "drone guns" present on Combat Factories, as well as Tesla Torpedo and Tackle Drone Frigates (they have infinite range).<br />
<br />
* Makeshift Drone damage reduced 33%.<br />
<br />
* Increased Vampire Turret damage 25%.<br />
<br />
* Shredder Turret range increased from 4,200 to 5,200 (before global range modifier), damage increased roughly 30%.<br />
<br />
* Increased Imploder Turret damage 50%.<br />
<br />
* Doubled Deathgrip Turrets tractor count, increased range from 4,200 to 5,200 (before global range modifier), damage increased 20%.<br />
<br />
* Increased Jammer Turret damage 50%.<br />
<br />
* Increased Translocator Turret damage 50%.<br />
<br />
* Doubled Tritium Sniper Turret damage, halved multiplier.<br />
<br />
* Increased Fortified Tesla Turrets cap sizing to the same as normal 'small' Turrets. Reduced health by 40%.<br />
** Cap health is the same, cap damage is up 66%, but in the hands of the AI they are easier to kill (who don't get any more or less from current).<br />
<br />
==== Aggro Invisiblity, And Drones In General ====<br />
<br />
* Added a new cannot_target_or_alert_ai_reinforcement_spots option for ships, which provides the following new ability:<br />
** AGGRO-INVISIBLE: Enemy target ships and structures (mainly guard posts) that contain guards cannot detect this ship, and this ship cannot fire upon those targets.<br />
*** Once those targets have been alerted and have released their guards to fight, those targets can then be attacked by this ship.<br />
** Thanks to Strategic Sage and zeus for inspiring this addition.<br />
<br />
* The new Aggro Invisiblity ability has been given to all of the sniper ship variants, sentinel gunboat variants, sniper frigate variants, sniper guardian variants, and sniper turret variants.<br />
** This prevents them from engaging guard posts and similar unless those guard posts are already aggro'd, and thus not alerting an entire planet just because you bring them along.<br />
** Why have this on the guardians? Mostly for AI Civil Wars, but also in case you capture some.<br />
** Why on turrets? Mainly for purposes of beachheads.<br />
** Thanks to Zoreiss, AnnoyingOrange, Asteroid, Fluffiest, and others for reporting.<br />
<br />
* The various drones that had been switched over to the "drone gun" format as of a few weeks ago have been returned to the regular drone behavior.<br />
** Thanks to discussion with Strategic Sage for letting us know how much the new format was not great.<br />
<br />
* Pretty much all drones use the new Aggo Invisibility ability.<br />
** They can still go hit things right next to guard posts without causing an issue, and they can even hit guard posts that have already emptied their guards.<br />
** Guard posts can even still shoot at these drones if the guard post has any weapons, though the drones can't shoot back until the guard post is aggro'd by something else. These drones would not bother going near the guard post unless there was something else there to shoot, though.<br />
** Thanks to Puffin for helping set all this up.<br />
<br />
== Beta 2.642 Nearing Beta For Multiplayer ==<br />
(Released November 30th, 2020)<br />
<br />
* Fix a bug where the Incoming Exo Notifier would show the wrong % when it was sync'd with something<br />
** Thanks to afterthought for reporting<br />
<br />
* The Metal Flow Planning screen works again<br />
** Thanks to Crabby for reporting<br />
<br />
* Scrapping an MDC or GCA now correctly triggers the AIP increase<br />
** Previously if an MDC was about to be killed, you could scrap it to dodge the AIP increase<br />
<br />
* The tooltips for savegames in the save and load menu now includes what players are in the game in question (with that colorized), and also includes what size the savegame is on disk. The former is particularly useful when you're trying to remember which games you were playing with what other players.<br />
** We also shifted how we are finding the last write time for each file, which hits windows security less hard and thus makes opening the load game menu vastly faster when there are a bunch of files on windows in particular. This may also be somewhat faster on linux and OSX, but on windows in particular if you had dozens or hundreds of savegames, it could take a second or two to even open that window.<br />
<br />
* The way that error windows appear has been updated to be a lot more legible, as well as a LOT more dramatic and scary-looking. Wow that's a lot of red!<br />
** This was one of the last parts of the game that was not just in AN old UI style, but in the old UI style from the first prototypes back in 2016. Go figure.<br />
<br />
* There is a secondary error message window now, which is used when you try to load a savegame or quickstart or do something in the lobby or joining a new game and have some sort of error doing those things.<br />
** Those errors tend not to be fatal, and also tend not to repeat infinitely, and so it gives you a simple "ok" button that you can use to close the error and which then clears the history of how many errors have happened this game.<br />
** In recent versions of the game, you could try to load one broken save, get a message saying it's broken, then load a valid save and have a permanent blot on your UI saying that there were something like 2 errors since you started the game. Now that doesn't happen.<br />
<br />
* The metadata for savegames is now loaded asynchronously, except for its file size and last modified date. The actual rest of things that are shown in the tooltip data is loaded very fast, but not on the main thread. This means that the load menu opens even faster, on any OS.<br />
<br />
=== AI Intelligence Improvements ===<br />
<br />
* Fix a bug where fireteams going after MDCs could get hung up on not wanting to attack planets between the MDC and the Hunter. <br />
** Hunter ships required to go after a particular target (like an MDC) are now allowed to explicitly attack planets on the way<br />
*** Thanks to ArnaudB for reporting<br />
<br />
* Tsunami CPAs will now wait a minute or so after launching to gather their forces before they attack. The goal is to make the initial CPA punch a bit stronger; previously they were trickling their forces in piecemeal and not providing as much of an impact as desired.<br />
** It will still look just like the same behaviour to the player once the attack starts, there will just be a bit of a pause between the CPA spawning its ships and then those ships actually hitting your planets.<br />
<br />
=== New PKIDs Approach For Multiplayer ===<br />
<br />
* '''WARNING TO MODDERS!''' We don't suggest you just do a global search and replace for your various places in the code that are now calling methods marked as obsolete.<br />
** As tedious as it is, you should go through those line-by-line and swap them over to the new non-obsolete variant, which will note that it returns null in MP.<br />
** With all of these calls, it's up to you to check to make sure that if the method you just called returns null, you ignore whatever happens next.<br />
** In general, if there's anything that is changing more data about the entity that was just created only-on-the-server-but-null-on-the-client, then have it skip that logic, but do all the rest of the logic. A general return out of the method you are in is not usually the desired approach (but it does vary by situation).<br />
** The faction data will catch up on the client either way, and all of those changes you make to the entity after the null-return-point will be passed over to the client as well. However, if you don't handle the null-return-point, then players will get nullref exceptions in your mod only in multiplayer, which will be frustrating for everybody.<br />
** The one exception is CreateNew_DuringMapgen. You can just search and replace for that with CreateNew_ReturnNullIfMPClient unless you were using it wrong to begin with.<br />
** There may be entire methods now where you want to check if ArcenNetworkAuthority.DesiredStatus == DesiredMultiplayerStatus.Client and just return before it even thinks about making any entities. See things like ReactToPowerLevel() on the AI for examples.<br />
** TLDR: This is a minor pain in the rear right now, and looks a bit tedious to do. But this is far simpler and far less tedious than getting bug reports from MP players that you have to chase down for your mod in the future.<br />
*** If you wind up with questions, then @ chris on the Arcen discord channel.<br />
<br />
* Added a rather complex new ArcenDelayedDeserializationBurst class, which uses a really efficient way to store network message for future deserialization.<br />
** We normally reuse our deserialization buffers, so it's an extra delicate class. As long as nobody ever tries to use this in some new way beyond the way it is currently used, all will be well. The code is filled with dire warnings in the comments.<br />
** The capability that this adds is essentially for us to have slightly time-delayed execution of network data unpacking from the host to clients, if the host is a bit more than 1 sim frame ahead of the client.<br />
<br />
* The MayCreateEntities bool has been marked as obsolete, and is never set now, as all threads (even long-range planning ones) are now considered A-OK for immedidately creating entities as much as players want to.<br />
<br />
* SpawnEntity and SpawnEntityOrReturnNull have both been marked as obsolete (and will block modders from compiling against them), but will still for the moment keep working with existing compiled mods.<br />
** This is how we're going to try from now on to handle when we change the specifications of things that would break mods, where we can. It gives modders a chance to catch up.<br />
** In this case, it now wants you to use the new SpawnEntity_ReturnNullIfMPClient() method.<br />
** The same is true for the various CreateSquad methods, all of which now want you to use CreateNew_ReturnNullIfMPClient.<br />
<br />
* GlobalLastSquadIDSourcePrimaryKeyID no longer exists in savegames.<br />
<br />
* The ability to generate PKIDs for speed groups, fleets, squads, shots, and otherIDs are all now exclusively host abilities.<br />
** If a client tries to call these, it now returns -1 for the client and throws a visible error message on the client.<br />
** A bunch of cases where we were syncing these over to the clients are removed. We no longer care, for the most part.<br />
<br />
* The game now has a new "Fast Blast of Created Objects" that the host sends to clients.<br />
** In these cases, essentially when you go and try to create something that requires a PKID that would be consistent on the clients and the host, the clients just skip doing it, but the host does it and then sends it to the clients asap.<br />
** The host is usually a few hundred ms ahead of the client at minimum, and so if it's on a future frame number from them, then it tells them at which frame to unpack its new data.<br />
*** If the client is closer to the host in time, and the frame gets there late, it still just unpacks it and can sort out minor discrepancies later.<br />
** The idea here is that a LOT more things are just being done on the host, and skipped on the client, and the client is getting the information in small download packages that it inserts into its own sim at the appropriate time.<br />
*** There is some very slight divergence in sync caused by this, but it's pretty darn slight in most cases.<br />
*** The great news is that this uses less network data, and substantially less CPU power, on clients than having wrong IDs assigned does. This lets us just send the correct object once, rather than creating the wrong object, discovering it, requesting a fix, getting the correct object, and deleting the wrong object.<br />
** This is a fundamentally different approach to object creation, and in some ways this has a bit more in common with an MMO architecture, except things are faster and more responsive than your average MMO. But this is now blending a third general model of network code into our existing interesting stew of models. It pairs really well with the other bits.<br />
<br />
* On GameCommands, we now have the ability to specify how many entities of various sorts we plan on creating (or potentially creating), and then the host provides available IDs that will be consistent on the client and the host before the execution happens.<br />
** This is yet ANOTHER approach, but is one of those cases where we take the most efficient networking approach for any given type of data event. That is surprisingly optimal, it turns out.<br />
** The idea is that which networking model is superior is really contextual, so we look at the context and use the best one in any given circumstance. Any errors we make are already handled by the sync code (that's not new), but this cuts down on the number of errors.<br />
<br />
* Added a new "Log Decoded Network 'Fast Blast' Sync Data To Disk" setting to the network section, which does what it says on the tin.<br />
<br />
* The way that shots appear, and the way that shot sound effects are triggered, have both been updated in order to support the new way things function in multiplayer.<br />
** We were looking in particular for silent shots, or shots that did not show things like their AOE effects. Those are all working.<br />
<br />
=== Other Multiplayer Miscellany ===<br />
<br />
* Unrelated to the rest of this, the clients now send their GameCommands completely separately from their "finished a sim frame" messages.<br />
** This lets the client send the GameCommands in a more timely fashion, thus reducing command lag on the clients.<br />
<br />
* Fixed an issue that we don't think anyone hit, but where if you were playing one multiplayer game and moved to another one it could execute some commands from the prior game on a delay.<br />
<br />
* Fixed a wide array of minor glitches and annoyances that would give clients warnings or errors (visible or otherwise) in multiplayer.<br />
<br />
* A lot of classes serialize themselves more clearly, ranging from shots to wormholes to gamecommands and beyond.<br />
<br />
* In the event that the host sends over world data that errors, the client should now wind up back on the main menu.<br />
<br />
* Fixed a number of small serialization issues between multiplayer, including errors when new planets are created. The creation of new planets and their various links between one another are now verified to work properly between the client and host. Aka the Dark Zenith invasion in DLC2 (spoiler alert, though that doesn't tell you much).<br />
** We have NOT yet verified if nomad planets work properly in multiplayer now (displaying properly on clients to match the host), and would appreciate if someone checks that out once this build becomes public.<br />
<br />
== Version 2.638 Why Do We Fall, Master Wayne? ==<br />
(Released November 25th, 2020)<br />
<br />
* strength_multiplier_for_turrets has been 2 since we added this, but that seems to overestimate their power a bit.<br />
** We've adjusted this value to 1.55, per discussion on discord and a suggestion by TechSY730.<br />
<br />
* Added a new strength_multiplier_for_armed_guard_posts, which lets us adjust up the strength of guard posts to be more accurate if it seems to be undervalued.<br />
** We're starting this off at 1.25.<br />
** Thanks to TechSY730 for suggesting.<br />
<br />
* We also added a new strength_multiplier_for_non_combatants, which lets us adjust down the strength of anything that doesn't have any guns.<br />
** Sometimes things without guns still have a lot of health and shields, and that's really not something we want to consider as strongly since it can't hurt you directly.<br />
** This would affect forcefields, any sort of captured buildings, and things like unarmed transports.<br />
** We're starting this at 0.4.<br />
<br />
* A new balance_seconds_after_transport_change_before_can_switch_back has been added, with default value of 3, that prevents players from putting ships into and out of the same transport more frequently than within 3 seconds.<br />
** In multiplayer, we need a small bit of time to refill the list of pooled IDs for upcoming player transports. In reality that only takes a second or two to refill, but potentially less than a quarter second.<br />
** Originally we had thought to have this be an even larger window, like 30 seconds to prevent players from messing with the AI by popping in and out of transports, but there's already a 5 second no-firing time limit that covers that. And folks on discord made their feelings about that change pretty clear (it was not welcome).<br />
<br />
* Home forcefield generators can now be scrapped just like all other FF generators. From back in the pre-fleet days they were not scrappable because at the time you could never then rebuild them. Now you should be able to rebuild them, so you can also scrap them.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Updated AMU<br />
** Now uses all the new Icons for Metal, Energy, Hacking, Science and Strength<br />
** Removed the SimpleStringBuffer as it is now less efficient compared to the ArcenCharacterBuffer and ArcenDoubleCharacterBuffer<br />
** Gave the latter two 35 new functions, most of them adaptions from the SSB or shortcuts from formating inside the AMU Core<br />
** Thanks to NR SirLimbo for adding.<br />
<br />
* Updated Kaizers Marauders<br />
** Tooltips, based on the above logic, are now faster and produce less GC Churn<br />
** Also dynamically rounded the percentages in the outpost description to show up to, but not always 3 decimals<br />
** Removed an extra line inside the Player-Owned Kaizer full descriptions.<br />
** Thanks to NR SirLimbo for adding.<br />
<br />
* When a stack dies and is going to spawn something on death (such as hydra heads as one example), then the new things that are created come out pre-stacked in the same ratios as the original.<br />
** So for instance, if a stack of 3 is vaporized, then a stack of 3 heads is created. If each should create 2 heads on death, then 2 stacks of 3 heads are created.<br />
** This is a lot kinder to the CPU and performance in general during heavy death situations with hydras aand similar.<br />
<br />
* Before you can start hack, the game checks that you have enough hacking points. This check now also counts active hacks.<br />
** The goal is to make it harder for players to wind up with negative hacking points.<br />
*** Thanks to ultamashot and NRSirLimbo for reporting<br />
<br />
* A ship in an exogalactic strikeforce now shows "Exogalactic Strikeforce" instead of its faction name when hovered over<br />
** Previously it was really hard to tell if a unit was in an Exo or not.<br />
<br />
* Rework the way Exogalactic War Unit spawn locations are chosen to prevent the case where the AI was accumulating large numbers of Exogalactic War Units on its homeworld, if they were required to go after factions with other things in the way. <br />
** If the War Unit is against the player, the war unit spawns at the AI homeworld. <br />
** If it is against a non-player faction then if there's a safe path for the war unit to get to the target faction from the AI homeworld, it will spawn at the homeworld. <br />
** If not it tries to find any warp gate with a safe path to the target.<br />
** If it can't find a safe path at all then it will spawn directly on a suitable target. Minimally tested but seems to work<br />
** Only applies to newly spawned Exogalactic War Units<br />
*** Thanks to a number of people for pointing out that Exogalactic War Units could get stuck, most recently zharmad and ArnaudB<br />
<br />
* Since we are not actually using the SquadIDSources, it makes sense to provide older methods that the various code mods like Civilian Industries were looking for. StarKelp is not able to update that this week anyhow, so we made some changes to make sure that his stuff still is compatible with the new version of the game anyhow. So far as we can tell, Civilian Industries seems to work again.<br />
<br />
=== Bugfixes ===<br />
<br />
* Improved the error handling on incoming_damage_modifier to be more clear.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Fixed an exception where any damage modifiers that were hull only would throw an exception when you tried to apply them.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Fixed an unusual error that was possible to happen in ReinforceSpecificPlanet(). Not sure why this was happening, but there's a vague chance it may have been related to mods. At any rate, it's no longer possible to get the exception.<br />
** Thanks to Isiel for reporting.<br />
<br />
* Fixed an issue where cluster bombs would not spawn more bombs because they were not dying from enemy fire. Now the only reason that sub-bombs won't be created from things like this is from a unit intentionally being scrapped.<br />
** Thanks to Puffin for figuring out what this problem was, and to ArnaudB, Isiel, and Democracy for reporting.<br />
<br />
* Fixed an issue with the name generation for multi-owner factions so that it now properly says the names of the multiple owners. Previously, each party was incorrectly just seeing their own name as the owner. Of course, in these situations it's best of all to give your empire a specific name, but you don't have to.<br />
<br />
* Spire cities should now work if they are on planets owned by other Players<br />
** Reported by NeverZero<br />
<br />
=== Improvements To Error Handling ===<br />
<br />
* Put in a bunch of wrapper methods for various faction methods that are commonly used by mod factions. These wrapper methods let us gracefully catch exceptions from the mods and then disable that part of the modded faction so that the game can continue without you having an endless spiral of exceptions.<br />
** For instance, in this build of the game we have broken both Kaiser's Marauders, the AMU, and Civilian Industries. Rather than having those be absolutely unplayable savegames with infinitely logging errors, it now pops up some errors the first time, then shuts off the brains of those particular factions. So you'll see those factions stop working and just kind of sit around (or use whatever intelligence there is that is coming from the central NPC logic), but the savegame itself won't be a total loss.<br />
** It's still best to stop playing after you have exceptions like these, but it doesn't make you completely dead in the water.<br />
** We also implemented a neat new thing where we are able to detect even caught exceptions inside these methods, so if the mod author is doing their own error handling, we still find out about the error and shut off that faction.<br />
** It's worth noting that this applies to base game and expansion factions just as much as it does to mods, frankly. In general this is pretty handy for letting parts of the game essentially have a stroke and die without turning off the rest of the game or leading to endless errors that cause lag.<br />
<br />
* In the list of factions in the escape menu, if a faction has had any sort of fatal error, it now shows "FATAL ERROR IN FACTION" next to it, with animated red and orange colors going past.<br />
<br />
* Whenever you have an error message popup, it's only showing you the most recent error out of potentially a long series of errors. Now the game has a first line there that is "Errors since start," and that counts up as more errors are logged. It may count up while you're reading an exception, for that matter.<br />
** The idea is to make it so that people don't just see the last error and think that's it.<br />
<br />
* If you have had an exception happen in your game in the last 5-10 seconds, then it now shows the count of errors since the start in the chat sidebar. This way you can't miss the fact that errors have been happening recently, and if you're in the unfortunate situation of having ongoing errors every few seconds then you will see that counting up and be aware of it. Sometimes people would hit "ignore all" and not realize why their disk was still being slammed by errors, and the fact that things were probably not working quite right. Now it will be impossible to miss.<br />
<br />
* Similarly, if any factions that have partially shut down from having errors, it now has a count that just won't go away up in the chat area that says "Factions Shut Down From Fatal Errors: 3" or whatever the number is. This is not so obtrusive that you can't keep playing, but it's obtrusive enough that maybe you'll realize you should stop playing if you care about those factions doing anything.<br />
<br />
=== Failed Experiment: PKID Generation Revisions For MP Client Smoothness ===<br />
<br />
* An older approach that we were going to take with Primary keys, with a new PKID struct and a PKIDGenerator class, has been stripped out. It was going to be too unwieldly to implement, and would have made filesizes and network data a bit larger. We have come up with a better approach since coding that. It was never used, but the plan was to use that to keep multiplayer sync in better shape.<br />
<br />
* We only care about PKIDs for squads in terms of where things are diverging so much, so we've got a new SquadIDSource class.<br />
** The squad creation methods (in the codebase, "squads" are all ships and buildings and units) now mostly require a SquadIDSource to be passed in.<br />
** These sources keep some certain number of "for future use" PKIDs either for the faction or some other scope, and usually for some sort of sub-purpose on a faction.<br />
** These are serialized to disk and across the network, and every sim step have their pools replenished and synced over to other players from the host.<br />
** In the event that a source has run out of IDs to distribute, it has a fallback source which is usually the "failover" pool of IDs on the faction in question.<br />
*** This first level of failover means that it is more likely to not have collisions when trying to find something to fill in for a source that was too thinly populated at the time of being called. <br />
**** A single faction is more likely to mostly be synchronous relative to itself in terms of actions, so desyncs between clients are less likely.<br />
**** But additionally, even if it is a desync, it winds up limiting the scope of the cascade of desyncs to mostly be limited to that one faction rather than affecting many factions all at once.<br />
** In the event that the failover has ALSO run out of IDs to distribute, then it goes back to the main central ID generator that has always been used up until now. <br />
*** This is almost certainly going to cause a minor desync, or several minor ones, in multiplayer. However, these are going to be corrected by the same process that currently corrects multiplayer and makes it work as smoothly as it does.<br />
*** Right now, MP clients are seeing things like every new ship that is spawned getting duplicated and then recreated, or just shifting spots. This is annoying in terms of how constant it is, but overall even with it having a desync EVERY time something is created, it's not that in-your-face that you can't play just fine.<br />
*** So at any rate, there are multiple levels of prevention aimed at stopping this in the first place, but when it does happen it's not the end of the world and the game just recovers and keeps going like it has in all the MP versions prior to now.<br />
** The goal with all of this is to make things more smooth for clients, particularly when they are building ships from a factory or placing turrets and similar directly. And a secondary goal is to reduce some extra sync fix network traffic. But in the grand scheme, long-term sync is already assured by all the other characteristics of our multiplayer engine.<br />
<br />
* To support the new SquadIDSource class, there are a wide variety of sources that are placed throughout the codebase for various purposes.<br />
** As noted, all of the CreateSquad() and SpawnSquad() methods now require a SquadIDSource to be passed in, but if you don't then they will work out how best to get an ID to work around that lack.<br />
** However, for modders and faction coders, the way to update your code is relatively straightforward.<br />
*** If you are doing something in the "long range planning" that creates a squad directly, just know that you're already immediately creating a desync, since that only runs on the host.<br />
**** The game will recover from this automatically, but it will be wrong on the client with these new units you just created for 1-5 seconds, and may be wrong with some other units created around the same time. So ideally don't do that.<br />
*** If you are creating squads directly in the "stage 2 or 3" methods, then you will now want to almost always use CreateNew_ForFactionBackgroundGeneration().<br />
**** That method gets its own SquadIDSource inside itself, and there are loads of queued IDs in that source, so your risk of causing any desyncs at all with this is remarkably low. And if any do happen, it's probably not going to bleed over to something the player notices very easily.<br />
**** There is also a version on faction that is SpawnNewUnit_ForFactionBackgroundGeneration() that takes the place of what was SpawnNewUnit() before.<br />
*** If you are creating squads during part of mapgen, such as initial seeding logic for instance, then you should use the CreateNew_DuringMapgen() method.<br />
**** This method entirely bypasses the SquadIDSource class, and just generates IDs directly. Mapgen only happens on the host, prior to syncing to everyone else, so there's no need for those sort of ID queues there.<br />
**** If you mess up and have a method that uses CreateNew_DuringMapgen() both during mapgen and after mapgen, then you've probably introduced a minor desync with whatever is created, but again it's something the game will auto-correct within 1-5 seconds. The good news is that it should not really affect any other units than the ones you used this way.<br />
**** Conversely, if you mess up and use CreateNew_ForFactionBackgroundGeneration() or similar during mapgen, then it will just do things as normal with not even any slight ill effects.<br />
<br />
* In single player and multiplayer, you can now see the ID stores and the statistics about the ID usage in the memory pooling section of the escape menu.<br />
** All savegames are a bit bigger now, maybe about 100kb or so. It's a fairly small addition in general, but in one example save we have an extra 65 thousand IDs pre-generated for use in specific scenarios. We can see even in a single-player game if it's ever hitting the central stores, etc.<br />
** You might wonder why we are also using this in single-player, but in general this does not cause a performance hit, and we have always tended to do everything the same between single and multiplayer even if that's not strictly required, so that we could maintain as few differences and as consistent of performance as possible.<br />
<br />
* The PKID Sources are now fully synced over the network in multiplayer, and they are centrally stored for reuse and assignment within savegame and across the network.<br />
<br />
==== The Actual Result, With Intriguing Data ====<br />
<br />
* For now, after all the immense amount of work to get SquadIDSources working (and the two days after it to figure out the one-line networking error --which wound up having us greatly expand a bunch of debugging tools for multiplayer in general at least), we're currently choosing not to bother filling the SquadIDSource objects at all.<br />
** With this in place, they wind up adding an incredibly minor amount of overhead, but no actual functionality.<br />
** The fundamental premise of these is to try to reduce collisions of PKIDs between the clients and the host by having them queued up and ready to go, but that... really doesn't seem to happen. There are too many things in motion constantly, perhaps? It's honestly kind of hard to say exactly why this doesn't work, at the moment.<br />
*** The most obvious answer is that the timing is too tight, but the Sources being filled with a certain number of values in advance really should be working around that. So that would seem to indicate that maybe there's some secondary problem, like the order of the queues getting messed up during sync, or something like that.<br />
*** A more subtle answer, which is probably the correct one, is that we have two different timescales of network communications. On the one hand, we have the network sync info, which gets applied immediately. On the other, we have GameCommands, which get applied 100-200ms later. It's seeming likely that the sync of the queues is removing key entries from the client before the client can actually make use of them, since the client may be on a 100ish ms lag from the host. This could be solved in a variety of ways, but would need more testing.<br />
*** However, seeing these in practice, the savegame sizes go up dramatically, and there is a notable slowdown in performance on the clients, which we didn't really expect. Part of it just has to do with how many factions can be in the game, particularly factions that are minor-use or only have a few units in them (tamed macrophage, etc, which may not even be active). This whole thing adds a definite per-faction extra cost in terms of data usage, and running out predictions for a long games is fine... but doesn't really feel great. What's notable is that turning this off feels like a breath of fresh air in terms of performance immediately after, so that says something right there about how advisable this is. Is this worth fixing?<br />
*** Deciding if this is worth fixing or not is not something we want to decide late at night after three very frustrating days of staring at this and related problems, so for now we're just leaving it empty and pushing out this release so that folks can have the many many other fixes that we put in this build. This build has been delayed long enough by this blasted feature.<br />
*** If this particular approach for PKIDs isn't used, then what do we do? Well, there are a variety of options.<br />
**** On the one hand, we could do nothing. The sync code already corrects divergences, and is doing so with a minimum of bandwidth and no extra savegame file size, etc. However, it does cause minor jitter on new ships on the clients, which we don't like. So that' not our first choice. It seems like a lot of people don't notice this much, but at the very least for directly-placed human ships we can do better.<br />
**** So, on that note, we can adjust the way that units are created. Right now, there are many places where the simulation creates a unit, and it tries to do that in lockstep on the clients and the host. This... may simply be not the way to go. We've contemplated this before, for a long time in fact. It may be a lot more tenable to make it so that the "create unit" code actually only runs on the host, and then that data gets synced over to the clients asap.<br />
***** Originally this was something we had discarded because it would require a huge refactoring of all of the code for all of the external factions and mods. Not just a search-and-replace sort of change, but a really deep dive shift in the creation of all units. That is highly undesirable for many reasons. One of the reasons is that it would negatively affect the feel of the game on the host, and in single-player, because in theory we would be creating new units via GameCommand, which is something that happens on a delay.<br />
***** The thing is, creating units only on the host doesn't mean it has to happen in a GameCommand. Actually one of the things that this entire code branch with the sources has demonstrated is how VERY fast we are able to get information over to the client. Normally we want to have new things get created and sent to clients via GameCommands in an orderly fashion as part of the main sim loop... but the thing is, the sync code is really freaking good. In almost all cases, if the ships actually appear 100-200ms early on clients, that matters... why? In reality, it doesn't seem like it matters much at all. If that causes a minor desync, it's still far more minor than the desync that we're getting right now with units having wildly wrong PKIDS. Likely their position or other stats would be slightly off on the client, and that is REALLY trivial to fix within seconds, and happens automatically already.<br />
***** Overall, even though the PKID Sources approach was a complete dead end (probably) in a direct sense, this does provide some ways that we could theoretically reduce sync errors when it comes to even things like shots, which we've been concerned about for a while with IncomingShots being off since we don't consider shots worthy of sync (they last too short a time). But if we used the back channel data to generate shots only on the host, and had those synced to the client only once, on creation, that might be very interesting indeed. One of the possibilities with shots and even units is that we add a new SimFrameStartedExisting or something to that effect, and if that's in the future then the client just keeps them as invisible and not part of the client sim just yet. That would allow the host to give early "hints" to clients, who then have data ready to go as soon as the appropriate sim frame rolls around. Heck -- the clients don't even have to have fancy new logic for holding those units in abeyance. They could simply keep the data in its packed form until the appropriate frame. This would be very lightweight.<br />
***** Ironically, this even paints some ways in which the "only create ships from gamecommands" approach of the "long term planning" code that is host-only is something that we might need to do away with. That would make things a bit simpler on modders if we go that way, and it would even allow us to in theory shift some of the per-faction processing onto non-sim-blocking threads. The only reason that those need to be sim-blocking right now is in order to maintain sync in multiplayer. But the thing is, we never expected for the general baseline sync to be this good... or for there to be such an effective faster-than-sim backchannel for the host to shuffle data over to the client. Despite this being our third coded multiplayer model over the span of 7ish released multiplayer games, this one really takes the cake for being the most advanced, and it has revealed some interesting new avenues to consider.<br />
** So the bottom line is, at first this really felt like a huge waste of time, on top of being a monumental disappointment. After taking a break for an hour or so and putting my kids to bed and thinking about it some more... this is actually pretty interesting data, and suggests that we may be able to be even more "fast and loose" with things than I ever expected, and thus really take the potential worry away from modders and faction designers, lower the network load, keep the savegame sizes small, and still improve sync. Having the host be fully authoritative over PKIDs was not something that seemed like it would be possible without introducing input lag on both the client and the host... but we already have the most minute (100-200ms) of timing lags between the client and the host, so that actually opens up a ton of options.<br />
*** Crazy sidebar? One of the things that particularly bugs me about playing multiplayer right now, as the client, is the input lag. There's a lot of strictness that we have going on with trying to keep the client close to the host in timing, and making sure that GameCommands are executed at just the correct timestamps in the correct order, etc. But what if... we didn't care? Why not let the client instantly ask the host for things, and the host instantly execute them, and tell the client to also do the same? Sure it would introduce some new timing inconsistencies, but... so what? <br />
*** Also crazy, still sidebar? This is even a way to potentially get around dropped packets and other situations with high latency or high ping. Let the host just get ahead, who cares, have the client blunder on without permission and catch up with what the host wants in a few hundred ms after the network blockage has cleared. This pulls the game further and further away from even pretending to be a lockstep multiplayer model, but to be frank, the performance that we're seeing, that we're able to get, is what makes that a feasible thing.<br />
*** Want to stay in crazy sidebars? Things like FInt, our fixed-integer math struct and its related code, could largely be removed from the frequent sim calculations. There are some MUCH faster floating-point math functions, several of which use SIMD, that we use right now only for non-sim purposes. But it's already clear that the amount of drift we see in a few seconds is next to nil, and we're syncing things so frequently that any real drift that mattered would be correct within seconds, and typically would be smoothed out by the very awesome lerping that the vis layer does to keep things smooth in general.<br />
** So... yeah. This experiment was a huge disaster, on the surface. On the other hand, it took me through every piece of the code that creates units at the moment, and gave me an enormous amount of data on how some of the data is able to be passed around faster than game commands. I will need to weigh my options carefully, and probably focus on gradual improvements over time since the baseline is already pretty good right now. But making things more host-driven ought to be one easy quick improvement for sometime very soon.<br />
<br />
=== More Multiplayer Technical Work ===<br />
<br />
* Removed some debug lines on the network clients about wrong key syncs (which always showed as zero because we wound up never deciding to check for that).<br />
** The adaptive system for sync that has continued to evolve out of seeing real data basically made that irrelevant.<br />
<br />
* The new sync of the PKID sources is now split out into its own separate sync cycle (for time slicing purposes mainly), separate from the faction sync.<br />
** Also separated out the "external data" of factions rather than having that be in the "Faction basics" sync.<br />
<br />
* The "Show Network Sync Details In Escape Menu" option in networking has been moved to the top of the other networking features, as it is the most helpful one by far.<br />
** It has also been given the prefix "Helpful: ".<br />
<br />
* Added another new setting to the network section, as well: Log Decoded Network Faction Basics Sync Data To Disk<br />
** Description: Same as the 'Log All Decoded Network Sync Data To Disk' setting, but only writes data for the faction basics that are periodically synced. If something gets awry with that data, this is a way to figure out why there's a discrepancy.<br />
<br />
* Multiplayer sync messages are now numbered by the host, and the clients read the number out when they get the message. This way, if a host sends out a sync message prior to a client joining, or a client misses a message or whatever else happens, the logs will still match up on both ends and are something we can compare.<br />
** We were running into the baffling situation where the logs did not match in ways that should be impossible, but this was because the clients and host were being allowed to number their own messages independently.<br />
<br />
* ArcenExternalData-RowIndexNonSim is no longer logged in general, because it is specifically something that is non-sim and thus will be different on the clients and the host. The matching isn't done based on it, so it's not a part of sync that matters.<br />
<br />
* We slightly reduced the maximum fragment size that we're willing to send, from 512kb to 500kb, still minus 100 bytes in both cases.<br />
** We had one report of a user on Steam getting an exception when trying to connect with the prior limit and the new limit does not make much practical difference to anyone else.<br />
** Specifically it complained about 524,199 bytes, when 512kb is actually 524,288 bytes; with the new limit of 500kb, that is coincidentally 512,000 bytes, which is potentially the actual accidental number of casual-math bytes that Valve actually is limiting to. We thought we remembered seeing in their code that it was 512 * 1024 that they defined their limiter as, but nonetheless that was only in a header file and so the internals might be defined differently.<br />
** Thanks to NRSirLimbo and CRZgatecrusher for reporting.<br />
<br />
* Fragmented error messages now give more informative error messages when something is off.<br />
** It's now vastly more common for savegames to be over the limit, since we now have all the pre-caching of PKIDs. One small 275kb savegame changes to 527kb in the new version.<br />
** Good thing we spent so much time on data efficiency earlier this year, because we really require an abundance of extra data to make sure PKIDs come out nicely between the client and the host.<br />
<br />
* Completely re-wrote our custom packet fragmentation-and-reassembly code. It's more efficient on the client now in general, and works properly.<br />
** We've tested this with a maximum allowance of 50kb so that it fragments a variety of messages rather than just the initial savegame. It was all working well, now, so we've gone back to 500kb.<br />
** It turns out that, previously, we had an accidental game of Russian Roulette going. Depending on what bit the last of the fragment header ended on in its final byte, it might automatically advance to the next byte on its own. That gave it a 1 in 8 chance of dying on a fragment by skipping one random byte of data. That's no longer possible, but took us forever to track down.<br />
<br />
* ArcenSerializationTester, which was used as a single static-style class, has been removed.<br />
** Because of its static-class nature, it was not threadsafe, and we could not guarantee that we were not having mixed serializations or deserializations in one batch.<br />
** As part of this, we have replaced it with a new ArcenSerializationLogger class, which lives on actual serialization and deserialization buffers and thus can't be confused across threads.<br />
*** As part of THAT, we are also now making it always write directly to disk, rather than buffering in memory sometimes. So the settings option "Write Savegame Serialization Logs In Realtime" has been removed, as it is now always true.<br />
** It is worth noting that this method of logging is somewhat less performant, and definitely wastes some RAM, but that's not of relevance to our purposes. If you have this logging turned on, you're already in a debug mode that is going to have performance that suffers by its very nature. What we prize most in that situation is accuracy.<br />
** This removes any doubt of any logs getting scrambled by simultaneous writes, or by overlapping requests to log, or things of that nature.<br />
*** As a side effect, if you enable several kinds of overlapping debugging at once, it is possible to get an exception now, but that's better than before where it would just scramble your log happily.<br />
<br />
* Added a new setting to the network section: Log All Decoded Network Data To Disk<br />
** Will massively slow the game down, but dumps ALL messages as they are encored or decoded to the disk in files inside the PlayerData/NetworkSentDecodedData and PlayerData/NetworkReceivedDecodedData folders. This covers absolutely all data, and includes message headers that other forms of decoded-data logging do not. With this logging enabled on both the client and host, you can compare the output and see what serialization problems are happening, if there are any.<br />
** This is a last resort sort of debug option! Since ALL data is being actively decoded as it is written, it is far larger (and in plain text) than the actual data being sent across the network. A typical ratio might be 40MB of decoded data for 500kb of actual network traffic. You can have a few GB of data on your disk after just part of a minute of letting the game run in this fashion.<br />
** Warning: do not use with 'Log All Decoded Network Sync Data To Disk' or any of its sub-options also turned on, or you'll get errors.<br />
<br />
* The game now sends a unique 64bit messageID with every message from the sender, in sequential order of send, so that the sender and receiver are able to compare notes.<br />
** Full support for understanding the serialization of message headers is also now in place.<br />
<br />
* The game is now able to do some temporary buffering of serialization data to write to disk, prior to knowing what the name of the file should be, and then come in later after it has done a bit of deserialization and knows what to name its new message.<br />
<br />
* These new abilities combine to give some really rock-solid and overkill-style logging abilities that let us find bugs that otherwise escape us in the networking code.<br />
<br />
* After about two days of wanting to tear his eyeballs out trying to find an incomprehensible error, Chris found the single-line typo that he was missing.<br />
** The PKID syncs work fine on clients now when it comes to things like building structures directly, but for most other purposes there are just as many catastrophic mismatches as ever. Sigh. This is going to take some doing.<br />
<br />
== Version 2.637 Threatfleet Conversion, Chat, And Clickable Planets ==<br />
(Released November 21st, 2020)<br />
<br />
* The game now tracks a new BecameThreatfleetAtGameSecond on each entity. When it is detected than an AI Sentinels ship is in Threat status (meaning it would show up as Threatfleet), it now logs the current game second so that it remembers how long it has been threat.<br />
<br />
* Added a new seconds_threat_exists_as_threat_before_joining_hunter_fleet on AI difficulty, which is currently set to 2x seconds_threat_waits_before_joining_hunter_fleet for all AI difficulties.<br />
** This sets a new and absolute timer on how long threat can be threatfleet for the AI Sentinels before getting transfer orders to the Hunter Fleet.<br />
** Previously, based on the other timer, if the AI Sentinels threatfleet is engaged in whatever activities, even if that activity is indecision, then it would never switch to the hunter side.<br />
** This makes it impossible for ultra-long-term threatfleet to remain in the galaxy, unless it is pointed at a non-human faction, or it is of a specific type that can't convert (usurper, overlord phase 2, drones, etc).<br />
** Overall in some edge case savegames, this makes it so that suddenly a bunch of idle threatfleet that was too stupid to figure out your particular empire now gets converted to the far-smarter hunter faction and joins teams dismantling you.<br />
** Thanks to TechSY730, Metrekec, ArnaudB, and Crabby for reporting.<br />
<br />
* Previously, it was up to the host and the clients individually to tell when the game was won or lost.<br />
** Sometimes there is a tiny bit of a disconnect between an event happening on the client and the host, however, and the client has a part of a second where it might think that you've won. We're being vague here to avoid spoilers, but it's a pretty common result that would happen at the end of each game.<br />
** At any rate, now the multiplayer host is exclusively in charge of saying when the game has been won or lost, since it never has any missing data even for a part of a second.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Made a number of changes to the in-game chat textbox to prevent it from capturing your input even after it was closed, thus leading to mysterious sends of extra keys as well as your keybindings in general not working while the capture was in place.<br />
** Thanks to StarKelp, Puffin, Democracy, and Badger for reporting.<br />
<br />
* Also wound up re-plumbing the entire textbox input pipeline, because there were a number of cases of strange and annoying lag that could happen with them. So far all the ones we've tested are working great now and are more responsive. But please do let us know if there's any that are funky for you.<br />
** This could in some cases lead to race-condition-like behaviors, and repeat sends of messages.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Fixed issues where pressing the escape key while in a chat textbox would send the chat rather than erasing it. This is because of our use of OnEnterOrReturnPressed(), which apparently also fires on escape being pressed. So now we have left notes in the code to that effect, and use a different method of detecting that enter is pressed to send chats.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Should finally have fixed the super annoying bug where sometimes a planet on the galaxy map is un-clickable. We did this by making sure that the collider box for the planets is now way taller than anything else, and so things like the links between planets can't accidentally override them.<br />
** On the off chance that somehow the collider was actually being turned off for the planet icon, we actually are now always making sure that is on every frame, too.<br />
** If you were seeing some sort of other tooltip for something but unable to click the planet, and you see the problem again, please let us know what the tooltip is for. If you were seeing no tooltip at all, then that was probably the collider being disabled in some fashion. We do turn off the colliders for icons that are supposed to be off, but that should never affect planets. If it was affecting a planet icon previously, that should no longer affect a planet icon.<br />
** Thanks to Badger, TechSY730, GreatYng, CRCGamer, RedPine, denko, crawlers, Isiel, Cyborg, Asteroid, Kizor, Strategic Sage, and probably others for reporting.<br />
<br />
== Version 2.636 Text Hotfixes ==<br />
(Released November 21st, 2020)<br />
<br />
* Shots now visually scale up at 6x the rate they previously did when you are zooming way out from a battle. This should keep them visible in farther-off battles, while not being so large when closer in.<br />
** They also now only start scaling up after a distance from the camera of 150, rather than 50, and their scale factor subtracts off the original 150 so that there is not a sudden jump in size when you cross that distance threshold.<br />
** Thanks to Badger for suggesting that these be scaled up better.<br />
<br />
* Fixed a bug in the prior build with how integers and chars were being written using the revised ArcenDoubleCharacterBuffer. It essentially either made numbers stay stale, or be outright invisible, in a wide variety of situations. Other times they looked just fine, but it was dependent on exactly how the calling code worked. From what we can tell, all instances of this are now fixed.<br />
** Thanks to Wuffell, ArnaudB, Daniexpert, TechSY730, Smaug, and Crabby for reporting.<br />
<br />
* Fixed one other issue with the revised ArcenDoubleCharacterBuffer, where if the next string from the buffer was SUPPOSED to be blank, it would just return its most recent string instead. So messages that were popping up various places but then should disappear when no longer relevant could not do so. They could be replaced by a different message, but could not actually just fade to nothing.<br />
** Thanks to Wuffell, ArnaudB, Daniexpert, TechSY730, Smaug, and Crabby for reporting.<br />
<br />
* If an exception happens in FromServerToClient_PeriodicPlanetFactionSyncDataThatJustOverrides, we should now get far more useful error messages now.<br />
** In this method and in a variety of other network sync methods, it now also checks to see if the galaxy is null, and returns early if that is true. This basically prevents errors from stray network syncs that are trying to be processed after the game is being disconnected.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
== Version 2.635 AOE Visibility ==<br />
(Released November 20th, 2020)<br />
<br />
* Some improvements for frigate roll colouring in games created on this patch<br />
** Thanks to Daniexpert for suggesting<br />
<br />
* Fix a bug where Discoverable factions weren't appearing in the Edit Factions screen<br />
<br />
* Some minor UI improvements to the Active Metal Flows screen and the Brownout Notification<br />
<br />
* The descriptions for the AI Reserves unique units now mention they are used to combat player Deepstrikes<br />
<br />
* Fixed a couple of exceptions that could happen if you were viewing the tooltip for an ship or structure right as you exited the game. There were probably a few other cases that could also cause this.<br />
** Thanks to Corpserule for reporting.<br />
<br />
* Majorly reworked how the "time do die now" code paths work for ships and units in general, so that we can more accurately tell them when they should explode or when they should not explode.<br />
** This solves the problems of ships exploding when they are removing one to add itself to a stack, as well as the problem of ships on MP clients exploding as they move to their proper position after a sync error (if the PKID itself was off).<br />
** It is likely that there may be some bugs resulting from this, but fingers crossed nothing too severe after we fix the initial raft of those issues.<br />
<br />
* The settings for screen edge panning have been moved higher in their respective camera controls sections, and have been renamed slightly to make it clear that it's only for the single camera type, not both cameras.<br />
<br />
* Fixed an issue (that was probably not new) where when you had the camera low enough that gimbal icons for ships were not showing, those gimbal icons would still show their explosion animation when the ships under them died. Now you just properly see the explosion animation of the ship itself.<br />
<br />
* Fixed some minor bugs that may or may not have been present previously with srapping units not always showing them exploding as they do.<br />
<br />
* The game will now complain if it can't find various materials and such that are used for things like under construction status, etc. At the moment, nothing complains.<br />
<br />
* Fixed a very small parser error that was causing AOE effects to not show up at all, ever. This was introduced a bit ago when we improved the xml parser for modders.<br />
<br />
* When Autobombs blow up, they now have a flak-style effect that appears around them.<br />
** Same for all of the minefields.<br />
<br />
* Added a new xml flag, is_okay_with_null_aoe_effect_for_aoe_attack, which is used for the ExplosiveInvisible shot type, aka for Crusher turrets and weapons.<br />
** These are meant to be invisible AOE damage that crushes stuff near them, and so we don't want the (new) "usual" error of "hey there's a missing AOE visual effect when you are doing an AOE attack" to happen.<br />
** Actually, we wound up suppressing the error, because more things were hitting it than expected and it's not worth it.<br />
<br />
* The flak effects now appear again properly, we can now verify. This being with grenade launchers most notably. They're on the small side, but that's somewhat by design so they are not overwhelming the battlefield.<br />
** The tesla effects are also back, but again more thin and more reasonably sized. We may need to look into scale on these some in the future at some point.<br />
** For the flak effects, they do seem to be strangely crunched down on themselves compared to what we were seeing in our videos, but we'll have to investigate that at some point in the future.<br />
** Thanks to TechSY730, Badger, Isiel, Puffin, and Corpserule for reporting.<br />
<br />
* Fixed a variety of sync exceptions for multiplayer that would cause duplication of various things on ships:<br />
** The ships granted if they are hackable, etc.<br />
** The amount of damage dealt to ships of various death-types.<br />
** Various data relating to AI reinforcement points (guard posts, etc). This was not endlessly duplicating, but was causing some funkiness.<br />
** The incoming shots.<br />
** Various things with forcefields protecting a ship.<br />
** Various bits with where an AI ship thinks it is guarding something.<br />
** Any techs that were granted by hacking a ship.<br />
** This should handle all of the cases that people have reported, plus some things that were not visible to people directly. Please do let us know if you see more of this!<br />
** Thanks to Puffin, Arides, Daniexpert, jrad, SilverLight, and others for reporting.<br />
<br />
=== More Performance Improvements ===<br />
<br />
* A new version of our internal ArcenCharacterBuffer has been added, which now wrappers a StringBuilder and uses many of the benefits that has been added to that class over the years. The performance of adds and updates should be a couple of orders of magnitude better than what we've had up until now, making large interface elements more responsive.<br />
** Though in fairness, we don't use too many ArcenCharacterBuffers, it's mostly another class which will also be updated.<br />
** Thanks to NR SirLimbo for benchmarking all this and figuring out where there were some major slowdowns with this.<br />
<br />
* A much more substantial performance boost has been achieved by replacing ArcenDoubleCharacterBuffer's internals with a new approach that uses a mix of StringBuilder and our own form of logging of "WrittenValues."<br />
** This makes really long text displays that are continually updated much faster (before they would take you down by 10-20 fps on a fast machine just for viewing them), and that includes really large tooltips.<br />
** This also seems to make the game load a bit faster, and also in general makes the UI generate faster all over the place. It seems to be around an 8-10 fps bump on a very fast dev machine. Slower CPUs should get more benefit.<br />
** On the escape menu, under the memory pooling section, there is now a "Texts saved" versus "texts new." In under 1 minute of just sitting there and moving around a bit, we wind up with values of around 500 new, and 500,000 saved. That's.. substantial.<br />
** Based on testing by NR SirLimbo, all use cases of this are faster, but in general the average improvement in speed is using 98% less processing power to draw text than we used to (and the processing power was nontrivial). The load time of the game itself has also improved by at least 2 seconds for most of the faster machines, and maybe more for slower ones.<br />
** Thanks to NR SirLimbo for sparking this line of inquiry.<br />
<br />
=== Visual Improvements ===<br />
<br />
* On February 4th, 2020, we had an accidental regression that caused the "ship placement" material, and the under-construction and under-construction-stalled materials to all lose their shaders and some of their textures. So when we tried to draw units with these visual effects on them in the game, they would just be invisible (icon aside).<br />
** This was during a larger purge of some unused shaders and textures, and had this as an unfortunate casualty. We've now restored those items, and things from those areas should "just work" again in the next version.<br />
** Thanks to a lot of folks for pointing out that this had gone missing, including RabidSanity and Mckloshiv.<br />
<br />
* Arcen "Death Chain Effects" have long been used for things like flak hits and tesla attacks. However, they were entirely scripted and robotic, before. The only difference between one playback and the next was the rotation of the entire effect.<br />
** We've now added a tremendous amount of randomization in how these play out, including to the position and scale of their sub-components, how fast they move through their animation per explosive, and things of that nature.<br />
** The end result is that we're now able to make a single death chain effect look a bit different every time it plays, for almost no extra processing power, and so the entire battlefield will look way more alive and unique when these things are happening in large numbers.<br />
<br />
* The shader that we use for our "death effects" for AOE damage, most notably flak explosions and lightning explosions, has been rewritten to use a custom lighting path rather than using surface lighting.<br />
** When we redid our lighting pipeline earlier this year, it unintentionally made all of our death effects of this sort look TERRIBLE. <br />
*** Essentially, they were showing up for a bit before visually appearing, in kind of a ghostly form, and they were also then showing up a lot more white than they should have been. This was them interacting with the HDRI reflection cubemaps that are now in the scene.<br />
** The new version of the shader looks better than the old one ever did even pre-lighting-update, and no longer has any of the above issues.<br />
<br />
* The flak explosions have been completely reworked to the point that they are almost unrecognizable. <br />
** All we've done is adjust the shaders and the randomization of the chain effect, but this went from an effect that made us cringe to one that we'd love to see in massive quantiles taking out our foes.<br />
<br />
* Plasma AOE explosions are far simpler than the flak explosions, since they only have one main body of the explosion, but that's no reason for them not to look cool.<br />
** We've introduced some new variance into this effect, and in general made it look better, so that now it has a distinct "rush and pop and slowly fade into wisps" feel to it. With the speed and details being randomized, this definitely brings it to the next level.<br />
<br />
* The tesla AOE effects, both the "guardian" level and the "regular" ones, both look vastly better now and way more like lightning.<br />
** We made a video showing off all the new effects in the editor! https://www.youtube.com/watch?v=mhJjPabV3gM<br />
<br />
* A new "Victory" fire text has been created, for purposes of being used like the "you have lost" text that can happen when you lose.<br />
<br />
* When you lose the game, it once again shows the "You have lost, humanity has perished" message in big burning letters.<br />
** That lasts for 7 seconds, and then immediately after that you go to the loss screen. This makes it so that the transition to the loss screen is not so abrupt. Plus people liked the text.<br />
<br />
* When you win the game, it now says "VICTORY" in giant fiery letters, rather like the "You have lost" for when you lose.<br />
** This one waits only 4 seconds, and then transitions to the normal victory screen. This again makes the transition a bit less abrupt.<br />
<br />
== Version 2.634 Multiplayer Solidification ==<br />
(Released November 18th, 2020)<br />
<br />
* A new planet naming scheme, Oddball, has been added to the game:<br />
** Aims to give a sense of history. One heavy with warfare and bored scout captains. Created by Kizor. Thanks to Loweko, R. Jean Mathieu, Vornicus, McMartin, Reiver, Quasispace, Derakon, Kyoshyu, and the anonymous.<br />
<br />
* Several updates to journal entries for extra lore details.<br />
** Thanks to Puffin for writing these!<br />
<br />
* The sabotage hack, when there are multiple viable targets on one planet, now includes the text:<br />
** Whichever of these is closest to the hacking unit will be the one hacked, so park your hacker right near the target you intend.<br />
** Thanks to Daniexpert for suggesting.<br />
<br />
=== MP Performance Boost ===<br />
<br />
* Previously we had a rate limiter in place for only checking if background work threads were done if it had been at least 50ms of time since the last check. This is not a super expensive check in the grand scheme, and we'd rather react to these being done as fast as possible in order to avoid small timing discrepancies causing larger delays in sim cycles kicking off or moving to the next frame. So for now we've just entirely taken the limiter off, which should have only positive effects from what we can tell. The limiter was originally put in place out of an abundance of caution, when we were not sure how slow it was to call ThreadState on threads.<br />
** Update: apparently this actually majorly cuts down on multiplayer lag and small jitters. This tiny bits of timing really add up when you have to wait on the other computers in particular. What a lucky find! This would have taken us ages to figure out if we'd actually been looking for it, but instead we found it while fixing the flickery dropdowns.<br />
<br />
=== Bugfixes ===<br />
<br />
* When a client is getting sync correction data from a host about entities, there were several cases where it could detect some invalid data, and it would then throw a visible error... but it would also just keep trying to process this now-known-bad data, and thus run into further problems.<br />
** Now it actually stops processing all of the sync fix data from that batch, and logs warnings into the log silently. This way we can go back and find them if need be, and certainly if your log is filling up with these that would be bad. But these will not affect the running of the game (just how rapidly sync correction happens for this specific batch of units), so they are starting their lines with "Not fatal - just a warning" to be extra clear on that.<br />
** There were various errors that would show up after these, previously, that were simply a matter of "hey, bad data was sent, but we tried to parse it anyway, and of course that went about as well as you could expect."<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* On the host in multiplayer, it now does a last-minute check to see if it's about to send the sort of mangled data for a ship that would cause the client to have to do the sort of toss-out of the entire batch that the clients were doing in the most recent fix. If it finds that it is, then it should now just skip that unit and leave it for a future sync pass.<br />
** At this stage, we can assume that maybe the unit JUST died on the host, and so within 2-4 seconds the client and the host should get synced up properly regarding it. But in an abundance of caution, there's always the chance that actually this unit is still alive, but just was changing planets or something, so let's not tell the client to delete it just yet.<br />
** This sort of scenario should be an edge case, but the idea here is that we make it less likely than the client would have to throw out an entire batch of divergence data, and instead just the one problematic ship will get re-evaluated next cycle and we don't even need any bad log messages about it, etc.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Fixed a minor bug in the macrophage, which nobody has ever even hit, where if the king was not found it could wind up having some pathing errors unless you had debug flags on.<br />
<br />
* Fixed a really rare bug with the Zenith Trader where, two seconds into the game, it was theoretically possible for multiplayer clients to get a nullref exception when the trader was trying to spawn. No one actually hit this yet.<br />
<br />
* In multiplayer, on the client, if findHumanKing() cannot find a result, it no longer throws any form of error (they were silent errors in the log, before).<br />
** Essentially, sync data must be slightly off, and that is fine and something that we should just ignore. The host will take care of giving proper orders to ships, and the client will find out about that soon enough and have all its data corrected anyhow.<br />
** Same logic on findAIKing().<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Some of the data for how things that use internal build points (for things like viral shredders in particular) was being set up on the fleet memberships, and cached there as well.<br />
** Now it sets it up once only, at game start, in ComputeBalanceStats_OneTimeOnly(). This is more efficient, and also gives us errors on load if our xml is wrong, and also fixes a compatibility problem.<br />
*** There was previously a bug in multiplayer where viral shredders would lead to endless exceptions on the client because it was missing the extra cached data on the fleetmem, ouch.<br />
** As an additional bonus, we are no longer storing this data on fleet memberships in general, which means we no longer have to serialize and deserialize that.<br />
*** The fact that we WERE serializing it was making the question of the exceptions in multiplayer even more confusing, but at any rate now some sync data and all savegames will be a tiny bit smaller.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* MP clients in general will no longer throw any exceptions related to things with internal build points on their fleetmems. If something is off, it will just let the host take care of that and inform them within a few seconds.<br />
** However, the error will still happen on the host if something is messed up, but it will be more informative and not block the rest of the execution of this fleetmem per-second cycle.<br />
** And based on the fix above, this should now just work properly in general on clients, but we prefer an abundance of caution.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Previously, in multiplayer if there was a reroll hack that was done, it would give a different result on the client and the host.<br />
** That has been corrected by making it so that on the host it now calls FlagAsNeedingForcedFullSyncToClientsJustInCaseIfInMultiplayerAndWeAreHost() on completion of the hack, which is the general standard that we should be aiming for with this sort of information in the future.<br />
** This applies to the ARS, FRS, TV, and GCA.<br />
** There is a slightly-more-automated fix for this that doesn't require individual mod-author (or faction-designer or unit-designer) input, but this is still a good idea to do.<br />
** Thanks to a variety of folks for reporting this, including Arides, Daniexpert, and others.<br />
<br />
* Apparently it is possible to get an exception when hovering over a tech tooltip in multiplayer. This has not yet been fixed, but now when it happens it will be sure not to be destructive to the rest of the game, and it will give a far more detailed error message. Right now we really have no idea what the actual error is, but this will at least contain it and let us fix it after we have a new report in the next release.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* TextEmbededSprites now have a few new capabilities:<br />
** The scale float xml parameter allows you to set the scale of a sprite relative to what it would normally be (default is 1.0).<br />
** use_geometry_queue as an xml parameter allows for you to make a for-the-galaxy-map-by-planets-text version of sprites.<br />
*** If this is set to true, then those versions of the galaxy map sprites will be vastly more efficient and will dynamically batch as we set up last build.<br />
*** If this is set to false, then this is for use anywhere else in the GUI, including the header and tooltips and whatnot. If this is set to true and you try to use it in the interface elsewhere, it will be invisible, as we discovered yesterday.<br />
<br />
* Using the above, strength icon is now properly batched on the galaxy map (as with last build) but all of the other sprites being drawn in the GUI now actually draw visibly again (unlike last build).<br />
** Also, while we were at it, we adjusted the scale of the strength icon to be 0.9, since it was a little bit on the large size in most text.<br />
** Thanks to Badger, Daniexpert, TechSY730, and Crabby for reporting the invisible icons in the GUI.<br />
<br />
=== MP Sync Improvements ===<br />
<br />
* During multiplayer, if there is a hack happening, then every second where something is changing, the host does an extra forced sync of the hacker and the hack target (if there is a hack target) to all clients, thus keeping them all in the loop.<br />
** This is central and automated, and should probably actually catch cases like "something was different after a hack between the client and the host" even if the end programmer/modder/etc doesn't account for it fully. This is just a handy new feature in general!<br />
<br />
* When units are claimed, or when they complete construction for the first time, there is now an automatic forced full sync of that unit from the host to the clients.<br />
** This gets rid of a lot of potential desyncs that otherwise could linger for a bit.<br />
<br />
* The ability to set the importance of intel tab entries is now shared among players in multiplayer.<br />
** This was previously set up to only be local, kind of by accident.<br />
** This has some code to keep it nice and responsive as if it was still just a local change, but if you click really rapidly on the same intel entry and cycle it through, you may see some slight funkiness to that. Should not be a big deal, but we'll see.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* FlagAsNeedingForcedFullSyncToClientsJustInCaseIfInMultiplayerAndWeAreHost() has been renamed to FlagForForcedFullSyncToClients_FromHost().<br />
** Added a new FlagForRequestedForcedFullSyncToAllClients_FromAnyClient(), which lets clients request updates on an entity rather than the host having to tell them.<br />
** Both of these calls remain utterly impact-free when we're talking about calling them repeatedly, or calling them during single-player. They intelligently weed out extra requests, and don't do any substantial processing directly.<br />
** The FlagForRequestedForcedFullSyncToAllClients_FromAnyClient() method in particular throttles itself so that a fresh flag can only be set on a given entity on 1 second intervals. So if the client is repeatedly asking the host for updates on an entity, that's just fine, but it will only get results on that given entity once per second. Other entities may be requested inside that timespan.<br />
** The upshot of this is that, whenever you look at a ship or structure as a client, by hovering over them to see the tooltip, you immediately get a refreshed copy from the host (within 100ms or so at the most, probably less, so too fast for you to notice), and then every 1 second after that you get further updated info.<br />
*** There's a lot of extra data that is stored normally only on the host. That gets sent to you as a client when you first connect, but it's mostly stuff happening on background threads and affects faction decision-making. Some of the DLC2 factions gather various resources that you can see in the tooltips, for instance.<br />
*** Previously, before this addition, clients would just have incomplete tooltips. Now their tooltips are updated with host data as-needed, and already the behavior of those sorts of ships would be updated by the host (so if you're not hovering over something for a tooltip, it will still act correctly; and you don't need the extra data in the tooltip unless you were to hover over it).<br />
** The other side effect of this is that if you feel like maybe there's a sync error with some ship or structure, and you go to hover over it to check that out and see for sure... it's going to instantly fix itself. So do be aware of that, though it's more or less a good thing.<br />
<br />
=== UI Improvements And Fixes ===<br />
<br />
* The concept of "Update Cycles" in the ArcenUI framework has been removed.<br />
** Instead we are basing things on ArcenTime, which was developed after the initial design of the ArcenUI.<br />
** This in turn lets us have reactions which are framerate-independent, which is thus more consistent across machines.<br />
<br />
* Using the above shift, plus also an extension to allow dropdowns to properly handle tooltips even on their "off frames," we have fixed the flickering dropdown tooltips that were introduced in the last update of the game.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Various lobby dropdowns have been improved as follows:<br />
** The tooltips for map type planet count entries still retain the header text of what you are doing. Also, colors for the selected vs potential items has been added.<br />
** The tooltips for the planet naming types are a bit more clear in general, and it now shows the name in a line above the description for extra clarity. Also, colors for the selected vs potential items has been added.<br />
** The tooltips for the map types explain themselves a bit better, include the name of the map type, and have the new colorization.<br />
** Tooltips for the map linking flavor and planet layout and such now match the others in function and colorization, including showing the details of currently-selected item when you hover over the closed dropdown for the first time.<br />
*** Also discovered a special discrepancy in how these were being handled that was causing these to still flicker like crazy even after we fixed dropdowns in general.<br />
**** Also found and fixed this on all settings on the personal settings window, although all other windows seemed to be okay.<br />
<br />
* Put in a fix that will prevent dropdowns in general from using the code combination that leads to flicker:<br />
** Essentially, HandleOverallMouseover() has been removed, and you should now use HandleMouseover() for that, and continue to use HandleItemMouseover() for items.<br />
** We are able to control how this flows properly and remove the flicker, whereas before if someone used HandleMouseover() by mistake -- when they were supposed to use HandleOverallMouseover() -- then they would get a flicker.<br />
<br />
== Version 2.633 Roaring Performance ==<br />
(Released November 17th, 2020)<br />
<br />
* Civilian Industries Update<br />
** Put in some defensive code to prevent potential pathfinding lock ups when multiple civilian factions are in play.<br />
<br />
* When hovering a Flagship, the 'max possible strength' value in the tooltip is now colour-coded to let you know what percentage of that strength currently exists. So if your fleet has taken heavy losses, the Strength colour will be darker. If you are at full strength it is brighter. This matches the behaviour of the tooltips for Factories.<br />
<br />
=== Performance Improvements ===<br />
<br />
* On the main menu scene, improved the culling mask on the scene-view camera to greatly improve efficiency of that scene.<br />
** It looks like the main menu may have been accidentally drawing 1.8 million tris rather than 800k tris because of this being set wrong.<br />
<br />
* The reflection probe on the main menu scene has also been updated to have an appropriate culling mask, for the same reason.<br />
** The reflection probe updates, which are quite heavy and frequent, should also thus be correspondingly faster and draw so many fewer triangles as well.<br />
<br />
* Poly few has been employed on the main menu scene to combine all of those meshes of the hangar into just a single mesh with 16 submeshes for the various materials.<br />
** This cuts the number of draw calls on the main menu down from about 3000 to about 250. The visual end result is identical. The performance gain is potentially massive, but varies heavily by hardware.<br />
<br />
* We have historically had static and dynamic batching disabled for this game, because we use GPU instancing instead (which is far more efficient and direct).<br />
** However, when we made the new main menu, we had implemented things such that this type of batching would be useful there, so we turned it on.<br />
** We have now changed things around again to remove that, and so once again removed those from being on in the application as a whole.<br />
** It's quite possible that these were dragging down performance on some machines in general, as the game may have been spending some CPU cycles fruitlessly looking for things to dynamically batch during the main game itself.<br />
** It's irrelevant to the end result of how things look, but there's no chance of that popping in and impacting performance negatively anymore, which is good. If it wasn't a performance impact, then no worries there, either.<br />
<br />
* Using Blender, we've manually removed some off-screen sections of the main menu meshes. This has overall reduced our polygon count in the game on the main menu by another 300k or so triangles.<br />
** This sort of hand-optimization is something that we had been saving until it was clear this is where the bottleneck was, and after it was clear that the new main menu was a winner (and that we had time aside for it).<br />
<br />
* With these changes, on Chris's main two computers he sees:<br />
** On the main menu on his main dev machine (GTX 1070 and a few year old i7 laptop) a jump from about 55-60 fps to instead being about 100fps.<br />
** On the main menu on his MacBook Pro from late 2013 which has an i7 but does not meet the minimum system requirements in general, it jumps from 26fps to... 26 fps. So there's a different limiting factor other than polygon count or draw calls on this ancient of hardware.<br />
** Most likely, any machines that are actually meeting the minimum system requirements, or vaguely approaching the recommended, environment, should see a substantial performance bump on the main menu. And for everyone, the disabling of the static and dynamic batching may improve performance beyond the main menu.<br />
<br />
* In our main menu scene, the way that the reflection probe is update has been changed fairly substantially.<br />
** Previously it was every-frame every-face if you had at least 30fps, and every-frame individual-face if you had at least 15fps, and below that would not update over time.<br />
** The individual-face updates were really jarring, however, and not something that is a good idea for any sort of smooth feeling.<br />
** Now only if you have at least 50 fps will it do every-frame every-face updates, and below that it will just not update over time, instead only having the reflection from the initial onawake event.<br />
** On Chris's main machine this makes no difference since it runs at 100fps now, but on the under-min-specs OSX machine this brings performance up to 31fps from the previous 26fps.<br />
<br />
* On the main menu, a number of lights were set to affect more than just the Scenes layer. This probably did not affect performance, but we are correcting that anyhow.<br />
<br />
* On the main menu, we had one extra spot light that was drawn in a not-important weighting, and that was very dramatic and looked good in general BEFORE we started having ships with lights on them moving around.<br />
** Since having ships moving around, that spot light would disable itself as the spotlights overtook it, then re-enable itself, and the transitions were jarring. It did not seem to affect performance much on the high-end or ultra-low-end machines, but in the middle-tier it might, also<br />
** This spot light is simply removed, as it was not needed for the new scene composition.<br />
** We experimented with turning off the point lights used on the ships, or even with turning off the reflection probe from being on at all, but the former gave 2fps on the super-old mac (from 31 to 33 fps), and the latter gave no boost at all.<br />
** Whatever is holding back the ancient below-specs mac is really not the sort of thing that is holding back the rest of the potential computing audience. And this is one excellent reason why we have system requirements in the first place. Not that 30fps is a cardinal sin; the original AI War was hard-locked to 20fps most of the time.<br />
<br />
* Added a new Performance tab option: Unrestricte UI Update Speeds<br />
** Normally, most UI windows only update their contents every 50-100 milliseconds. If your framerate is much higher than this, however, you may prefer that the UI update at whatever your actual framerate is.<br />
** This will likely reduce your framerate, potentially substantially, but it leads to the ultimate in responsiveness. Prior to version 2.633, and since sometime in the game's alpha, the UIs were all running on unrestribted update speeds.<br />
** We are not noticing any substantial benefit from this on our powerful machines, but on lower-end and middle-tier machines this may make more of a difference.<br />
** At the moment, things seem to perform equally well either way, but it's nice to put a lesser load on things where we can. Since this does not seem to make a visual/feel difference that we can detect at the moment, this seems fine to have with a differing default from the past.<br />
** Thanks to Daniexpert for inspiring this change.<br />
<br />
* In the ArcenUI_Element class, we have a SetActiveIfNeeded() method that long ago had some gating that was based on a cached wasLastActive in the class. <br />
** This was working poorly, back in alpha or beta of the game, because of how unity handles commands to enable objects that are disabled in the heirarchy, and things like that.<br />
** The game has now been updated to do a check against the activeInHierarchy property of the gameobject, which will always give the real result. This should not result in bugs, and should in theory result in some slightly better performance in certain cases where large numbers of ui elements are turning on or off frequently.<br />
** We don't really see much of a difference based on this, but in general this was something we noticed that was an optimization we had wanted a long time ago, and being able to have a tamer version of that back in here now is nice.<br />
** Thanks to Daniexpert for inspiring this change.<br />
<br />
* Over the last few months, as we've added functionality, the performance of the galaxy map has dropped notably.<br />
** In combination with a much-more-recent performance drop related to how we draw sprites-in-text and how that affects the galaxy map only, full galaxy maps were down in the 25fps range and really choppy to move around, today.<br />
** We've now restructured a lot of things to update in a time-sliced fashion, and the performance is now in the range of 90fps when zoomed all the way in, and 60fps when zoomed all the way out on a full map.<br />
** There are still some performance improvements we need to pursue related to sprites-in-text in this specific instance, but those will be in the next build.<br />
*** We did experiment around with trying some things like adjusting the sprite-in-text shader to allow for GPU instancing, but that went absolutely bonkers in a way that we don't care to untangle. There's a better approach that we'll implement soon.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* A whole messload of the new background images and other accents that are used in the new UI have been made vastly more efficient.<br />
** This may actually vary by OS just how much more efficient they are, but in essence these are all now able to be stored in DXT1 format, and all of the ones where relevant now have mipmaps for more efficient drawing at smaller resolutions.<br />
** The amount of VRAM that this should save, and the extra load removed from the GPU pipeline, should be substantial.<br />
** Thanks to Daniexpert for getting us to look into this.<br />
<br />
* Discarded these changes: Rather than using raw "TextMeshPro" text renderers for the text that is shown all around the galaxy map, we are now using individual Unity GUI Canvases with embedded TextMeshProUGUI objects.<br />
** Visually this looks identical, but now we are able to take advantage of the compositing stages that unity canvases go through, and thus we can have things like strength icons be embedded directly in these canvases without them causing extra draw calls.<br />
** At the moment we have one canvas per planet, with three text sections inside of that. This is less efficient per update of text, but more efficient for drawing text, which is the more common operation.<br />
** None of these respond to mouse raycasts at all, so on the off chance that the occasional (could not click a planet on the galaxy map) was relating to these, that no longer is possible.<br />
<br />
* Replacement changes for the above: In the end we went back to raw TextMeshPro text renderers, as their performance was superior to anything we tried with an abundance of canvases.<br />
** We did wind up also making it so that the shaders for TextMesh Pro sprites now use the Geometry queue instead of the Transparent Queue, which improves performance on rendering and also allows for batching.<br />
** And for the various ship icons in both the main view and the galaxy view, those also now use the Geometry queue. Those should generally get picked up by GPU instancing, but in the event they do not they will now get picked up by dynamic batching instead.<br />
** We actually have re-enabled dynamic batching for the game, but still left static batching off, and this seems to give the optimal performance when that's paired with these shader changes for the sprites.<br />
** Sprites used to always do perfect instancing, but now the sort order sometimes messes that up since there are multiple materials and it feels like it needs to handle them in proper order (really, z buffer ought to be sufficient and overdraw is probably preferred, but anyhow). The queue change makes these more likely to instance, and in the event they don't instance it makes them batch, thus leaning on the z buffer as noted.<br />
** The end performance boost on the top machine we have is now getting us back into the 90s fps on the galaxy map, up from the high 20s in the prior build, and still in the 90s on the main planet view. And both feel smooth rather than jittery, now, which is good.<br />
** Thanks to Daniexpert for reporting the performance loss observed lately.<br />
<br />
* On the galaxy map, we are now properly buffering text such that we don't put back in the same value into a field that just had that value.<br />
** This was causing some needless thrashing and re-parsing of rich text tags.<br />
<br />
== Version 2.632 Multiplayer Sharing ==<br />
(Released November 16th, 2020)<br />
<br />
* Fix an XML parsing error related to the Human Marauders<br />
** Thanks to Crabby, zharmad and okonomichiyaki for reporting<br />
<br />
* Add a setting for 'Show Faction Ring Around Ship', which displays a circle around a ship of the colour of the faction. <br />
** This is intended to make it easier to follow how battles are going without icons on, since it looks really cool that way.<br />
<br />
* Add some Red text to the Delete Campaign popup to make it a bit harder to do it by mistake<br />
** Prompted by the woes of Pat on the forums<br />
<br />
* Mod updates: Fixed Tugboat Drones always slowing enemies by 80%. Instead they now start at 20%, increased by 5% per mark beyond 1, ending up at 50%. Note that Tugboat Drones can still archive the maximum slow if their slow fields overlap.<br />
** Thanks to zeusalmighty428 for reporting.<br />
<br />
* Micro Mod Collection fix/balance:<br />
** The Energy Converter no longer produces negative energy and instead consumes the same amount of power. It was causing errors when a bad brownout could turn the energy generation of the player negative.<br />
** Doubled the metal cost of the Research Expedition.<br />
*** From zeusalmighty428's balance feedback<br />
<br />
=== Multiple Players Controlling A Single Faction In Multiplayer ===<br />
<br />
* In the lobby sidebar, you can now see on the client and the host if other people are in spectator mode, not just if you are personally.<br />
** This is quite helpful for knowing if the multiplayer lobby is truly ready to start.<br />
<br />
* Under human player entries in the factions tab in the lobby and the factions screen in the main game, you can now add and remove players from factions.<br />
** The tooltips make it pretty clear, but basically you can switch who is controlling what faction, or make someone just a spectator, or have two people share control of one faction, etc.<br />
<br />
* Fixed an issue where regenerating maps was causing faction assignment auto-allocation previously.<br />
<br />
* Two players are now confirmed as being able to share the same faction, and both can order around the ships of it and see everything as if it was just controlled by one of them.<br />
** What is not shared is the state of your GUI, such as what you are looking at or what you have selected, or what you are hovering-over, etc.<br />
** This is essentially the same as even really old RTS games like the original Age of Empires that would let you share a faction if you gave two players the same color.<br />
** However, with this you are able to still do text chat with the colors and the names of the individuals who are a part of the game, whether they have their own factions or no faction or share a faction. This feels pretty awesome!<br />
<br />
* Joining a game late as a spectator is confirmed to still be possible, but now that's the only time it warns you that you are a spectator.<br />
** If you join the game in spectator mode during the lobby, or the world is regenerated while you are in the lobby, it doesn't show the "hey you're a spectator, is this on purpose" message. That was really annoying when changing galaxy sections to have fewer factions or while someone was just intending to spectate.<br />
<br />
* New feature, after someone has joined a game late (or frankly, even if they have been there from the start):<br />
** You or they can unassign them from factions, and assign them to other factions or no faction.<br />
** This is great for having a game where you were playing solo, but now have some friends coming in as extra sets of hands.<br />
** But surprisingly, since this is so quick and so seamless of a way to pop over and see the perspective of another player, I can see this potentially being used as a "hey, look at my metal flows and such for a minute" type of view, too. You can do it while paused or unpaused, the game doesn't get interrupted while people change status or come and go in general, and overall this is just really smooth.<br />
<br />
== Version 2.631 Multiplayer Swaps And Performance ==<br />
(Released November 13th, 2020)<br />
<br />
* Fixes to when GetIntValueForCustomFieldOrDefaultValue or GetValueForCustomFieldOrDefaultValue have empty strings in them, to where they will now return the default values properly.<br />
** Thanks to NR SirLimbo for identifying the problem and likely fix.<br />
<br />
* Kaizers Marauders fixes:<br />
** Fixed another exception in relation to missing settings. Tracing the issue back lead to finding out that Vanilla GetValueForCustomFieldOrDefaultValue() sometimes still does not return the actual default value but an empty string. OnS0_KaizerUpdating() now detects this and produces an informational popup before correcting it to "Never" which is the actual default value.<br />
** Debugging lead to the discover of a bug in the Budget Updating logic where (due to the same issue) they would every second set the starting budget of [nothing] without ever beginning to accumulate budget. They now start with 0 and begin accumulating.<br />
*** Thanks to Isiel on Discord for reporting and delivering a save to reproduce these issues with.<br />
<br />
* Fixed an exception that could happen in RemoveInvalidatedOrdersAndReturnFirstValid_IncludingDecollision() somewhat at random on multiplayer clients, mainly as a race condition.<br />
** Thanks to crawlers and Driftwood for reporting.<br />
<br />
* For whatever exact reason, the Macrophage faction really doesn't work well if the client is also trying to calculate all the decisions for things in multiplayer. This is referring to the DoPerSecondLogic_Stage3Main_OnMainThreadAndPartOfSim() method in general, but the telium spawning logic in particular.<br />
** Since this was a constant source of errors, and since the desync repair code should catch things like this quickly in general, for now we're just not running this on the client at all anymore. This stops the errors, and any divergences should be quickly and easily picked up by the desync repair logic.<br />
** Thanks to crawlers and Driftwood for reporting.<br />
<br />
* Fixed potential exceptions that could happen in OnlyInMapgenOrInActuallyGettingRidOfEntities_ImmediatelyRemoveFromSim() in general during cross-threading, but most often on multiplayer clients.<br />
** Thanks to crawlers and Deadwood for reporting.<br />
<br />
* A variety of data that is only relevant in single-player or on MP hosts no longer shows up on MP clients in the escape menu sidebar.<br />
<br />
* Previously in MP, it was possible to get some errors like "Hey, we have generated drones from a ship of type CarrierGuardian that can never be properly deployed by the fleet it is not the centerpiece of, of type NonPlayerDrone" on the client in a spurious fashion.<br />
** These are simply not written right now, and the natural sync process fixes those already within a couple of seconds.<br />
<br />
=== Swapping Fleet Lines Between Multiplayer Players ===<br />
<br />
* Created the ability for players to swap out ship lines between each others fleets in multiplayer.<br />
** For the sake of convenience, every player can slot in every other player's ships into their fleet, or grant their own ships to any other player's fleet.<br />
*** In AIWC, we required players to actually gift ships or similar from themselves to someone else, but in this game you can outright take from others. You're all on the same side, so divide up tasks how you will.<br />
** The owner of the fleet is included in the row of the swapping target so it's easy to see who owns it.<br />
** For balance reasons and to prevent technical hiccups, any ships that are swapped between players in this fashion get destroyed and have to be rebuilt by the player on the other side.<br />
*** This is fairly similar to how, when ship lines are swapped between fleets on different planets, the ships are scrapped and have to be rebuilt then, too.<br />
** It's worth noting that this sort of thing does allow for a lot of extreme focusing of tech lines in multiplayer, making MP even easier than it would have been before (you take all of the ships that benefit from tech X, give me all the ones that benefit from tech Y), but this was always a feature we were planning, regardless. Player flexibility and the ability to coordinate is more important.<br />
*** We could implement punitive-style tech costs in MP, to make it so that it was more costly to use techs, but that would probably just encourage even more specialization.<br />
*** In general, it's simply worth noting that a MP game is substantially easier than the equivalent game played solo. So either up the difficulty, or add more secondary foes to deal with, or enjoy the extra ease.<br />
*** The original AI War had a much more limited set of factions at the start, and only could ever have two AIs, etc. So it was important for that game to scale the difficulty up as more players were added. But in this sequel, the amount of other factions, and their power, make it so that you can really tailor it to your own needs, instead.<br />
** Huge thanks to NR SirLimbo for implementing this! This was on our list to do, but to have a modder implement it for us in advance is a great time saver.<br />
<br />
=== Multiplayer Performance Improvements ===<br />
<br />
* The multiplayer sync-repair of planets, with planet-factions included inside of them, was by far the largest amount of bandwidth being sent by the game during gameplay, and it has now been set up in a time-sliced fashion so as not to cause a bunch of lag on the client.<br />
** It's quite likely that, on some certain very heavy games on Steam, this was actually able to cause an exception where the amount of data being sent in one message was larger than what Steam allows.<br />
** At any rate, this was causing periodic lag on the client that was so severe in some games with larger counts of planets that it was making the entire game laggy.<br />
** We have not only started time-slicing the planets, but we actually split out the data for the planet factions themselves and also time slice THOSE now, too.<br />
** As a direct result, the performance of multiplayer games has skyrocketed when it's involving large number of planets and/or factions, but we're going to take this a bit further.<br />
<br />
* Previously, we had a system where ALL of the various types of network sync repair work shared one large time-slice.<br />
** This really only worked when we had fewer types of sync repair, and when they didn't also internally have lots of time-slicing happening.<br />
** As we have added more types of sync repair, and have started wanting to time-slice those, this would otherwise mean that the really core stuff -- namely ships/units -- could fall further and further behind, which is not good.<br />
** Therefore, we've moved both the "ship sync checks" and the "divergent ship fixes" out of the central time slice group, and they are handled every sim frame instead.<br />
*** For ships, these were already time-sliced, and so those happen over the course of a couple of seconds. Probably closer to 2 seconds now, rather than 4, but it depends on the number of ships in the game.<br />
*** For divergent ship fixes, those now don't wait on anything, and just get sent to clients asap after we realize that it is needed. This makes that far more reactive in a good way, and ultimately the data is small enough not to be concerning.<br />
**** As we get to fewer PKID conflicts in the future, this will dwindle even further, but having it be nice and reactive is good.<br />
<br />
* Now that we don't have to share the time-slicing with the time-sensitive ship fixes, we can make some of the rest of the sync repair data happen on a more relaxed schedule.<br />
** This actually is a dramatic reduction in the amount of data transferred, and even more importantly is a dramatic reduction in the amount of CPU processing on clients required to handle this.<br />
** Planet Faction sync is by far the slowest stuff to sync, and has the most data, so we're time-slicing it over 20 frames now, which is about 2 seconds, rather than 4 frames like earlier in this build (before this build, it all happened in a single frame every two seconds or so).<br />
** Planet other-data sync is not exactly small, either, so it's being time-sliced over 8 frames now instead of 4 frames like earlier in this same build. Again, prior to this build this AND the planet-faction data was all in a single giant laggy frame every 2 seconds in large games.<br />
** The data on these things is just not all that visible or important in this sort of time schedule, so cutting it down in this fashion keeps things from drifting over long periods of time without impacting game performance like it previously was.<br />
** We may add in extra time-slicing in the future if it really becomes needed, but at this stage it is seeming to be a good balance between keeping things up to date quickly and not draining performance.<br />
** Thanks to crawlers and Deadwood for providing an MP savegame where basically the performance was stop-and-start laggy; in this new version, we can run it at full sim speed with no waiting on the client, which is really awesome!<br />
<br />
* Non-new ships on tier 3 planets now get synced FAR more slowly, and are counted as skip-syncs.<br />
** These catch up at a rate of roughly "one full sync cycle multiplied by 1/10th the number of planets, rounded up). In practice in one large savegame with 12k stacked ships and 93k ships total on 120 planets, this winds up being about a delay of 68 seconds at most for any given ship. If players moved onto a planet that is slightly stale on the clients, that planet would be immediately updated.<br />
** The main cases where we might have a problem here is with strength calculations being off on planets where there are large numbers of reinforcements suddenly dumped into new ships. The host would always be correct, but the client would have some slightly stale data in the galaxy map for up to 60 seconds, which would be annoying.<br />
** There are some ways we can adjust for this for specific ships as they are updated, though, and the next step is to add that. This whole process at the moment does wind up saving a ton more bandwidth and CPU processing, though, which is excellent.<br />
<br />
* Added two new methods to GameEntity_Squad for ships:<br />
** FlagAsNeedingForcedFullSyncToClientsJustInCaseIfInMultiplayerAndWeAreHost() causes a ship to immediately be fully synced from the host to any clients. It is unused on the client side.<br />
*** This is a great way for mods in particular to, after having updated some sort of special mod-only data (like resources they are carrying) to cause a full ship sync.<br />
*** This should not be done too frequently! But if you have a mod that is gathering resources, and periodically updating information that would not normally be caught by the sim thread, then having this periodically called on the gatherers would keep the tooltips of clients up to date.<br />
*** In the escape menu networking details on the host, you can see how many of these have happened via the "Ship Syncs Forced" item.<br />
*** BUT, this may actually wind up never being needed, stay tuned. We're going to make some additions so that anything a client is hovering over to get a tooltip gives them up to date info without you having to be predictive about it.<br />
** FlagAsNeedingFullSyncCheckIfInMultiplayerAndWeAreHost() is specifically to say "ignore my tier3 delayed status," to work around the feature we just added today where background ships get ignored a certain amount.<br />
*** This is mainly something to use when something unusual changes (other than a ship existing at all) that would be visible on the galaxy map for client player, without them clicking into the target planet.<br />
*** So for now this is something that happens whenever a ship marks up, and it also happens whenever the AIReinforcementPointContents contents are changed (increasing, decreasing, transferring, deploying).<br />
*** This should keep the galaxy map accurate for clients, while at the same time not having so darn much data transfer for ships on planets where players are not active.<br />
<br />
== Version 2.630 Arbitrary Icon Inclusion And Weapon Exclusion ==<br />
(Released November 11th, 2020)<br />
<br />
* Add death effect damage a unit has sustained into the tooltip for it at or above Medium detail.<br />
** Each type of damage is listed separately, and displays the current damage, and the amount required.<br />
** Thanks to Puffin for adding.<br />
<br />
* Fix a Macrophage typo<br />
** Thanks to crawlers for reporting<br />
<br />
* Fixed a bug in Astro Trains where they were looking for a nonexistent variable in their custom xml. This was always a harmless bug, but newly showed an error while in the past it was silent.<br />
** Thanks to ussdefiant60 for reporting.<br />
<br />
* GetDefaultValueOfWhateverSort() on the SpecialFactionData object has been updated to match the way that the default values were returned on the faction screens.<br />
** Thanks to NR SirLimbo for reporting that this was not working consistently.<br />
<br />
* The CustomFieldValues array on faction objects is now private, so that people don't try to directly add or find data from it.<br />
** Instead, mods and factions and whatnot should set data through SetCustomFieldValue (which works the same as before), and they should get data via either GetCurrentIntForCustomField() or GetCurrentStringForCustomField().<br />
** Both of those latter two methods have a method that lets you pass in the specific field (more efficient), or which just takes the name of the field (less efficient).<br />
** Either way, the idea is that there's never confusion with not getting the default value back when there is a blank present in the main data (which might be an old savegame or quickstart, or various other valid conditions).<br />
** Thanks to NR SirLimbo for finding this accidental modder-landmine for us.<br />
<br />
* Fixes for Kaizers Marauders:<br />
** Instead of failing horribly when added as a Random Faction, or when loading older saves where old Marauders were enable (be it just as a beacon), which includes quickstarts they will now use somewhat defaulting values. It's not perfect, and not really intended for use this way (simply because of the sheer amount of options available) but it works.<br />
** Fixed a potential issue with Debugging global stuff for Marauders (such as logging Kaizer Updating or the Shared Planetary Cooldown List) where the debug could be turned on, but when only a specific Marauder Faction was set to be debugged it could re-overwrite with false later on, leading to no printouts.<br />
<br />
* Remove mentions of 'tiers' from the scourge unit hovertext, since it was confusing peoople. It was only ever a cosmetic thing.<br />
<br />
* Suppressed a pair of harmless-but-annoying exceptions that could show up in your log files if you were shutting down the game from the main menu in just the wrong way. These were related to the Slate cutscenes trying to stop at the same time they were being eaten alive by your OS taking back its memory. All is well, no need for a dying scream.<br />
<br />
=== Fix To Ship Weapons Mismatch ===<br />
<br />
* Added a new ArcenNonTableUniqueStringList class, which we can now use for keeping lists of arbitrary string that we want to serialize.<br />
** We're going to be using this for entity systems.<br />
<br />
* EntitySystemTypeDataTable has been removed, and EntitySystemTypeData no longer inherits from ArcenDynamicTableRow.<br />
** This was really old logic, and is the one instance in the codebase of us really not using dynamic table rows properly.<br />
** The result was slow during startup, in the best of times, and more recently it has been actually scrambling up the data for systems between different ships! That latter part may be new in the last few builds, or it might just be more common. Either way, this has needed a shift for a while.<br />
** The EntitySystemTypeData no longer has an InternalName, but instead has InternalName_Original (which is just the raw xml name like FusionBomb), and then an InternalName_Longer (which is the entity type appended in front of it, like "Mugger_FusionBomb").<br />
** The new serialization for these by index uses the shorter name, which just makes savegames a bit smaller. But it doesn't really matter what is used in the longer-term effect, because these are no longer stored in one central lookup. They are now properly full sub-entities of the GameEntityType.<br />
<br />
* With this change, shockingly, we have still NOT solved the issue of things like Mugger frigates sometimes getting Brawler weapons. So that's going to need even more investigation.<br />
** This overall change is still worthwhile, as it shrinks future savegames a bit (not ones from prior versions saved in the new build, though), and it also makes loading the initial game program a bit faster and less prone to potential issues... despite still having this particular issue.<br />
** Note from later: this actually solved 90% of the problem, but there was still a case of us managing something slightly wrong that let it keep bleeding over. So the last 10% is below.<br />
<br />
* The "copy_from" tag, which was never used on entity systems inside an entity, and which probably would not have worked well there if it had, has been removed.<br />
<br />
* Fixed a bug where our "dump data tables on load" debug option was no longer working (the hotkey was, but not the on-start version).<br />
<br />
* Fixed a very peculiar issue that only affected a couple of unit in the prior version (in the main game and DLC, anyhow -- more may have been affected in mods) where if there was a unit that had its systems altered on a child, and there were then other co-children, the other children would sometimes get those altered stats and sometimes not. Normally it should just pass to grandchildren and so forth, not to siblings.<br />
** Essentially, the way that we handle partial records is normally very explicit (is_partial_record="true"). And in fact, when we have a partial record like that, we WANT for it to inject itself into any other descendants later.<br />
** But in the case of entity systems, we have this kind of implicit "child partial record" system going on, where you just name the same system in the child as you had in the parent, and make some changes, and those changes then keep going in that lineage.<br />
** What we do NOT want to have happen is the siblings to also pick up those changes, which is what was sometimes happening here because of the funky way that we handle systems and systems alone in the game.<br />
** From looking at the raw data, without mods in play this mostly just affected muggers and brawlers, and a few spider turrets. Most everything else was already consistent properly. But if you play with mods on, you may have seen a lot of other chaos happening beyond these particular ones.<br />
** Thanks to crawlers, Ovalcircle, Spaz, Puffin, and Darkshade for reporting.<br />
<br />
=== Work To Allow Arbitrary Sprites In Game Text, Part 2 (Complete!) ===<br />
<br />
* The sprites in TextMeshPro have been updated so that their default index is 0, not -1. That way if no sub-name or image is specified, we are still able to figure out where they are.<br />
<br />
* We don't use the mspace monospacing markup, so we're keeping things simple and redefining that to mean "no advance"<br />
** This essentially lets us put <mspace>around things we want to all be on top of one another</mspace>, which is really useful for our compound icons.<br />
<br />
* Since we already use non-atlased sprites in every location in the UI, and have those present and available as needed, we're just going to go with that for the TextMeshPro sprite embeds as well.<br />
** There aren't any sprites that we only have in atlases but not also in asset bundles directly, although there are ones that are loose and not in bundles.<br />
** With that in mind, this lets us avoid the glyph metrics that were working so poorly with our sprite atlases, and the efficiency of the whole thing is not much changed given how compositing on the UI works and how infrequently (overall) we include extra sprites.<br />
** This actually turned out to be a particularly good move, because what we've discovered is that if there are two different sprites used in a single text area, the following happens:<br />
*** The draw order is based on the order of the first sprite dictionary used that is shared, not the order of the sprites in the text.<br />
*** When multiple sprites are in one dictionary, this can lead to funky results. When there are single sprites per dictionary, the only time this can mess up is when there is a single sprite used more than once AND you want them to overlap one another.<br />
*** It's worth noting that we don't care about the order of sprite drawing, normally, except for the new mspace markup.<br />
<br />
* The new custom TextMeshPro dll has been updated (by building the WorkingTextMeshPro project, as silly as that is) and the result has been put in ReliableDLLStorage so that we can compile against it and use those capabilities in ArcenUniversal, etc.<br />
<br />
* The copies of TextMeshPro code for the other three main projects that use it have all been updated to match the new capabilities.<br />
** This won't work in the main game build until it actually has a build done, though.<br />
<br />
* Added a new TextEmbededSprite and TextEmbededSpriteTable table, which are in ArcenUniversal and PARTLY filled by xml entries from the new TextEmbededSprites folder.<br />
** The rest of these are able to be filled programmatically as we load sprites from other locations, specifically when it comes to ships by name.<br />
** The purpose of these are to define sprites that can be used inline in text for improved display purposes. You can expect to see us doing more of this over time now that we finally have the capability.<br />
** It is possible for an auto-added sprite in here (such as for a specific unit type) to manually get some tweaks by adding xml for it. The order of that happening does not matter, which makes the system extra flexible.<br />
*** This does mean that, because of the lack of order mattering, this table intentionally allows for malformed entries (those defining some metadata but having no actual sprite assigned). That's a necessary byproduct, since other parts of the code are assumed to add those sprites later, but might not do so if they were themselves removed.<br />
** bundle_name and filename are optional, and specify the location of where to directly load the Unity Sprite or Texture2D from during game load.<br />
*** These are NOT used in cases where another class (like GameEntityTypeData) is creating new TextEmbededSprites on its own. In those cases, the sprite or texture2D is sent from the other class.<br />
*** In the case where these ARE used, we need to know whether we can load it as a Sprite (ideal) or a Texture2D (slightly slower). The xml tag bundle_target_is_texture2d defaults to false, and so tries to load the target as a sprite. Anything used elsewhere in the UI would work this way. But if you need to load a Texture2D and make a Unity Sprite out of it at runtime, you can set this to true.<br />
<br />
* Added a static CreateRuntimeSpriteFromTexture2D() method on the TextEmbededSpriteTable, which takes in a Texture2D and returns a Sprite.<br />
** This is something that is particularly useful, because it keeps track of ones that were previously created, and reuses them rather than creating extras. This can only happen on the main thread.<br />
<br />
* About 50 initial sprites have been set up as text embedded sprites for use coming up.<br />
** There is more metadata that we want to get in there, plus some other things to make these as simple as possible to call on, and we need to actually cross-wire this to the new TextMeshPro stuff that we worked so hard on. But that will come tomorrow.<br />
<br />
* Fixed the AIW2ModdingAndGUI project so that it now has the proper TextMeshPro code embedded within it and so that it won't erase our customizations every time it is reopened in the unity editor.<br />
<br />
* Fixed the WorkingTextMeshPro project so that it now has the proper TextMeshPro code embedded within it and so that it won't erase our customizations every time it is reopened in the unity editor. This is how we build our custom variations on that code, and now we're not at risk of random regressions from unity package manager automatically wiping our changes.<br />
<br />
* The following float options are now available on any of the text embedded sprites for manipulating how they fit into the text they are embedded in:<br />
** x_draw_offset, y_draw_offset, width_draw_offset, height_draw_offset, advance_draw_offset.<br />
*** All of those do the basics of what you might thing in tems of adjusting how the sprite draws, while advance says how much space to go over before the next character draws (or how it plays into word-wrapping or whatever else).<br />
*** All of these are in fairly abstract units, where roughly something like 100 is about the height of a line, regardless of how many pixels that line actually is. <br />
*** Most of the time you won't want to mess with these at all, but in some cases you may want to adjust the vertical centering by using y_draw_offset in particular. Beyond that, most people would not use any of these.<br />
*** Frankly, to get the kerning of the strength icon working perfectly, we will probably add a few more dials to this soon.<br />
<br />
* Our TextEmbededSprite sprites are actually loaded up into TextMeshPro sprites now, completing the main integration of arbitrary sprites.<br />
<br />
* default_color_hex is a new string option available on the text embedded sprites, for allowing a default color to be applied to sprites.<br />
** Please note that, unlike sprites we had in the past that were based on vectorized glyphs inserted into a wingdings-like font, these sprites can be full-color to begin with.<br />
** The one "downside" is that these sprites can't be infinitely zoomed-in-on like a font, but that's hardly a downside given that we could render these crisply on an 8K monitor or more.<br />
** The default text colors are nice for purposes of things like resource icons that are embedded in text.<br />
<br />
* For now, ArcenFormatting has been updated to stop using the old font-based resource sprites, and now use the new TextEmbededSprite sprites.<br />
** This is a major jump up in quality in general. Also, now all of the resource icons properly match all throughout the GUI.<br />
** One thing to note, however, is that these sprites no longer inherit the color from their parent font.<br />
*** So, in order to match the text color properly, we needed to add ArcenExternalUIUtilities.GetStrengthIconWithColor_Wasteful(), which hits the garbage colletor, and ArcenExternalUIUtilities.WriteStrengthIconWithColor(), which does not (use the latter if at all possible).<br />
<br />
=== Main Menu Further Refinement And Expansion Logos ===<br />
<br />
* The planet that scrolls by in the background of the main menu sometimes has been removed, as it was having some glitchy effects on it that we definitely did not want. In the end, we don't really need the planet in order for this to be a very interesting scene as it is.<br />
** Thanks to Badger and others for reporting the problem.<br />
<br />
* The material properties of the main game logo have been updated substantially so that they look more natural in the light and shadow of the main game.<br />
** Thanks to Badger for suggesting.<br />
<br />
* The main menu now has logos for all three of the current and upcoming expansions, and they are more lit-up if they are on (installed and enabled).<br />
** If they are not installed or not enabled at the moment, then they show much darker, but still with reflectivity of lights passing by.<br />
** Videos made during the making of this: https://youtu.be/p73bPBFsgoI and followup: https://youtu.be/K-uvfTH9tgk<br />
<br />
* The AIWarExternalCode library now links against ArcenThirdPartyCode so that it's able to make changes to certain things in the front-end game.<br />
<br />
* The main menu now uses a hook to go in and find our custom BetterRotationScript on the background that spins the space skybox, and slows it down substantially compared to prior releases. This saves us the wait of a 40-minute rebuild process, and in theory actually would let us have a variety of random rotations if we felt like it.<br />
** Thanks to Badger and Asteroid for suggesting.<br />
<br />
* In fact, since we can, the rotation of the stars in the main menu is now entirely random, but at a much lower overall speed than it was before. It can rotate at a combined maximum velocity that is still only 3/4 of what the prior maximum speed was, and almost all of the time it will be vastly smaller than that.<br />
<br />
== Version 2.629 Ship Cap Hotfix ==<br />
(Released November 10th, 2020)<br />
<br />
* Corrected the OpenGL launcher script on GOG, thanks to GOG support (it was our error -- thanks to them for figuring it out!).<br />
** It appears that the issue didn't affect all flavors of linux, but it certainly did affect some.<br />
** Thanks to rudhek for reporting.<br />
<br />
* A simple typo was breaking all of the xml parsing for sub-lists of data of the following types (unless they had the requirement of IsUnique on): fint, arcenpoint, vector2, vector3, <br />
** Most of these were new or unused in general, but fint was not new and is used for the scaling of ship caps in the game, as well as for the engine stun seconds progression.<br />
** All of our other list parsing, which are more commonly used, were all working fine.<br />
** Thanks to Wuffell, ArnaudB, ThyReaper, and other for reporting.<br />
<br />
== Version 2.628 Mod Proliferation ==<br />
(Released November 9th, 2020)<br />
<br />
* Fixed a bug where the Tame Macrophage Hack was not correctly responding on certain Quickstarts.<br />
** In actuality, the Enraged subfaction was entirely missing from those quickstarts! Very bizarre.<br />
*** Thanks to Smidlee and Metrekec for the bug report and saves for testing, and StarKelp for fixing.<br />
<br />
* Fixed Cloaked Transport Flagships from starting fleets having the default transport direct tech upgrade costs instead of the higher ones that captured cloaked transports do.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Adjusted the amount of Combat Engineers Support Factories get for both starter fleets and captured fleets, balancing them a bit and bringing both spawned and captured fleets more in line:<br />
** Rejuvinator: 8-13 (starter fleet remains at 10)<br />
** Overloader: 4-7 (starter fleet changed from 3 to 6)<br />
** Everything else stays the same, but the Combat Factory starter fleet goes up from 6 to 8 engineers<br />
** This hopefully kills the bug where Combat Fleets spawn in with 2 Sentry Frigates too.<br />
** Thanks to NR SirLimbo for making these changes.<br />
<br />
* Added 2 more tiers to Metabolization and Greater Metabolization in preparation to additions to ESV.<br />
** To clarify: This is NO new types of Metabolization but simply new conversion ratios damage/shot -> Metabolization points. By default Gangsaws for example deal 10x as many Metabolization points as they dealt damage.<br />
** The new tiers are "BigMajor" for a conversion ratio of 5x, and "SupportWithoutDPS" for a conversion ratio of 50x.<br />
** Thanks to NR SirLimbo for adding.<br />
<br />
* Some minor buffs to Shark B<br />
<br />
* Fix a typo in the Mesopotamia planet list description<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
=== Included Mod Updates And Additions ===<br />
<br />
* For modders reference: rename BadgerFactionUtilityMethods to FactionUtilityMethods.<br />
<br />
* Disabled mods and/or expansions that are installed on your machine no longer temporarily show up as enabled for just a few moments during the initial load of the game. That was confusing.<br />
** The Settings from any installed-but-disabled mods and expansions ARE loaded, so that those can be kept properly if you are enabling and disabling mods over time, but those are the only parts loaded when they are disabled.<br />
<br />
* KM / AMU mod fixes:<br />
** Fixed a very strange bug about fireteam debugging where for some reason it couldn't find the Fireteam.GetDangerOfPath() function.<br />
** Hopefully fixed another very strange null ref exception in the Marauder LRP<br />
<br />
* Civilian Industries mod:<br />
** Fixed a bug where Fireteams were being rude and not letting civilians use their danger pathing code.<br />
** Optimized a few pieces of code to hopefully help with the performance issues some people have been recently having.<br />
<br />
* Fixed a literal 1-symbol-bug in Kaizers Marauders where they would not accumulate AIP but instead reset their AIP to the most recent increase.<br />
** This also lead to the discovery of a bug for the Debug Mode where Marauders produce and use real AIP that multiply AIP by the number of AIs present.<br />
** Thanks to ussdefiant60 for noticing.<br />
<br />
* New content for the Extended Ship Variants mod and its counterpart for Fallen Spire. Do note that the latter now requires the base ESV installed!<br />
** Extended Ship Variants:<br />
*** Added 4 new types of Transport Flagships: Engineering (hybrid between a stronger engineer and a transport), Vanguard (hybrid between a Vanguard and a transport), Tugboat (has small drones accelerating everything to at least 700 speed and can slow down enemies) and Target Painter (long-range beam that amplifies damage dealt to a single enemies)<br />
*** Added 3 more types of Mobile Factories: Metabolizing (launches Metabolizing drones), Rescue (creates rescue-beacons that can revive ships), Translocator (good AoE explosion that pushes small ships back and paralyzes them)<br />
*** Added 6 new mobile starter fleets with ESV ships and transports included into them.<br />
*** Added 5 new support starter fleets, 3 with ESV mobile factories and 2 with vanilla mobile factories that did not have a starter fleet before<br />
*** Buffed the Agile Transport: +25% speed on entering a new planet for 5 seconds, -50% damage if attacked from >= 5000 distance, 21 gx engine to resist Black Hole machines<br />
** Extended Ship Variants for Fallen Spire:<br />
*** New Transport Flagship: Cyber Command (reduced hacking response, much more expensive, much more fragile hull but decent shields)<br />
*** New Mobile Factory: Acidic (launches drones spreading acid onto enemies)<br />
*** New Mobile Starter Fleet: Hacker Fleet (designed to deal with AI hacking responses)<br />
*** New Support Starter Fleet: Combat Engineers and Acidic Factory<br />
<br />
* Increased the timer on Kaizer's derelict to allow for a longer time period to save him. Instead of 1% health per second he now loses only 0.3%, which grants 334 instead of 100 seconds time to save him if the player so desires.<br />
** From a discussion with SilverLight on Discord.<br />
<br />
* Updated Kaizers Marauders to be compatible with this new AIW2 version (no functional change) so players should be able to hop back in as soon as the update drops, without having to wait for an update of the mod in response to an update of the game itself.<br />
** Updated the source files on AMU.<br />
** Worth noting that the Civilian Industries mod did not actually need an update for this new version because it didn't happen to be using the features that changed. <br />
<br />
* Fixed a type mismatch now exposed through the new External Constant Loading in Kaizers Marauders: AIAlliedInvertedTechBonusFactor was declared as FInt, but loaded as int. Is now also declared an int so it works.<br />
** Curiously this didn't seem to have any impact on the mod in any way... Strange, but ok.<br />
<br />
* ExampleMod and ExampleMod2 have both been removed from the game, as they were utterly pointless at this point.<br />
** There are more and better ACTUAL mods of all sorts for you to look at if you're thinking of getting into modding.<br />
<br />
==== New Micro Mod Collection By NR SirLimbo! ====<br />
<br />
* Added the Micro Mod Collection mod to the off-by-default mods.<br />
* Currently adds:<br />
** 4 types of Distribution Nodes: 6m metal for 1 AIP, 45 hacking points for 2 AIP, 3k science points for 3 AIP, 4m metal/30 hacking points/2k science points for 4 AIP.<br />
** Energy Converters (10 for Home Command, 5 for every Economic Command Station) that convert 50k energy to 150 metal/second<br />
** Research Expedition: Mobile science/hacking gatherer that can speed up gain on owned planets but also extract from allied/neutral worlds, scout adjacent planets and at higher levels decloak/cloak itself. Fragile, high-priority target for the AI, producing 20 AIP on death.<br />
** Reinforcement Seeder: AI ship dropping Minor Reinforcement Warp Gates that increase planetary reinforcements by 5% per gate.<br />
** 3 types of AI Command Stations with escalating levels of strength: Gravitic (slow aura), Tachyon (decloaking aura) and Pulsar (periodic paralysis aura).<br />
* Balance and general feedback required and sought after!<br />
<br />
=== Work To Allow Arbitrary Sprites In Game Text, Part 1 ===<br />
<br />
* Added a working testing project for altering TextMeshPro, while retaining compatibility with all the various unity scenarios in which we use it.<br />
** Attempted three different ways of updating it to have new sprite embeds, but so far those methods were all a bust. Going to try another method of injecting our own sprites, instead, and for that we need to start basing our things on having some sprites and then shoving them in. Thankfully we have a nice little isolated test project for this, which now has some added info in it.<br />
<br />
* Added some code in ArcenXml that lets us parse xml directly from TextAssets, mainly for testing.<br />
** This is also used now in parsing the sprite dictionaries that we are creating via TexturePacker.<br />
** Also set things up so that we can now have sprite dictionaries that are a single sprite loaded directly from a unity-style sprite with borders, etc, intact.<br />
*** This is useful for some of the other new icons-in-text that we want to do.<br />
** The general purpose of this is partly for test loading sprites of two different categories in a way that we can start trying to get them into TextMeshPro programmatically, but this also would be used long-term once the testing phase is past.<br />
<br />
* Made a change that makes it so that if a sprite material is destroyed (such as one that was created at runtime in the unity editor) it will now just display as a blank image rather than throwing errors inside TextMeshProUGUI. This is mostly helpful for our own internal testing of our injection of our custom sprites into TextMeshPro's rendering pipeline.<br />
<br />
* References to ArcenSprites are now stored on their parent ExternalIconDictionary.<br />
** We never needed this before, but now that we are translating entire dictionaries into use for TextMeshPro, it's a thing.<br />
<br />
* TextMeshPro has been expanded to allow for us to inject our own images at runtime, from any source (not just Resources, but rather asset bundles and whatever else).<br />
** We can inject unity Sprite objects, unity Texture2Ds, and our own custom ArcenSprites in their entire ExternalIconDictionary.<br />
** This new capability is set up so that we can also control things like how they are scaled and offset, and essentially how the kerning works.<br />
** Whether we use all those features or not is not really relevant, but it's good to have options.<br />
** This is far more powerful than our old method of drawing images in text in TextMeshPro, which was limited to a special "Arcen Icons" font where we had vectorized some of our icons into a font format and were using that to draw icons.<br />
*** In some respects that was nice because that gave us infinite zoom on those icons, and now we're using raster images with a fixed maximum resolution, but those other icons really did not behave well when it came to trying to line up with varied fonts. Often the offsets and kerning were terrible, and updating them at all required a rebuild of the central game executable, which is time-consuming to say the least (that's about a 40 minute wait).<br />
** This new approach allows for images to be inserted into text by mods, let alone just our own code.<br />
<br />
* We don't yet have the new TextMeshPro stuff integrated into the main game, but it should be tomorrow.<br />
** For now, we've got our new data formats and are testing the last of the capabilities we need, and trying to make sure that our sprite dictionaries translate properly to theirs, which is so far not quite working right but getting close. Single images are working great.<br />
<br />
=== Giant Overhaul Of Xml Parsing For Accuracy And Speed ===<br />
<br />
* exclude_children_from_copy was not an xml feature we were using, and it was slowing down xml parsing in general, so we've removed it.<br />
<br />
* The way that child nodes and attributes are determined to NOT be copied in xml is now vastly more efficient, and doesn't involve any GC churn.<br />
** This should lead to more accuracy when we pair it with some other changes, as well as faster loading times in general once we finish with our changes.<br />
<br />
* Really substantial xml processing speed improvements during game load. These have to do with our checks to make sure that the xml is correctly formatting and we are importing all the proper nodes.<br />
<br />
* The way that attribute-checking is logged and verified is now vastly more efficient than it was, so again loading is faster in the initial part of the game.<br />
<br />
* The xml parsers that were able to give back a list of children no longer do; there are instead DoForChildren methods that don't require a hit to the garbage collector, and which also make it so that they don't have to be wrappered more than once.<br />
** This is substantially more efficient in several ways.<br />
<br />
* Instead of copying xml attributes and nodes from parents to children in partial records and copy-from records, these are now linked, and calls like GetBool() and similar are able to process through them much faster and with accuracy.<br />
<br />
* Added a new EqualsCaseInvariant() overload to strings based on ArcenUniversal.<br />
** It turns out that this is very slightly more efficient than doing a ToLower() and comparison to the lower-case version.<br />
<br />
* Our xml parsing now gives visible errors when trying to parse integers that are not valid integers. Before, it was just failing silently and returning the default value.<br />
** GetInt32List was removed from our xml parsing, as it was inefficient and not something we've been using in AI War 2 in general. This was generally used in some of our older titles.<br />
*** Same with GetInt16List, GetByteList, and GetFloatList.<br />
** Also, a variety of duplicative methods that were concerned with complaining if a value was missing-or-default have been folded into the main methods for getting from xml. We also now only complain if the value is outright missing, as in basically any case where the default value is specified that is an intentional thing.<br />
*** We have now removed the ComplainIfAttributeNotFound() method, since that was only used when we were looking at complaints about "missing or default, but actually default is fine." This makes for far cleaner code.<br />
<br />
* Our xml parsing of vector3s is now much more efficient, although we do not process those very often anyway.<br />
** Our xml parsing of FInts is now a bit more efficient, and that is processed extremely often.<br />
** Our xml parsing of enums is now a bit more efficient, and more normalized (same with FInt actually), as these are processed very frequently.<br />
*** One change that may affect mods is that FillEnumIfPresent has been removed, and is now just FillEnum. Assuming you pass in false to ComplainIfMissing, it will act as you previously experienced.<br />
*** Another is that FillEnumAndComplainIfDefault has been removed, so now you'd just use FillEnum and pass in ComplainIfMissing as true.<br />
**** This is technically a difference in functionality, because this only checks to see if something is missing, not if it has a default value (usually None or whatever).<br />
**** Generally speaking, our experience has been that if someone sets up a default value in xml explicitly, then they probably have a reason to do so. We've been having to work around this with reading in xml in general, and now it doesn't complain about explicitly-set defaults with other data types, either.<br />
**** This should not negatively affect anything current, as any xml that was "invalid" by the old standard would have been complained-about already and preventing clean game launch. Any new xml that is created in such a fashion is probably on purpose.<br />
*** We also got rid of GetStringAndComplainIfMissing(), which had basically the same sort of issues. Just use GetString() or FillString() and complain if it's missing, but if someone sent in an empty string from xml, they probably meant to.<br />
<br />
* The way that we were previously handling "custom data sets" on xml rows was incredibly slow as well as kind of brittle, particularly when it came to modding.<br />
** This is seeing an entire rework, with the pattern for getting custom data becoming far simpler (but also more powerful, as mods and copy-from and partial records will now work correctly in all cases).<br />
** First of all, the CustomDataSet class and all its methods have been removed in general. ParseCustomDataIntoSet() and GetCustomAttributeNames() have also been removed. Also the CustomDataLookup class.<br />
** Custom attributes are instead something that code is able to parse as-needed later on from the xml, and the "requested attributes" code just ignores anything that begins with "custom_"<br />
<br />
* The ExternalCoreConstants, which was not actually used for anything, has been removed.<br />
<br />
* Vector2 xml processing is now consistent with Vector3, whereas before it had only a subset of the capabilities.<br />
** Same with ArcenPoint.<br />
** AngleDegrees has instead just been removed, as it's not something we use and we can store that in different formats more easily.<br />
** Loading DynamicTableRows from xml has also been given full parity, and in addition to that they are now able to take empty commands now to set null instead of the prior row reference. This is a new ability.<br />
<br />
* We were previously using various forms of XmlElement (which is a built-in-class) manipulation in order to handle copy-from and partial records cases.<br />
** This was not appearing to work as expected, and at any rate is generally something that is probably pretty slow.<br />
** We are removing our TotallyReplaceContentsOf, CopyAttributesIntoBlanksOf, and CopyChildrenTo methods entirely.<br />
*** The CopyChildrenTo, which affects child nodes, had some notable strangeness that it was overcoming when nodes were being copied from one document to another (aka two different xml files). We just don't need that sort of hassle.<br />
<br />
* The ArcenXMLElement RawElement entry on ArcenDynamicTableRows has been renamed to be OriginalXmlData instead. <br />
** This is far more clear, and is going to be very key for the later forms of parsing that we're doing.<br />
** ArcenXmlElements now have private DirectParentsICopiedFrom and PartialRecordsLaterAppliedToMeInOrder variables that get set as-needed. Internal processing handles these properly so that end-user modders or developers don't have to think about these details.<br />
*** These help to ensure that data is applied in the correct order, as intended, and that the data can be reconstructed as needed.<br />
** HasAttribute() has been removed from ArcenXMLElement, and instead we have GetMostRecentAttributeValueIncludingParentsAndPartials() and GetMostRecentAttributeValueFromSelfOnly().<br />
*** This will seem inconvenient in a variety of places for modders, but it saves us a ton of extra read calls into a potentially expensive method (especially now that we properly handle xml inheritance). Just read the value once, if it's a string, and if it's blank or null then that's your answer. Or use any of the fill methods and just say you don't mind blank entries (or only do if it's not a partial record, your choice). It will fill things properly.<br />
** During the read of nodes, it now causes either RegisterMyDirectParentsICopiedFrom() or RegisterAPartialRecordAppliedToMe() to be called, and/or OriginalXmlData to be set.<br />
*** From looking at this, in the past versions, most likely OriginalXmlData (aka RawElement) was probably being overwritten improperly once a partial record was applied, and this was probably where our errors were coming from in parsing certain mods.<br />
** Additionally, if a single xml record is defined as being both a partial record and a copy-from record, it will now throw an exception. That should not have actually been the case on any, but now it should check on them properly.<br />
<br />
* On ArcenAbstractExternalData and its descendant classes, like ExternalConstants for instance, there is now an ArcenXMLElement OriginalXmlData property.<br />
** This one works just like the one on rows, although in this case it's just used for partial records, mainly (there are not child nodes, and there's only one root node in these files).<br />
** This then lets us make direct calls to GetCustomFInt_Slow() on the ExternalConstants singleton and similar in order to get "custom" xml data that is added belatedly, as we see for a lot of the faction data and mod data.<br />
** This particular change will require changes to most mods, as the CustomData by namespace and all that is replaced by far more direct and efficient calls here, now. Though if the results are checked with any frequency, you should still be caching them for sure.<br />
** We are using wrappered methods, rather than giving direct access to OriginalXmlData, in order to control error handling and make sure that if your mod is looking for a field and fails to find it, it will yell.<br />
*** Bear in mind these particular fields are not found at game launch, but rather whenever the faction or mod initializes. So typos are likely to be cause errors during first unpause with a faction present, rather than during load of the initial game like everything else.<br />
*** The extra error handling that is in this is absolute crazy, incidentally, so if you're not getting the result you expect, then you automatically get an entry in the log with the details of what was present so that you can figure out what your typo was.<br />
<br />
* With external constants and similar dictionaries, it now ensures that the base data is now read in before any partial records are read.<br />
** It seems like someone was referring to this being hard to mod, and this would likely solve that. At any rate, with our new more-strict reading this also became needed in general.<br />
<br />
* With the new XML parsing, the game does a far better job of reporting problematic data from xml (aka something like a floating point number being imported into an integer field).<br />
** Why this was not working properly before is a bit of a mystery, but it works now, which is the important thing.<br />
** There were several bits of rogue data that we've thus fixed, including the amount of extra intensity the scourge gets from human science amounts. This may have some balance impact on the scourge, as those values were probably previously reading in as zero.<br />
<br />
* Full list of data fields now corrected that were previously not reading in properly and thus probably affecting faction performance in some fashion:<br />
** Scourge difficulty:<br />
*** AllowedBuildersIncreasePerScienceUnit (was always 0 because of type mismatch)<br />
*** BuilderIncomeIncreasePerScienceUnit (was always 0 because of type mismatch)<br />
*** SpawnerIncomeIncreasePerScienceUnit (was always 0 because of type mismatch)<br />
** Human Resistance Fighters<br />
*** RatioForFriendlyPlanet (was always 0 because of a typo - RxatioForFriendlyPlanet)<br />
<br />
* In the event of partially-mangled data from entity systems, the game now does a bit better job of reporting clearly what the problem is with the xml and setting some general defaults rather than just starting in a completely invalid state.<br />
** This is most notably with a missing range being set on a system.<br />
** Additionally, we've added a new WriteSystemDataToLogDueToError() onto GameEntityTypeData, to let us see what the state of all systems on an entity are when a problem arises.<br />
<br />
* There was some funkiness in how some of the passive systems were looking for ranges that they did not need to have, in ComputeBalanceStats_OneTimeOnly(). Those have been corrected/<br />
** This is a case where we wonder how this was not causing errors in the past, but whatever. Again, it works now.<br />
<br />
* Further cases of fields that had malformed xml and thus did not read in properly:<br />
** Settings:<br />
*** Windowed Mode Window Height maximum (typo of case Max instead of max led to it being infinite rather than 7000).<br />
*** Kaizer's Marauders Marauder_DebugID, same typo of Max.<br />
*** Hidden field of FullscreenHeight, same typo of Max.<br />
*** Kaizer's Marauders Marauder_FireteamDetailLevel, same typo of Max.<br />
** AI Types:<br />
*** SimpleEnsemble was not having its type_Difficulty read in, because it should have been type_difficulty<br />
<br />
* The game now allows any fullscreen resolutions that your OS/hardware reports as being available.<br />
<br />
== Version 2.627 Hotfix ==<br />
(Released November 5th, 2020)<br />
<br />
* Hopefully make Warden fleet ships less likely to turn to the Hunter when in combat<br />
** Noticed by a lot of people<br />
<br />
* Make reconquista a bit less one-dimensional.<br />
<br />
* Fix a bug where the galaxy map was showing the wrong faction colour for enemy units.<br />
<br />
* Fixed a bug in the prior version where the scrollbars and scrolling in any dropdowns was not working.<br />
** Thanks to JonnyH13, Karchedon, and Badger for reporting.<br />
<br />
* The selected status of the stance buttons in the bottom left of the screen have been adjusted once again in order to be dimmer and less distracting.<br />
** Thanks to Metrekec and crawlers for reporting.<br />
<br />
* Balance Adjustments to Kaizers Marauders:<br />
** Changed the budget income modifiers per intensity to be based off the 0.4 + (AI income/1.5):<br />
** Also increased higher-intensity base defense buildup cap: Medium Intensity from 40 strength to 50 strength, High Intensity from 70 strength to 125 strength to make them more defensive.<br />
** When their budget was increased gradually to compensate for the high growth of strength that high-ranking AIs had it made them too powerful when fighting lower-intensity AIs.<br />
** Now, hopefully, Kaizers Marauder intensity roughly follows the same scaling as AI difficulty, but lower ranks are still supposed to expand further and by comparison are stronger.<br />
** When picking the intensity for Kaizers Marauders I suggest: Think about their most likely adversary (the AI) and their difficulty as a base line, potentially increase to compensate higher-difficulty AI types and other minor factions to fight.<br />
** Kaizers Marauders definitely need balancing feedback!<br />
<br />
== Version 2.626 Kaizer's Marauders ==<br />
(Released November 4th, 2020)<br />
<br />
* Underlying mechanics now available for mods, but not used by any units at the moment:<br />
** Added the Classic (AI War 1 style) Hydra regeneration and Hydra Head mechanics.<br />
*** Regeneration is done with: seconds_to_fully_regenerate_hull="" and starts after the normal repair delay.<br />
*** Hydra Heads are done with build_points_per_damage_taken="" and unit_to_make_with_build_points_from_damage_taken=""<br />
*** A head will spawn when build points = total health, / current mark + 1. So a MK1 unit will spawn 1 head at 50% health, a MK2 will spawn every 33%, MK3 every 25%, so on.<br />
*** Current bugs with Hydra Heads: Build points are not serialised and so are lost on load. If a unit with a damage bonus shoots one of these, only the base damage adds to Build Points, not the bonus.<br />
** Thanks to Puffin for adding this.<br />
<br />
* Drone Fleets (Support Fleets, but most importantly Hive Golems) will now load their drones if ordered so even if enemies are on the planet left.<br />
** Thanks to NR SirLimbo for implementing.<br />
<br />
* Journals now allow for the insertion of [playername] in them.<br />
** Thanks to Badger for adding.<br />
<br />
* The FRS now uses a different icon from ARS, to avoid confusion and make it clear what is what.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Combat Factories of all sorts no longer use normal drones like before (those aggro guard posts in an annoying way).<br />
** Instead, hidden drone launchers trigger if there are enemies within a certain range of the combat factories. Letting them defend themselves, but not aggro enemy guards just by being on their planet.<br />
** It's worth noting that existing savegames will still have both kinds of drones present -- those in the fleet, and those from the launchers. So they will be double-powerful but still annoying. Any new campaigns will just have the launchers properly.<br />
** Thanks to several people for bringing up this issue with combat factories, and Puffin for helping fix it.<br />
<br />
=== UI Reskinning Part 4 ===<br />
<br />
* There are still some little things we want to do with the UI, mostly in the "nice to have" category. The general overhaul is complete, in terms of improving things that were already there.<br />
** There are a VERY few cases where the old resource icons are used in text, but that should still be easy enough to figure out. We're going to sort that out with new icon-embedding capabilities sooner than later.<br />
<br />
* Fixed an issue where the border bar on the selected ships window would move up and down as that window got larger or smaller.<br />
** Thanks to Badger for reporting.<br />
<br />
* The glowing states of the following icons in the new UI has been dimmed some:<br />
** Attack move (leftmost item), pursuit mode, stop and shoot mode, hold fire mode, scrap button. Group move has been left alone.<br />
** Thanks to Metrekec, crawlers, and Isiel for suggesting.<br />
<br />
* We missed updating the map tab left panel in the lobby, but it now has a proper background and fonts.<br />
<br />
* Updated some prefab buttons so that things like the font in the Tips window now use the expected new font.<br />
<br />
* The visual style of dropdowns in the game has been updated to match the new style of buttons and other elements, and looks much more sleek.<br />
<br />
* The visual style of horizontal sliders in the game has also been updated to match the rest of the new stuff.<br />
<br />
* The tooltip backgrounds have in general been updated to look more like the rest of the new UI.<br />
** We are opting not to do specific graphics for the planets versus the ships, at least not built into the UI panels per se. We'll handle that stuff via image insertion in text, most likely.<br />
<br />
* The icons for metal harvesters, and energy generation sources, have been updated to the new icons.<br />
** Same with science (not used as a ship icon anyhow) and "metal to energy," which is.<br />
<br />
* Color improvements to notifications in the top bar.<br />
** Essentially, notification colors being based on the faction that is discussed is something that looks like it means something else. It looks like red is extra bad, or things like that. We are using color to mean something with the backgrounds and icons up there, and so the text also having color is just problematic unfortunately.<br />
** We are largely moving the color that was on the text to instead be in the tooltip text.<br />
** Astro train faction color moved from notification text to tooltip text for notification.<br />
*** Ditto Dark Spire VG notification, although the timer colors are still there.<br />
*** Ditto Dark Spire Loci notification.<br />
** Things were fully changed with the color from the tooltip for the Dyson Antagonizer.<br />
*** Ditto exostrikes.<br />
*** Ditto exogalactic wormholes.<br />
*** Ditto AI eyes.<br />
*** Ditto raid engines.<br />
*** Ditto instigator bases.<br />
*** Ditto Zenith Trader.<br />
*** Ditto macrophages.<br />
*** Ditto AI relic trains.<br />
*** This was done previously for the Devourer.<br />
*** Relic search was already fine.<br />
*** Debris was already fine.<br />
*** Imperial Spire was already fine.<br />
*** Brownout was already fine.<br />
*** Nemesis was already fine.<br />
*** DLC2 AT civil war was already fine.<br />
*** DLC2 Nm were already fine.<br />
*** DLC2 Zm were already fine.<br />
*** DLC2 Zb were already fine.<br />
** AI Reserves are keeping their colors for now, in their countdown timer, but if it looks bad or you have feedback on them, please let us know with a savegame.<br />
*** The same is true for counterattacks. Additionally, the icon on these grays out when the counterattack is stalling. This may be confusing people, so we may change this up some.<br />
*** The same is true for hacking notifications. Please let us know if the timer colors look tacky, but the faction bit got moved.<br />
*** Also same for risk analyzers.<br />
** The planet attack notifications actually show the colors of the attacker and the defender, so keeping those makes a fair bit of sense. Let us know if it looks awful sometimes.<br />
** DLC2 AT warnings had some mild colorization based on severity, but we were already handling that with the background in recent versions, so the text color is now just always white.<br />
** Overall we need to do more things with the notification icons themselves very soon. This has been on our list since prior to DLC1.<br />
<br />
=== Additional Space Backgrounds By Puffin ===<br />
<br />
* Thirty new space box backgrounds for planets created by Puffin have been added to the game.<br />
<br />
* Six new space box backgrounds for the galaxy map created by Puffin have been added to the game.<br />
<br />
=== Revised AIP Mark Level Thresholds By Difficulty ===<br />
<br />
* The AIP amount required for an AI to go to a higher level used to be as follows: https://bugtracker.arcengames.com/file_download.php?file_id=15174&type=bug<br />
** We are making the following changes:<br />
*** Mark 3:<br />
**** Diff 4: 295 from 305<br />
**** Diff 5: 275 from 295<br />
**** Diff 6: 255 from 285<br />
**** Diff 7: 235 from 275<br />
**** Diff 8: 215 from 265<br />
**** Diff 9: 195 from 255<br />
**** Diff 10: 175 from 245<br />
*** Mark 4:<br />
**** Diff 4: 470 from 480<br />
**** Diff 5: 450 from 470<br />
**** Diff 6: 430 from 460<br />
**** Diff 7: 410 from 450<br />
**** Diff 8: 390 from 440<br />
**** Diff 9: 370 from 410<br />
**** Diff 10: 380 from 420<br />
*** Mark 5:<br />
**** Diff 5: 650 from 670<br />
**** Diff 6: 650 from 660<br />
**** Diff 7: 640 from 650<br />
**** Diff 8: 620 from 640<br />
**** Diff 9: 600 from 630<br />
**** Diff 10: 590 from 620<br />
*** Mark 6:<br />
**** Diff 5: 810 from 820<br />
**** Diff 6: 800 from 810<br />
**** Diff 7: 790 from 800<br />
**** Diff 8: 780 from 790<br />
**** Diff 9: 770 from 780<br />
**** Diff 10: 760 from 870 (the original was an error in general)<br />
*** Mark 7:<br />
**** Diff 6: 1100 from 1110<br />
**** Diff 7: 1080 from 1100<br />
**** Diff 8: 1060 from 1090<br />
**** Diff 9: 1010 from 1080<br />
**** Diff 10: 980 from 1070<br />
** Thanks to Ovalcircle for reporting the discrepancy, and to Badger for suggesting these numbers get a bit of a look in general.<br />
<br />
=== New Included Mods By NR SirLimbo ===<br />
<br />
* Uploaded the AMU (AI War 2 Modding Utils) and Kaizers Marauders mods.<br />
** Kaizers Marauders is a new spin on an old faction gone, for lack of a better word, insane. Expect an entirely new Marauder minor faction with its own unique ships, turrets, superstructures, new and improved raiders and tons more. The forum thread is here: https://forums.arcengames.com/ai-war-ii-modding/mod-kaizers-marauders/<br />
*** It started out as a request to the AIW2 devs to include journals. So I wrote some mods. Months later it's turned out to be a full rework with TONS of special stuff added and everything is in - except for a hand full of journals. Wow.<br />
*** Some highlights: Unique Marauder ships, turrets, forcefields, etc. Most of these can be acquired by the player for themselves.<br />
*** Some featured mechanics: A realistic metal economy, defectors, super-smart fireteams, tech upgrading, and even an alternate victory condition.<br />
*** For more check the forum thread.<br />
** AMU is a requirement for Kaizers Marauders and consists out of modding functions to be used by various other mods, even further reworks I'm planning todo, as well as any other modder. It will get a full documentation and forum thread, but for now simply ping me on discord (-NR-SirLimbo) for debugging it. A partial documentation is already distributed, along with the C# project itself.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed Lone Wolf fleets being excluded from the ability to load ships. If for whatever reason (mostly mods) ship lines end up in Lone Wolf fleets they will now obey loading/unloading orders entirely and not hug the centerpiece perpetually<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Updated StarKelp Civilian Industries for the latest version of the game.<br />
* Fixed a race condition that could occur when setting militia caps.<br />
** Thanks to various people for reporting, most notably SirLimbo.<br />
<br />
* Fixed multiple places not having reservations for Lone Wolf fleets (both officer and golem):<br />
** CalculateContentsCount(bool IsForNetworkSyncCheck)<br />
** CalculateHasAnyContents()<br />
** GetStrengthOfContentsIfAny()<br />
** GetEnergyCostOfContentsIfAny()<br />
** Noticed and fixed by NR SirLimbo when unloading a fleet of Kaizer's Marauders-boarded ships began to cause brownouts...<br />
<br />
* For Extended Ship Variants: Fixed the Strike Wing having its damage bonus based on target time on planet, not its own time<br />
** Thanks to zeusalmighty428 for wondering why it was raid tech<br />
<br />
* Put in a fix for various of the new shaders for UI glows logging "doesn't have _Stencil property" warnings logged into the player.log.<br />
** We aren't actually using this property, but then again we're not allowing for these buttons to interact with stencils and masks and so don't need it.<br />
** Thanks to Puffin for noticing this.<br />
<br />
== Beta 2.624 Revised Resource Bar ==<br />
(Released October 30th, 2020)<br />
<br />
* When AI units with Metabolization kill something, the AI now uses its extra metal to boost its reinforcement budget<br />
** Prompted by a discord conversation led by TechSy730<br />
<br />
* Tsunami CPAs are now the default.<br />
<br />
=== Roguelike Changes ===<br />
<br />
* By default, the Esc menu no longer tells you what factions are in the galaxy until you actually encounter them in game. The goal is to give the game a stronger feeling of exploration and finding the unknown. <br />
** You can have the old behaviour by enabling the Always Show Factions option under Scouting in the game lobby<br />
<br />
* Add a new Quickstart, "The Rogue Badger" taking advantage of this. You won't know what factions are in the galaxy till you find them<br />
** Please don't load this quickstart into a game lobby or it will ruin the surprise.<br />
<br />
=== Quality of Life ===<br />
<br />
* In an ARS, GCA or fleet you could capture, the number of ships for a given ship line is now coloured to let you know how good the roll was<br />
** If the number is a bright green you rolled close to the upper-end of ships you could have. If its a dark green, you rolled closer to the lower end.<br />
*** Only applies to newly started games<br />
** Thanks to ParadoxSong for pointing me in this direction<br />
<br />
* Capturable flagships adjacent to the player homeworld will always get good RNG with how many ships it has. <br />
** The goal is to make sure the player gets something to be excited about early. Also to make it harder to have games that are screwed by bad RNG<br />
<br />
* The selection window now shows the strength of the selected units<br />
** Thanks to TechSY730 for suggesting<br />
<br />
* Improve the hovertext for factories for more clarity. The name of the fleet now indicates how many losses it needs to rebuild<br />
<br />
* Improve the AI Reserves notification<br />
** If there are no wormholes spawned, it gives you the countdown of seconds until a wormhole spawns<br />
<br />
* Autosaves are now in a more readable format<br />
<br />
* The objective hovertext for ARSs is now in a better style<br />
<br />
* If you double-click a fleet's keybinding while in the galaxy map, it now centers the galaxy map at that fleet<br />
* Clicking a Planet Under Attack notification from the galaxy screen, it now centers you on that planet<br />
** Thanks to Vortex for these two bug reports<br />
<br />
=== UI Reskinning Part 3 ===<br />
<br />
* The bottom left icons on the main screen are no longer quite as glowy when you are not hovering over them. They light up the same amount while hovered, though.<br />
** The idea is to make it less visually distracting when you are just checking the game clock.<br />
** Thanks to Badger for suggesting.<br />
<br />
* The ship selection UI has been updated so that the icons are the same as before, but they now have similar glowy appearance to the buttons in the bottom left of the screen.<br />
** The "hotkey indicators" are now colored to match the button's general highlighted color, but the baseline color is now that same dull blue rather than bright white like it was before.<br />
** When these are highlighted, they now glow brightly in their specific color, and if they are moused over the same thing happens.<br />
<br />
* The sidebar backgounds have been reworked to better function with the different heights that they can all have, rather than looking really wrong and off when stretched.<br />
<br />
* In the top bar, the galaxy map icon has been reworked, and now looks like a galaxy rather than a map pin. It also now glows and reacts to mouseover.<br />
** The hover for the planet name now also highlights the background of that button in the top bar in general.<br />
** The metal icon has been replaced (anvil becomes metal pieces).<br />
*** Note that metal harvester icons still need to be updated, and metal icons in text.<br />
** The energy icon, and science icon, and hacking icon, and threat icon have also all been updated.<br />
** The old threat icon is the new AIP icon.<br />
** Thanks to Badger, Puffin, -NR-SirLimbo, Tzarro, and zeusalmighty for all helping figure these out.<br />
<br />
* The various fonts in the sidebars have been updated to be more legibile at smaller sizes in particular.<br />
** Some were returned to the way they previously were, others are new.<br />
** Thank to Strategic Sage for reporting the grainy appearance and eye fatigue with the other new bits we tried.<br />
<br />
* In the top resource bar, all of the text and numbers are in a new font that is a bit clearer and quicker to read.<br />
** In times where the metal would say "Starving" in the past, it now says "Drain" to save space.<br />
<br />
* The hacking and tech sidebars now use the correct image, and also react to hovering with a glow.<br />
<br />
* The background from the load menu has been kept the same, but is now vastly darker rather than being bright and in your face.<br />
<br />
* The background for the save menu has been made to match that of the load menu, and is also now darker like the other one is. The other one was particualrly tacky and distracting.<br />
<br />
* Fixed a minor issue with the notifications not being properly rounded up in the top area.<br />
<br />
* The game has been updated to actually set and use the fancy new priority level backgrounds for the notifications in the top bar.<br />
** Bear in mind that this is something that we may tune over time based on feedback, in terms of what gets what notification priority level.<br />
** The notifications are now sorted by priority level from OMG, major, medium, minor, informational, and then hacking, prior to whatever the rest of their sorting would be.<br />
<br />
* Wave notifications (of various sorts) now have the following notification levels:<br />
** All CPAs are major for now.<br />
** Any waves against not-a-player that are shown are considered minor for now.<br />
** Reconquest waves are all major for now, unless they are not aimed at the player.<br />
** If a wave isn't one of the above and also is not targeting a planet, it's considered minor for now.<br />
** If a wave is headed to a planet, but that planet isn't allied to the local faction or has no owner, considered minor for now.<br />
** If the wave is weaker than 2/3 of the combatants friendly to the local faction at the planet, then this is minor.<br />
** If the wave is stronger than 200% of the combatants friendly to the local faction at the planet, AND this is a player home planet then this is OMG.<br />
** If the wave is stronger than 150% of the combatants friendly to the local faction at the planet, then this is major.<br />
** Otherwise this wave is considered a medium priority.<br />
<br />
* Regular notifications that are created by whatever other means are now required by code to specify their priority level when they are being created.<br />
** Those shake out as follows for now:<br />
*** AI Reserves notifications are always major for now, given reports on the difficulty of these by players lately.<br />
*** Dark Spire vengeance strikes and loci are medium and major respectively.<br />
*** Dyson antagonizers are major.<br />
*** Nanocaust frenzies got removed from the code, since those aren't a thing since fireteams anyhow!<br />
*** Wormhole Invasions are always OMG level at the moment, we may adjust this.<br />
*** Devourer Golem is informational if it's on a planet that is not owned by anyone or which is not friendly to you. It's minor if it's on a planet of you or ally.<br />
*** Zenith Trader is always informational.<br />
*** Hacking events are hacking priority.<br />
*** Spire Relic Train is informational, and so are risk analyzers.<br />
*** Spire relics and debris are also informational. Same with imperial spire.<br />
*** Brownouts are OMG.<br />
*** Macrophage of 4 or more are medium, less than that are minor.<br />
*** Enemy nemesis is OMG, allied is now shown for the first time and is informational.<br />
*** DLC2 NP move is informational.<br />
*** DLC2 AT expansion is medium, civil war of it is major.<br />
*** DLC2 ZM mnrs > 0 is major, just probes is medium.<br />
*** DLC2 ZB are medium, unless all are in flight in which case are informational.<br />
*** When your planet is under attack, the priority is normally medium, unless:<br />
**** If it's a human homeworld, and enemies outnumber you and allies, then it's OMG.<br />
**** If it's a human homeworld, and enemies are more than 50% of your strength, then it's major (just in case).<br />
**** If it's a human homeworld, and enemies are less than 10% of your strength, then it's minor.<br />
**** On non-homeworlds, if you and allies are outnumbered 2:1 in strength, it's major.<br />
**** On non-homeworlds, if enemies are less than 50% of your strength, then it's minor.<br />
*** Exo strikes are major until they are 95% charged, at which point they turn OMG. MDC exos no longer exist (they do something cooler), so the code for that is just scrubbed.<br />
*** Raid engines are medium, unless they are targeting a non-player faction in which case they are informational.<br />
*** AI Eyes, since they don't spawn anything, are rated minor.<br />
*** Counterattacks are:<br />
**** Minor if they are stalled<br />
**** Still minor if the strength of the counterattack plus all local enemies at that planet is less than all the local allies and own ships at that planet (aka you are outnumbering even if the counterattack launches).<br />
**** Major if the strength of all those enemy forces noted above is at least twice what the allied local forces mentioned are.<br />
**** Medium if it's in the middle range.<br />
*** Astro Trains are generally minor, but if one is headed to a depot that does something once X number of trains have reached it, and there X-1 trains have already reached it, then it jumps up to major.<br />
*** Instigators are generally medium, but if a given instigator has done its thing at least four times, then it upgrades to major status.<br />
** Huge thanks to zeus for suggesting most of these, and Badger for helping figure out details, and Ovalcircle and DEMOCRACY? DEMOCRACY! for helping a ton also. And Puffin!<br />
<br />
* GetIsHostileTowards(), GetIsNeutralTowards(), and GetIsFriendlyTowards() on the planet faction now take in variants with a faction directly.<br />
<br />
* On planets, there is a new GetStrengthOfFactions_HostileTo() that gets the strength of all enemies of a faction at a planet.<br />
** There is also a GetStrengthOfFactions_FriendlyTo(), which lets a faction include itself in that total or not, as well.<br />
** There is also a new GetStrengthOfFactions_Self() that gets it just for the faction in question.<br />
<br />
* Fixed a pair of typos with astro train journals not firing properly.<br />
<br />
* The devourer golem no longer shows its warning with the color of its faction directly in the notification. That blends really poorly now in general.<br />
** In the tooltips it will now show that, but with deep blue in the tooltip it was a blurry smudge. We will have to make some more changes to notifications over time to make this all more clear.<br />
<br />
== Beta 2.622 Hangar Ship Diversity ==<br />
(Released October 28th, 2020)<br />
<br />
* Fix a typo in one of the Tips for returning players<br />
** Thanks to Breach for reporting<br />
<br />
* One can no longer manually click on a ship with active repair-delay and get your engineers to repair it<br />
** Thanks to Arides for reporting<br />
<br />
* Exos that are being sync'ed with Wormhole Invasions or CPAs now always have a notification<br />
<br />
* Slightly improve the nanobot center hovertext<br />
<br />
* The Esc menu now shows the "Display Name" of the map type instead of the "Internal Name"<br />
<br />
* Slight buffs to the AI on intensity 10. The goal is a bit more raw power.<br />
<br />
* Fixed a bunch of cases of "address" being spelled with three Ds.<br />
** Thanks to Ovalcircle for reporting.<br />
<br />
* CPAs are now a bit smarter at detecting when they planet they were going to is no longer relevant. CPAs for higher difficulties (AI difficulty >= 8) are now better at focusing their forces.<br />
<br />
* Add a new Game Lobby setting to prevent Beacons from spawning in the game<br />
** Intended for people trying for Pure 10 runs, and for anyone who hates beacons<br />
<br />
* Add a setting for 'Hide Undiscovered Factions from Esc menu'.<br />
** This is mostly for people who like surprises and have a poor memory of what was going on in their games<br />
<br />
* If some piece of UI doesn't load properly, the main menu should no longer freak out and throw endless errors.<br />
<br />
* If you are adding a new faction in the game lobby and that faction has the same FactionCenterColour as an existing faction, the new faction gets a random colour<br />
<br />
=== Astro Train Changes ===<br />
<br />
* Astro Trains now count as 'Large Ships' for the 'planet in combat' notification hovertext<br />
<br />
* Astro Trains get fewer guards. Guards now attrition (quickly) if their train is dead, and they attrition slowly if their train is on a different planet<br />
<br />
* Astro Trains are now better at heading to their Stations, and not getting distracted<br />
<br />
* This section thanks to feedback from GreatYng<br />
<br />
=== Refinements To Main Menu ===<br />
<br />
* The reflection probe on the main menu is now located more to the side, so that it is not in the path of ships that go flying through out. <br />
** This makes it so that the reflection of the ships is shown, but there is not a giant flash on the entire screen as a ship exits the view.<br />
<br />
* The AI War 2 and Arcen Games logos are now subtly on the wall in 3D in the background on the main menu.<br />
<br />
* The old ship that was being used for the main menu animation in yesterday's build is no longer used at all. That was a junky dark ship that was never actually used in the game.<br />
** Now we are using spiders, bombers, raiders, and MLRS corvettes.<br />
** There are two different animations for each one leaving the hangar, and the quality of the animation is now higher, as well.<br />
** The overall idea here is to give a lot more of a sense of life and personality to the scene, and make it clear that these are multiple ships launching instead of just one repetitive animation on loop.<br />
** There are also now point lights on these ships, which helps give even more of a dramatic bit of motion that interacts with the rest of the scene as they exit the hangar.<br />
<br />
* Added a new ArcenFramerateTracker that now let's us track the framerate of the game at any time. We've previously been tracking sim performance, but not the actual framerate.<br />
<br />
* Also added a new ArcenCutscenePerformanceManager class that lets us react to poor framerates during a cutscene by reducing the reflection probe load.<br />
<br />
* On the main menu, next to where it shows the amount of time it has taken to load the game, it now also shows the FPS of the game on the main menu.<br />
<br />
=== UI Reskinning Part 2 ===<br />
<br />
* Fixed an unsightly bit of extra partially-transparent white pixels in the corner of the rounded menu backgrounds.<br />
<br />
* The textbox used throughout the game has been updated to look much more attractive than it has in the last few beta versions.<br />
** Actually, then we updated it yet again to make its construction vastly more complicated, but to show the halftone pattern undistorted, the borders cleanly, the interior drop shadow properly, and all that at a variety of sizes as need. Whoof, that took forever.<br />
<br />
* Updated fonts on the tutorial screen, and the background to help differentiate it more from the other similar screens.<br />
** And gave the same treatment to the load quickstart window, but with a different background that is more golden and different shapes to help tell this one apart from others.<br />
** And also the load game menu, where it looks like a bunch of microprocessors and similar.<br />
<br />
* The following windows have had their fonts updated, but no special backgrounds as they are not used all that frequently and don't need differentiating:<br />
** Controls window.<br />
** Credits window (also updated it so that the names on the right-hand screen are not cut off).<br />
** Kickstarter backer credits window.<br />
** Background story window (this also has been updated to have a more readable and better-sized font for the central story).<br />
** Add/edit profile window.<br />
** Color picker (team and border based).<br />
** MP client connect by IP and List windows.<br />
** MP client connection status window.<br />
** Same for the two general "popup list option" window components.<br />
<br />
* The chat/log window has been updated like the others, but also with a dark blue background in there to set itself apart a bit more.<br />
** The factions window has also been updated and has a new different background, but it's a very subtle one.<br />
*** The sectional factions and galaxy options tabs in the main menu has been updated to match a combination of this and the chat window, since it incorporates elements from both. This really helps to make them stand apart.<br />
**** The standalone chat on the right in the map tab in the lobby in multiplayer then matches the chat colors and such from THAT.<br />
** The personal settings window now has different visuals, slightly, from the galaxy-wide settings menu. Again to help with people knowing where they are at a glance.<br />
*** The tips window also now has its own variant off the personal settings.<br />
** The settings sidebar popout has also now been updated (this is mainly used for fleets, but can be for other things also).<br />
<br />
* The notifications images have been updated a bit to have a slight bit of extra detail in their background.<br />
** These also now have different background images that we can swap in for minor, medium, major, OMG, informational, and hacking events.<br />
** Right now all the notifications are just set to medium, but we will hook them up to use different backgrounds later.<br />
** Thanks to Badger, zeus, Tzarro, Ovalcircle, and NR SirLimbo for helping figure these out.<br />
<br />
* Updated the visuals for tabs, and the top bar in general in the lobby.<br />
** Also updated the tabs on the left of the main screen to match this new style, including slightly different spacing for the tabs themselves.<br />
** Updated the build sidebar's fonts slightly, and in general its backgrounds and so on.<br />
** Same for the fleets tab.<br />
** Same for the hacking tab, except for the header part that has the hacking icon. That bit will be updated later. The button color here has also become green.<br />
** Same for the journal tab.<br />
** And outguard tab.<br />
** And intel tab.<br />
** And science tab. Here again the header icon has not yet been updated.<br />
** And the planet tab. Later there will be many updates here, but those will have to wait.<br />
<br />
* The selected ships window has been updated except for its icons, which are going to be replaced and improved.<br />
** Same for the main header resource bar in the game.<br />
** These will get some more work done on them tomorrow.<br />
<br />
== Beta 2.621 Gorgeousification ==<br />
(Released October 24th, 2020)<br />
<br />
* It is now possible to set up material swaps on a list of images related to a given button, which in turn lets us make the glows more intense or even different colors.<br />
** We're now using this for the buttons in the lower left corner of the main view, so that as you hover over them it's super clear what you are hovering over. This feels far more interactive, and has a lot more in common with what we are doing with other buttons elsewhere in the game.<br />
<br />
* Added a new "pre-canvas LDR camera" that makes sure to do a no-algorithm tonemapping from the HDR range to the LDR range.<br />
** This essentially does add an extra compositing step, but makes it so that anything that might peek into the HDR range from things like hovering over certain faction icons can't possibly interact with the new bloom effect that is used for buttons.<br />
** Because we have a number of special extra cameras for things like the effects where we have not scouted or don't have current intel, this was the cleanest way to make sure that nothing else goes wrong.<br />
** Thanks to NR SirLimbo and Puffin for reporting.<br />
<br />
* The asteroid belt ring that goes around the playing area on planets has been updated so that it has full lighting effects on it, with a dark side and a light side that also matches the direction of the sunlight hitting the planet.<br />
** On dark starfield backgrounds, you'll mostly just see the brighter side of these asteroids, but you'll still finally be able to see them.<br />
** On light starfield backgrounds (lots of nebulas), you'll mostly see the shadowed side, which then looks a lot like before.<br />
** On areas of transition and contrast, you still have something to visually pick out in either situation.<br />
** Thanks to a lot of folks for reporting this over the years. I tried this a while ago and couldn't get it to look acceptable, but this time it worked out.<br />
<br />
* The timer text in the bottom left corner of the main view is now a bit smaller so that it can hopefully always fit its contents in there.<br />
** Thanks to NR SirLimbo for reporting. <br />
<br />
* The new background image behind the right window in the escape menu was actually too far forward, and was also set as a raycast target. Consequently, it looked slightly wrong and also caused the scrollbar to not be clickable.<br />
** Thanks to Badger for reporting.<br />
<br />
=== Revised Key Scenes ===<br />
<br />
* The victory screen has been completely overhauled in terms of the visual background style, and the fonts used, and the composition of where text is, etc.<br />
** The overall color scheme and the visuals are based on what the main menu has been for the last few years, except it's more dramatic than before in the sky and the lighting.<br />
** We were fond of that old main menu screen, and so wanted to keep it around in some fashion, but also to make it more dramatic in a way that is fitting for a victory screen.<br />
** We were NOT fond of the old victory screen visuals, so those are just tossed out.<br />
<br />
* Fixed a typo in the victory text.<br />
** Thanks to Venger for reporting.<br />
<br />
* The loss screen has been pretty cool for a while, and it was based on an even older version of the main menu (go figure), but it still needed some work.<br />
** First of all, the armada in the background has been repositioned and also doubled in size, to better fit with the composition of where the AI overlord is located and not distract from certain other elements of the image.<br />
** Secondly, the background visuals are far more vicious and red and angry, and have even more visual interest, in terms of how and where they are positioned.<br />
** Thirdly, the blue planet now has an even stronger glow off its atmosphere, but more pale and more in the background.<br />
** Fourth, the lens flare and glare has been turned off of the bloom effect being used here, to keep things more consistent with the rest of the game.<br />
** Lastly, the text has been moved around a fair bit, and the fonts changed and button repositioned, etc. It's more similar to the loss screen, but not the same.<br />
** This screen is not the super most legible text, just by nature, but it's at least attractive now and it definitely is readable. But if any screen is going to cause a bit of eye strain while reading, it's this one. We figure that's okay, as you don't really need to read the parts that would be at all that way, anyhow.<br />
<br />
* The main menu scene is now completely overhauled, and shows a scene from inside the hangar of one of your fleet leaders.<br />
** This ship is moving around in such a way that the starfields outside are spinning past, and you can see the reflections of these, and the planet that goes by, affect the dark metals of the large ship you find yourself inside.<br />
** Through the floor, ship after ship is raised up from the bowels of the structure and accelerated out into space. Those who have been playing the game for a really long time will recognize this ship from being the "mascot ship" on the main menu 2-3 years ago. It had the game logo and company logo in 3D on the side of itself back then, but no longer does.<br />
** As part of this change, now that this scene is so much darker than the old main menu, the buttons fit in better in general. We are no longer tilting those backwards in order to make them fancier. It has always introduced aliasing issues around the edges of those buttons.<br />
** To make the ship move and accelerate properly, we have now integrated Slate Cinematic Sequencer by Paradox Notion. We've had that for years, but never had anything worth integrating it for in this project. We're aware that Unity Timeline exists, but this was a quick and familiar thing.<br />
** This overall scene is pretty heavy, so if it's causing lag on the main menu, please let us know.<br />
*** On an i7 from 2016, and with a GTX 1070, at the moment we seem to only be getting around 40fps, which is a surprise. In earlier testing with this scene we were getting 130fps or so.<br />
*** We're not sure if this is related to the Slate cutscene stuff, which was the most-recent-added, or if it's something else that we're not clear on. At any rate, the realtime reflection probe at a really high quality doesn't help matters, but boy is it gorgeous.<br />
** At the moment, the main menu scene (after the loading scene, which is the same as it has been for a really long time) does not include the AI War 2 logo or any other logos.<br />
*** Later it would be nice to include the main logo and expansion logos, but perhaps integrated into the scene in some fashion.<br />
** Overall this, plus the changes to the other two scenes, are requiring about 300MB more disk space, and something along those lines in terms of RAM. It doesn't have any effect on the speed of loading the game.<br />
<br />
== Beta 2.620 Hotfixes ==<br />
(Released October 24th, 2020)<br />
<br />
* Fixed an error in the most recent beta where the lobby was broken if you didn't have DLC2.<br />
** Thanks to cml and UFO for reporting, and Puffin for pointing us to where the issue was.<br />
<br />
* Fixed a known issue from the last beta where the settings and chat visible buttons in the lower left corner of the main screen were not working.<br />
<br />
== Beta 2.619 Quality Of Life And Polish ==<br />
(Released October 23rd, 2020)<br />
<br />
'''Since there are many visual changes in progress, to save confusion this is only on the beta branch on steam and gog right now.'''<br />
<br />
* Marauder Outposts now have more health<br />
<br />
* The faction list of the Esc menu is improved. It is now sorted for easier reading, and the 'allegiance' section of the Esc menu is color coded and simplified.<br />
<br />
* Updated the galaxy map camera view to now use a 4-camera stack instead of a 3-camera stack. The new camera on the stack is just for rendering the space background, and it now uses a field of view of 60 rather than 40 so that it has the proper perspective and scale on those background starfields and nebulas versus seeming super zoomed-in. The field of view of the map parts itself remains at 40, to avoid distortion on them.<br />
** Thanks to Puffin Emeritus for suggesting.<br />
<br />
* Harmonic turrets must be fully constructed in order to apply their "Strengthen other harmonic turrets" buff. Turrets under construction no longer count, and neither do remains<br />
** Reported by ArnaudB<br />
<br />
* Updated Harmonic mechanic to be able to increase per Mark. Harmonic turrets gain 10% of the original value per Mark.<br />
<br />
* Vengeance Generators now prioritize other VGs close to deploying ships when sharing energy. The goal is to get multiple battles going at once. Also improve the hovertext for VGs with some colour<br />
** Thanks for GreatYng for prompting<br />
<br />
* Astro Trains guards now spawn pre-stacked if appropriate<br />
<br />
* Add a new setting to not show the Dotted Lines between player planets and AI planets without wormholes. I like being able to see the colour gradient better.<br />
** Off by default<br />
<br />
=== Journal Tweaks ===<br />
<br />
* The game now does a better job of telling you when journal entries appear through their Chat text<br />
<br />
* When there are new journal entries to read the "Journal" tab on the sidebar now changes colour to make it easier to notice<br />
<br />
* Add a few journal entries for the astro trains<br />
<br />
=== UI Reskinning Part 1 ===<br />
<br />
* Textboxes throughout the game now go to an ellipsis if there is not enough room for their contents, rather than looping to a second line in a strange way. This rarely came up because of character limits.<br />
<br />
* When you go from hovering over a textbox to then clicking it, it no longer flashes a different color for a moment.<br />
<br />
* Designed some new UI shaders that allow for us to use HDR blooms on icons.<br />
** Added a post-processing stack bloom item on the GUI-layer camera that is specifically for anything that is still in the HDR range when it is post-processing there. <br />
** This should not apply to anything except the UI itself, since everything else should have been mapped back down to the LDR range by the tonemapping prior to now.<br />
** At any rate, this then lets us use, very selectively and carefully, some glows on icons and similar in the UI and have that behave properly and give a much better sci-fi effect.<br />
<br />
* We've been working on this all week, but at this point the various UI elements are about... maybe 1/3rd updated to a new and improved style.<br />
** The escape menu, and all of the popup yes/no windows, are all done. The main menu buttons area is done (but not the actual main menu scene in the background or the angled-buttons stuff).<br />
** New font selections for headers and buttons are done, but they're not universally applied everywhere yet.<br />
** The bottom-left corner buttons and timer on the main view is fully updated, but the sidebar and resource bar and selection windows and such are not at all.<br />
<br />
== Version 2.618 Astro Reserve Tuning ==<br />
(Released October 21st, 2020)<br />
<br />
* Add some warning text to the X map saying it has balance issues<br />
<br />
* Fix a bug where ai-allied factions like the scourge or marauders weren't correctly allied to things like Astro Trains. This was causing a number of issues, like 'Astro Trains never spawn'<br />
<br />
* CPAs will group-move more often<br />
** Suggested by Crabby on steam<br />
<br />
* Change the way Threat numbers for the resource bar are counted.<br />
** AI and AI-aligned factions (Instigators, CPAs. Not AI-Allied Marauders or the like) are the only factions that now count as Threat.<br />
<br />
* Add an Experimental setting under "Game" to allow Hunter ships required to go after a specific faction to go through other factions on the way<br />
** The most usual case was if you owned the center of an Octopus map, and the AI homeworld on one of the legs was building up Threat against a Nanocaust on another leg. The AI really didn't want to send attack you with its Anti-Nanocaust ships, so they would just sit around.<br />
** I'm not sure how well this works, and whether it has potential problems, so I'm making it an opt-in setting to get feedback.<br />
<br />
* AI Reserves ships now attrition much more slowly<br />
** Attritioning is done as a neat thematic, and also to make sure that the reserves will die if they can't get back to their wormhole, but it was going much too quickly<br />
** Thanks to GreatYng for pointing this out.<br />
<br />
* Fixed an issue where command stations and NPC fleet leaders could be seen to be in the new "stationary flagship" mode.<br />
<br />
* The new "stationary flagship" status now defalts to off, and for all savegames prior to this one will have them all set to off.<br />
** Thanks to Strategic Sage, Metrekec, Smidlee, Asteroid, TechSY730, crawlers, and others for weighing in on this.<br />
<br />
* For the included "Extended Ship Variants" Mod:<br />
** Fixed the Oculus not having a limit on the damage modifier, which meant that it could deal an amazing 1430x damage to them (assuming the 2.5x multiplier based on time also applies). A single Oculus Mark 7 could do 926,640 points of damage - per shot (120 x 5.4 x 1430).<br />
** Found by ArnaudB, when his Spire Great-Shield Emitter got eaten in an instant.<br />
<br />
* For the included "Extended Ship Variants" Mod and the Fallen Spire version as well:<br />
** General Change: The AI ship group weight of all variants was reduced by 50%. So now they should be spending much less budget on them, and more on base variants<br />
** The Void Bomber's full-invulnerability fortification effect has been nerfed<br />
*** It now only applies to shield, and reduces damage to 0.1% (so only 1 in 1000 points of damage applies). Shields were also buffed from 250 to 500 points.<br />
*** Hull was increased from 500 to 2500 to resist at least a bit of fusion damage, which (along with melee) is king against them<br />
*** The defense buff now activates at a range of 350 instead of 1000<br />
** The Vex Guard had its cost increased: AI Budget cost up a quarter from 80 to 100, Metal cost from 4500 to 6500 and Energy cost reduced from 800 to 500<br />
** Also from a discussion with ArnaudB on Discord.<br />
<br />
* For the included "Extended Ship Variants Fallen Spire" Mod and the Fallen Spire version as well:<br />
** Buffed the EMP Missile Frigate up again, increasing its paralysis potential<br />
*** The description now (accurately) states that it has 10 shots (instead of 5, it always had 10), but it now also gains 2 shots per mark level beyond 1 for a full 22 at Mark 7. This is because, as fights expand, more missiles will inevitably get shot down.<br />
*** The maximum amount of targets hit per EMP missile is 7 instead of 5<br />
*** EMP Missiles have an albedo of 0.6 instead of 0.3, making them immune to most tractor beams (if not all).<br />
*** The base cap has been increased from 1-2 to 2-3 ships, or from 2-3 to 3-4 ships in the Frigates-With-Support fleet template.<br />
<br />
==== Astro Train Buffs ====<br />
<br />
* Astro trains mark level goes up based on the number of trains spawned. When they begin spawning stronger variants the mark level resets to 1.<br />
** Previously the astro trains had just taken on the mark level of the AI, which meant it generally stayed low all the time. <br />
<br />
* The astro trains can now have Guards; each train can have some Guards who will deploy when there are enemies, and will return to the train when there are no longer enemies <br />
* Astro Trains can get more guards when they reach a Station. They also can heal a bit on reaching a station.<br />
** Guard strength increases based on trains killed (regardless of who killed the trains) <br />
** Guards are intended to make trains a bit harder <br />
<br />
* Astro Trains can spawn stronger variants after enough trains have been killed by the player <br />
<br />
* The largest balance change is letting the train mark level increase more readily. Guards are intended to be a bit of extra cool/flavour with some balance impact.<br />
<br />
== Version 2.617 Calming For The Nerves ==<br />
(Released October 16th, 2020)<br />
<br />
* Should now be a new Journal message for AI Relic Trains.<br />
<br />
=== Quality of Life Improvements ===<br />
<br />
* Add a new Galaxy Map Setting to change how the links look. Instead of using Red for "these two planets are hostile" or Blue for "these two planets are friendly", the game can now show a color gradient between the faction owners<br />
** The old style version is still available as an option.<br />
<br />
* There is a general problem with "churn" in ships and stacks being so fast that if you have many ships selected it was almost impossible to remove a status effect based off of a simple toggle.<br />
** Our overall logic was "if at least one of the selected items doesn't have the status, then add the status." But this gets intensely confusing, and we introduced transports that is part of why we made L be load and U be unload.<br />
** So let's revisit our older standing orders, too, because this is just problematic with trying to toggle them.<br />
*** G is no longer "toggle group move" it is now "Enable Group Move"<br />
**** You now have to use Ctrl+G to remove ships from group move. None of this toggling business!<br />
**** Additionally, on the interface for the game where it shows the icon under selected ships, right-clicking that button now removes, while left-clicking enables. The tooltips are updated to say all this. <br />
*** The same exact setup is now true for "Stop To Shoot Mode" and the K key, including its button and Ctrl+K and all that.<br />
*** Exact same thing again with "hold fire/disable" functions and the N key, and Ctrl+N, the interface button, etc.<br />
*** Ditto again for Pursuit mode and the V key.<br />
*** And a final ditto for attack-move mode and the X key.<br />
** This is something that has been reported since at the very least February, and even before that, apparently. Somehow or other this still frankly just slipped past our attention. The amount of information overload that we sometimes face is kind of intense when it comes to bug reports.<br />
*** But with that said, holy cow this was incredibly annoying. There's nothing like pressing a button and not having it do what you want to induce rage. We just don't really use these options all that much, or when we do they are with only one fleet selected, and it was working well in single-fleet situations. Something about multiple fleets in one selection was particularly throwing this off, but it's hard to be sure of the exact full reasons.<br />
*** At any rate, we're glad to have it fixed now, and thanks to folks for bringing this up again so that it finally registered in our attention properly. This feels like a major frustrating oversight.<br />
** Thanks to Strategic Sage, Asteroid, Arides, and TechSY730 for reporting.<br />
<br />
* The escape key no longer clears your selected ships and fleets. There really was no good use case for this, and it was annoying to at least some folks.<br />
** Thanks to Asteroid for suggesting.<br />
<br />
* If you are on a map that is large enough that you can zoom out so far that the "Icons By Planets Hides At Distance" setting kicks in (default is 1.5, but you can change that up to 10 if you prefer), then now it will still show any fleets or other on-galaxy-map-units that you have selected. Later we can customize other display modes to show things in this scenario in various ways.<br />
** Thanks to Asteroid for suggesting.<br />
<br />
==== Stationary Flagship Mode ====<br />
<br />
* New setting in the Ship Controls section of the controls: Hold To Give Orders To Stationary Flagships<br />
** Normally flagships that are unarmed will not listen to any orders that you give them. This is because usually you select their entire fleet, and you mean 'everybody but you.' <br />
** However, there are times when you definitely DO want to give them orders to move somewhere, perhaps transport some ships for you, and holding down this key while giving those orders will make them listen to you.<br />
** The alternative is to take them out of stationary mode, but this is far simpler. Movement orders on the galaxy map screen are always obeyed.<br />
** Default keybinding: control key.<br />
<br />
* The pre-existing "Flagship Movement Mode" option in the fleet options panel is now renamed to "Flagship Roaming" for the sake of clarity.<br />
<br />
* A new "Flagship Orders" option in the fleet options panel has been added.<br />
** It is either "Follow All Orders" or "Stationary Flagship Mode".<br />
*** Unarmed flagships are by default stationary, while armed ones by default will follow all orders.<br />
** Description in the tooltip:<br />
*** Some flagships are meant for fighting, while orders meant for hanging back. How far back is up to you.<br />
*** When this is set to 'Follow All Orders', it acts like any other ship in your fleet. This is great for Golems and Arks. Not so hot for unarmed transports.<br />
*** When this is set to 'Stationary Flagship Mode' mode, the flagship will just sit there and ignore all orders you give it. The assumption is that the orders are meant for the rest of the fleet.<br />
*** To override this while staying in stationary flagship mode, hold Control down while issuing orders to the flagship. It will follow them as if this mode was not even on. This is perfect for rapidly giving different orders to your unarmed transports and the rest of the fleet they are supporting. Movement orders on the galaxy map screen are always obeyed.<br />
<br />
* If a flagship is in this new stationary mode, then they will show up with the "guard" shield icon behind them, which we don't really use for other purposes much.<br />
** This should help players who are jumping right into this new version realize that something is going on when their ships are not listening to them.<br />
** When Ctrl is held, then this shield status icon goes away and whatever the normal status icon would be appears. This is immediate visual feedback of what is happening, and also lets you check to see that your flagship is indeed in pursuit mode or what have you.<br />
<br />
* When a flagship is in the new stationary mode, and you are not on the galaxy map (where that is irrelevant), the tooltip for the flagship now shows "Stationary Flagship Mode!" even in the super brief tooltip, and then has more details if you go to medium and then full detail.<br />
<br />
* This whole thing with the flagships sometimes rushing to their deaths has definitely been one of the most singularly-annoying things since we introduced the concept of fleets, way back in the middle of Early Access.<br />
** At first, more fleets than not had big weapons (Golems and Arks), so it seemed like less of a thing. But over time, it has become more and more annoying.<br />
** This was something we have thought about for a long time, but for whatever reason we never could come up with a good solution for it despite how much it annoyed us directly, let alone player reports.<br />
** Thanks to Strategic Sage, nas1m, Asteroid, and others for contributing to this discussion since last December, and then more acutely more recently when this solution was arrived at.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a bug where the AI Reserves journal message was playing incorrectly when loading a sufficiently old game save.<br />
** Thanks to Metrekec for reporting<br />
<br />
* Fix a typo in the AIP hovertext in the resource bar<br />
** Thanks to Puffin for reporting<br />
<br />
* Don't let Exos sync with a wormhole invasion if the AIP is too low for wormhole invasions<br />
** Thanks to NRSirLimbo for reporting<br />
<br />
* Fix a bug where the AI was telling you where its major structures are, even on unexplored planets<br />
** Thanks to TechSY730 for reporting<br />
<br />
* Add some defensive code to the DoOnAnyDeath code path for the player<br />
** Problems were reported here in several multiplayer games.<br />
<br />
* Fixed a bug in the nanocaust where any savegames that included them and which were from version 2.614 would fail to load in 2.616.<br />
** Thanks to Cyborg for reporting, although we also ran into it ourselves.<br />
<br />
* It turns out that in some older savegames, we already had the wrong data types on certain other objects, such as having DoomData on certain ships.<br />
** We fixed this in later versions of the game and had them become more strict with how they are loading the related data in order to now allow for this sort of wrong data to persist, but in turn this made some older savegames (from the 1.3x timeframe and prior) unreadable.<br />
** For those older savegames, we've now relaxed the restrictions to allow for the bad data to be read in, and it will throw a warning message as you load those saves but should still actually get them open properly (the example save that we have now loads fully).<br />
** Thanks to Strategic Sage for reporting.<br />
<br />
* Fixed an exception that could happen in certain circumstances after failing to load a bad savegame.<br />
<br />
* Further updates: after a savegame with old bad data is loaded in, it now discards that old bad data after it loads it. This has no effect on gameplay, it was data that wasn't being used anyhow. But this does make it so that if you save it in a newer version of the game and then try to load the NEW save, you aren't just right back in the same boat with it not loading the save because of that bad data.<br />
<br />
* Updated the TimeBasedPool class to no longer expand, but rather to start large and just use the parts that it needs, throwing any excesses away if there really are any that are that far out of bounds.<br />
** There was an exceptionally rare exception that could happen when shutting down the game or going to the main menu out of the game with the way it worked before, but much more common was some extra slowness in how it was having to resize arrays to handle those events in general. That is all faster now, and can't have that sort of exception.<br />
** Thanks to Endovior for reporting.<br />
<br />
* Also put in some changes to further distance ships from pooling, and somewhat start a road toward prepping them more for the new style of PKID generation.<br />
<br />
* Fixed a cross-threading exception that could happen in UpdateEntitiesShownAtPlanetDirectly() if you were on the galaxy map view and a ship died at just the wrong time.<br />
** Thanks to UFO for reporting.<br />
<br />
== Version 2.616 Stop Printing Money, AI! ==<br />
(Released October 14th, 2020)<br />
<br />
* Grappler Guardian balance updates from zeusalmighty, for those new units that come as a unique thing in the new AI Reserves mechanics Badger added yesterday.<br />
<br />
* Added a new Dire Singularity Guardian by zeusalmighty, for basically boss-level seeding in the new AI Reserves mechanics.<br />
<br />
* Fixed an issue where black hole generators that were not also on a ship with a gravitic core of some sort would not work.<br />
<br />
* Fix a bug where the scourge were spawning unlimited builders<br />
** Thanks to a number of people, including Sombre and ArnaudB for reporting. Thanks to Badger for fixing even after retirement.<br />
<br />
* Fix a bug where right-clicking a journal entry could cause an Exception<br />
** Thanks to Ahnold for reporting. Thanks to Badger for fixing even after retirement.<br />
<br />
* You can read all about [[AI_War_2:Sunset_of_The_Badger_Era#The_Badger_And_Puffin_Legacy|The Badger And Puffin Legacy]], if you like. Puffin retired earlier this year, and Badger is retiring now, so this is a good time to pay some respects.<br />
<br />
* The reinforcements seem to have a math bug in them, so we put in extra detail and formatting in how we export them.<br />
<br />
* Fixed a math bug in reinforcements that was basically "printing money" once the game really got going, and would let planets of the AI reinforce almost infinitely.<br />
** We're not sure if this is fully a new bug, but it has certainly found new expression in the new reinforcement logic.<br />
** This may have been an older bug that was somewhat suppressed by the old reinforcement logic, or it's a brand new typo, but because of how much code has changed it's hard to be sure.<br />
<br />
* For the first time, we now have a way for the budgets of the AI to dump their details to log files. What we found was a bit surprising and definitely horrifying.<br />
** First of all, for quite a long time, apparently the logic for partially-neutered planets has been horribly wrong.<br />
*** If a planet was neutered down to 1 reinforcement point, then the budget would be 5% of usual, no problem.<br />
*** If a planet had not lost any reinforcement points, then the budget would be 100% of usual, no problem.<br />
*** If a planet had lost some reinforcement points, then the budget would... be multiplied by whatever the number of reinforcement points are.<br />
**** So, you killed reinforcement points down to 4 left out of 7 original? Congrats, the cap is UP by 400%.<br />
**** The correct number should have been 57% of normal, and now that works properly.<br />
** Then there was a really harsh AIP multiplier that was being applied. It was adding far too much based on whatever the budget was, and larger budgets were more affected.<br />
*** Now it only adds budget for each AIP above 100, which is softer to begin with, and then it also only adds it based on 10% of the current running total, rather than on the entire running total.<br />
** Finally, there was a portion that was added based on time (number of 10 minute increments).<br />
*** This was also too harsh. This is now based not on the running total of budget, but 1/10th of it, instead. Making this also a much gentler slope.<br />
** None of these were new errors, but they were showing up now more because the reinforcement logic calling these budgets was so much more effective.<br />
** Without these in place, AND with the above actually-charge-me-the-budget fix in place, now reinforcements happen at a rate we would expect.<br />
** Thanks to ArnaudB and Crabby for the saves where we could verify it, and others also for reporting.<br />
<br />
== Prior Release Notes ==<br />
<br />
[[AI War 2: Sunset of The Badger Era]]</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:The_Paradigm_Shift&diff=42608AI War 2:The Paradigm Shift2021-04-02T08:44:19Z<p>Democracy? Democracy!: /* New Mod! Frigates Focus by CRCGamer */</p>
<hr />
<div>== Known Issues ==<br />
<br />
* Any bugs or requests should go to our [https://bugtracker.arcengames.com/ mantis bugtracker]<br />
** 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.<br />
** 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:<br />
*** Windows: C:\Users\username\AppData\LocalLow\Arcen Games, LLC\AIWar2\Player.log<br />
*** macOS: ~/Library/Logs/Arcen Games, LLC/AIWar2/Player.log<br />
*** Linux: ~/.config/unity3d/Arcen Games, LLC/AIWar2/Player.log<br />
<br />
* '''Multiplayer is in public alpha, as noted below.''' There is a [[:Category:AI War 2: All About Multiplayer|detailed multiplayer guide]] that we are working on building up.<br />
<br />
* Feel free to [https://discord.com/channels/240637654717300736/242012213580136448 join discussions on discord]!<br />
<br />
== What Does Multiplayer Beta Mean? ==<br />
<br />
[[:Category:AI War 2: All About Multiplayer#Initial Caveats And Related Resources|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.<br />
<br />
== What's this phase all about? ==<br />
<br />
Multiplayer is fully playable at this point, but still has a variety of glitches and doesn't have all of the features that we intend to have in the long term. So hence it still being in alpha status. But we greatly welcome folks to play, and hopefully give us reports on what is going wrong if something does go wrong.<br />
<br />
We expect to be to a fully-polished non-beta status for multiplayer in May, if things continue as they have.<br />
<br />
Our second expansion for the game, Zenith Onslaught, has a whole heck of a lot of it completed, but still needs more doing. Badger has done all of his parts for it, and has [[AI_War_2:Sunset_of_The_Badger_Era#The_Badger_And_Puffin_Legacy|retired like Puffin before him]], so at this point we are down to basically a one-person show again (me, Chris) on bugfixing, finishing multiplayer, finishing my parts of DLC2, and finishing the last of the kickstarter obligations. So if the schedule slips some, it's likely because I had trouble juggling that, or wanted extra time to make things truly shine, whichever. But at the start of this phase, things are feeling very positive.<br />
<br />
== Beta 2.767 ==<br />
(Not yet released -- we're still working on it!)<br />
<br />
== Beta 2.766 Huge Multiplayer Speed Boost==<br />
(Released April 1st, 2021)<br />
<br />
* Updated the civilian industries mod to be more correct in its description of when it was last updated as well as what level of tech support Arcen provides.<br />
<br />
* Fixed a bug where if you had some expansions or mods on, and used those to select certain lobby settings (AI types, battlestation types, etc), then you could get exceptions if you reloaded into the lobby after disabling the expansions or mods in question.<br />
<br />
* A few more balance changes for frigates.<br />
** Now gain an extra 10% range at marks 2, 4, and 6. Capping at 130% base range at mark 6.<br />
** Durability upgraded by an extra 0.2 base stats per mark level for a gain of 1.2 by mark 7.<br />
** This means that frigates at Mark 7 now have 7.7x base hull and shield values.<br />
** Thanks to CRCGamer for making these!<br />
<br />
=== New Mod! Frigates Focus by CRCGamer ===<br />
<br />
* This mod effectively rebalances a few things within the game for a different experience.<br />
* You will start with a fleet of frigates with revised starting fleets to choose from.<br />
* Some of the additional starting fleet options have requirements.<br />
<br />
* Please enable The Spire Rises (DLC 1), Zenith Onslaught (DLC 2), and More System Defenders (MOD)<br />
* This will grant all available options at the moment.<br />
<br />
* ARS Hacks will only contain available frigates.<br />
* Pre-seeded fleets will lean towards frigates heavily. Some strikecraft will appear now and then.<br />
<br />
* FRS strikecraft still remain available for fleet buffs.<br />
* Is Democracy? Democracy!'s worst nightmare.<br />
<br />
=== HUGE Multiplayer Speed Improvements ===<br />
<br />
* Our implementation of the main steam networking library now uses the no-nagle approach, so data sends more directly.<br />
** That's a judgement call for any game, but we need our data to get there faster and we already compact the messages that are okay waiting for up to 200ms (uhh... that's none of them).<br />
<br />
* Up until now, for multiplayer on Steam, AI War 2 has been using the new "connection-oriented" network library from Steam. This is one of four distinct libraries (one of which is deprecated) that Valve provides for getting data from here to there, and it's their newest one.<br />
** For folks not all that into networking details, essentially imagine it's like Valve has a racetrack (their hardware and network), and they have four different vehicles that developers can choose to use on said racetrack. One of the vehicles is old and basically only there for legacy purposes: so for a new game, there are three vehicles, and a single racetrack.<br />
** Each vehicle has a variety of customization options unique to it, for depending on how you will drive it. For instance, think of this like four wheel drive mode (worse gas mileage, better traction), or environment mode (way better emissions output, but worse performance). Each vehicle has different of these options, and different performance characteristics in general, is the bottom line.<br />
** What we've been using up until now has been the Connection-Oriented protocol, which is a vehicle that is very... reliable, is I suppose the main thing. It tries to emulate the TCP protocol on top of UDP, which is a pretty common goal in networking libraries.<br />
*** TCP is what runs all our websites, and it's an absolute terrible protocol that everyone hates and that is super inefficient. Games can't use TCP at all, but generally implement some form of "reliable UDP" (an oxymoron, but a useful concept) on top of UDP itself. Some of these work more like UDP, others work more like TCP, and all of them have their own quirks.<br />
*** Anyhow: we have been running it with the Nagle algorithm enabled, which was actually a terrible thing for our particular game. I programmed our network code in a network-agnostic fashion, and I already do the batching that makes sense. Nagle is all about putting a bunch of small and inefficient packages into larger packages... and it creates up to 200ms of extra latency if you don't have enough to fill a full load.<br />
*** All of these options are great, and none of them are "bad." But in the same way you don't try to race a dump truck in 4 wheel drive in the Indy 500, and you don't try to take a high performance racecar offroading, you have to pick the right options for your particular game. The Nagle algorithm is terrible for AI War 2, but probably a godsend for a lot of action games in particular. This connection-oriented protocol was not the best for AI War 2, but for a turn-based strategy game it might be perfect.<br />
** The particular problem with these tools, and trying to figure out which one to use, is that it's not always obvious exactly what the capabilities of each one are. And they are VERY different in terms of code. It's like thinking you can fly a small plane because you know how to drive a small car with a manual transmission; they both take some practice, and they don't quite equate.<br />
** We have now switched to providing both the now-Nagle-less Connection-oriented protocol from Steam, but also their more UDP-like "Peer to Peer" implementation.<br />
*** The P2P framework is pretty interesting, because it doesn't have much of a concept of the host and client even being connected. One just starts talking, and the other can opt to say "no, be quiet," but beyond that everything is at the game level. This is very nice, because my hope is that some of the random disconnections that a few people were having will thus go away. There's no connection to drop; we were talking 3 seconds ago, there was a blip, now we're talking again. Easy. Hopefully.<br />
*** The other benefit that the P2P framework has is that it supports multiple channels of data. In each channel, essentially there's a queue of messages. If you have packet loss or fragmentation, everything in the queue has to wait for the items before it to be re-assembled. This is the number one cause of stutter and lag.<br />
*** The benefit of using multiple channels is that for all of the heavy data, like the sync stuff, we can shove that on a channel that does not interrupt game flow at all. Meanwhile, on the main channel, comparably minimal information is sent back and forth between the host and clients. This doesn't lessen the bandwidth requirements any, but this DOES greatly lessen the load on the core critical data that needs to get passed back and forth to keep the game moving. In router design and network programming, this sort of thing is often referred to as traffic control, or quality of service control. Aka, if someone is watching Netflix, don't let that destroy the internet for everyone else in the house. That doesn't mean throttling, if you have enough bandwidth; it means just making sure everyone has a chance to get their data in the sort of timeframe they expect it.<br />
** So! The P2P framework is now the default, and it already seems vastly faster. We are leaving the connection-oriented mode around, just in case someone has a problem with peer to peer and how it functions. But we anticipate that, especially as we start adding channels (that the connection-oriented version will just stuff all in a single channel, sadly), the gap will widen even more. If that's the case, and things are working well for everyone, then the connection-oriented version will just be phased out.<br />
<br />
* The game now supports multiple network channels for networking data on every network framework EXCEPT for the older Steam Connection-Oriented framework (since that one does not support channels).<br />
** Steam P2P, GOG, and LiteNetLib all happily support network channels, and use them to great effect, now.<br />
** All of the network channels are in the format "reliable ordered immediate," so no Nagle, but also everything is still reliable and so acks and resends happen on all the channels.<br />
** The benefit of splitting out by channel like this is that if there are fragmented packets in one of them, they don't cause slowdown and waiting around on the other channels.<br />
** There are four overall channels (except on Steam C-O, which squashes them all into one, which is how it has been up until now but is horrible. Please us Steam P2P):<br />
*** Main channel: this is the data that must be on time, and unblocked, for the game to keep proceeding. If this is streaming fast enough, your game will not be lagging at all.<br />
**** This includes the original handshakes between clients and the host, initial world data from the host to each client, and then any commands issued by clients or the host. Beyond that, it's pretty much just frame timing updates for general game synchronization on the host's orders. This also includes all "fast blast" data from the host to the client on unit and shot creation.<br />
*** Frequent channel: this is a fair chunk of data from the host to the client, and mostly involves data that should be updated every couple of sim frames. This is the broadest stuff that is kept in sync, but it's not absolutely required in order to run the game. Lobby chat is also sent via frequent (lobby chat runs at a lower level than in-game chat).<br />
*** Bulky-1 channel: this is almost entirely devoted to analyzing ships, and the clients and host talk back and forth about what they find.<br />
**** More or less: "Hey is this what you have for these 5 ships?" "Those three are right, but these other two don't match. Send me the diffs on those two please." "Here are the diffs on those two you asked about."<br />
**** There are also some cases of the server knowing "hey a thing just changed on this ship (such as a speed group speed) that the client would not know about, so preemptively sync to them before it drifts.<br />
*** Bulky-2 channel: this is entirely devoted to large-form rolling sync data about things other than ships. That mainly means world data, world externals, faction data, faction externals, planetfaction data, and the like.<br />
**** This channel is super hefty, and is the vast bulk of the data that is sent in general. But if it's delayed a few seconds in getting to you, it doesn't matter. If the Main channel is delayed a few hundred milliseconds, it will feel awful, by contrast.<br />
** An example of some of the timings are here in discord: https://discordapp.com/channels/240637654717300736/753611766046523572/827334456695980052<br />
*** In that one example, the host sent 23MB of data in about 15 minutes. 14MB of that was Bulky-2, 3.8MB Bulky-1, 3.3MB Frequent, and a mere 2.1MB on the Main channel. Bear in mind that about 300KB of the main channel was just the initial world send.<br />
*** If you total all of that sort of thing up, this is way less data than a low quality internet video, spread out over more time. Our problem has never been the general volume of data, but lag has been present because of a couple of things lately.<br />
**** First, we had a lot of thrashing on what would now be Bulky-1 because of sync data going vastly awry with speed groups. That was re-coded entirely in the last release, so there is far less data in that category.<br />
**** Second, we had the Nagle algorithm on by accident, which caused frequent delays of 200ms to accumulate small messages into batches rather than passing them on. This only affected Steam, not GOG or LiteNetLib. This has been fixed in this release.<br />
**** Third, the network framework used for Steam was suboptimal in a variety of ways, architecturally. This did not affect the other platforms, but it was dragging down Steam to a substantial degree. This has been fixed in this release.<br />
**** Fourth, all of this other data -- literally 90% of which doesn't need to be on time for the simulation to run well -- has been moved off the Main channel. This is a reduction in 90% of where we might see congestion from acks and resends and problems of that nature. If your connection has any substantial packet loss, then you now get to dodge 90% of the impact of that.<br />
** Final verdict? Basically an order of magnitude better performance for everyone, but in particular for Steam, which was running worst but used most.<br />
<br />
== Beta 2.765 The Hunt For Frigates And Civilians ==<br />
(Released March 31st, 2021)<br />
<br />
* When you are searching for units on the galaxy map, it will now allow match on both the full name and the short name. So you can type ARS to find the Advanced Research Station, etc.<br />
** Thanks to Daw11 for suggesting.<br />
<br />
* A few minor code efficiency improvements in some frequently-called code that will grant a small speed boost. Probably imperceptible on most machines, but why not.<br />
<br />
* Our per-ship network checking code in multiplayer has been slimmed down to no longer check the type of ships, or the faction of ships. It is no longer possible for those to ever be wrong, so we can save something like 1/4 of the bandwidth from each ship. It's a tiny amount, but given how many times this happens and thus how much it adds up to over even a short period, a 25% savings is nothing to sneeze at.<br />
<br />
=== Balance ===<br />
<br />
* DLC2 shot attraction backport to Bulwark Turret implemented (making that DLC1 turret way more awesome)<br />
** Thanks to CRCGamer for implementing.<br />
<br />
==== Balance adjustments to a number of frigates ====<br />
<br />
*Assault Frigate + Station Keeping variant adjustments<br />
** Speed 600 -> 700<br />
** Point defense shots per salvo +2 mk/lvl<br />
** Point defense range from 5200 -> 6500<br />
<br />
*Mugger, Cloaked Mugger<br />
** Speed 400 -> 600<br />
** Point defense shots per salvo +2 mk/lvl<br />
** Point defense range from 5200 -> 6500<br />
<br />
*Brawler<br />
** Speed 400 -> 600<br />
** Repulsor Missile range from 4200 -> 5600<br />
** Repulsor Missile shots per salvo +3 mk/lvl<br />
<br />
*Watchman Frigate<br />
** Additional sub-weapon of 300 base damage, x6 shots every 4 seconds and +1 mk/lvl. Range of 5600<br />
<br />
* Siege Frigate, Devastator, Ion Disruptor<br />
** Speed 400 -> 500<br />
** Weapon system ranges 10100 -> 12000<br />
<br />
* Additional adjustment to Siege Frigate where it now can only hit up to 10 targets per shot. Prevents excessive damage dilution due to its spread damage mechanic in some situations.<br />
<br />
* Thanks to CRCGamer for this update to the frigates to make them more viable to main!<br />
<br />
=== Civilian Industries Returns ===<br />
<br />
* Civilian Industries should once again be functional! We have not tested it, but it's recompiled into the new beta code style, and so should continue working like it used to.<br />
** Thanks to StarKelp for sharing the source so we could get it to work, since this is quite a popular mod.<br />
<br />
* All of the units in Civilian Industries have been updated to have proper short names for viewing in the new sidebar. Almost all of the previous ones were incomprehensible because of inheritance.<br />
<br />
=== More Mod Updates ===<br />
<br />
* Update v1.25 for More System Defenders - Speedy Frigates<br />
**<br />
**Frigates within the mod had base speeds adjusted to a minimum of 800.<br />
**Augmented Artillery Destroyer also given the speed increase to 800.<br />
**<br />
**Arming time of Cruise Missile Battery sub-units adjusted down to one second.<br />
**Subjective strength rating of said sub-units given a 20% multiplier.<br />
**Max targets hit within AoE adjusted for Shockwave Missiles.<br />
**<br />
**AI Fortified Cruise Missile Base visual scales increased.<br />
**Shockwave missile max targets 10 still fires three at a time though, damage 2.5x previous.<br />
<br />
* AMU:<br />
** Fixed the "AMU Debug For Faction Index" setting being fixed at -1 and, after that was fixed, found out it was not displaying anything. Fixed that as well, it now only debugs for that one specific Faction ID.<br />
** Fixed a potential exception in Auto-Juggle Energy Function from not clearing the list of entities to kill. Over time this would become a memory leak and leak.<br />
** Added new settings in cooperation with CRCGamer and his More System Defenders mod: If both mods are installed AMU, can now auto-build the following defensive units if enabled in the Automation tab:<br />
*** Cruise Missile Bases (0-5), these are placed near your command station and if possible on facing away from the nearest wormhole.<br />
*** Artillery Destroyers (0-2)<br />
*** Flypaper Frigates (0-50)<br />
*** Gorgon Aggregate Body Frigates (0-50)<br />
*** Escort Carriers (0-50)<br />
*** Ambush Carriers (0-50)<br />
* Extended Ship Variants:<br />
** As it adds a lot of ships for medium hull and fills the void there it now also modifies the medium hull cost to be on par with light and heavy hulls.<br />
<br />
* AMU:<br />
** Rewrote almost the entire description to be more clear and organized. Then added that AMU now cooperates with More System Defenders to allow the auto-building of its defensive units.<br />
<br />
* AMU:<br />
** Tweaked AMU to also allow for Auto-Building More System Defenders units not only when the mod itself but also its indev-counterpart are enabled.<br />
** Confirmed actually killing the exception in the Auto-Juggle Energy Assistant (AJEA). It would occur when swapping any other command station in for Economic Command Stations due to a stale fleet membership for the E->M Converters. AJEA now only considers converter fleet memberships valid if they have a positive maximum amount of entities.<br />
** Reorganized the custom Exception Logging code in AMU to allow for more functions:<br />
*** There now is an enum ExceptionThrowingMode. Only if it's set to BlockAllFurtherExecutionOfEntireThread it will kill the thread (and usually the whole faction along with that). Other options just show a popup but don't do anything else, or quietly debug log it.<br />
*** This FINALLY fixes the issue of a single Executor Fake Faction script crashing taking down the entire thread with it. Now the script will be removed, but the rest of things can stay. 3-ish times before this was attempted and claimed, but never tested, this time it IS tested and works.<br />
** At the same time the error logging code now has a string passed into it to define what modder screwed up and how to contact them. In my case this is -NR-SirLimbo#0021 on Discord or NRSirLimbo@protonmail.com<br />
** Additionally the call of Exception Logging was simplified and QuickExLog() shortcut functions were created.<br />
* Kaizers Marauders:<br />
** Integrated the new AMU logic and adapted it to changes in the Vanilla codebase.<br />
** Fixed the Rampage Heavy Frigate (drones) having the wrong icon.<br />
<br />
* AMU:<br />
** Created the DynamicAveragerRing class, which essentially is a list of values that an average is created out of, and each time adding a new value it replaces the old one, assuming the required change threshold, if set, is exceeded.<br />
** Fixed another 2 bugs in the Auto-Juggle Energy code that made the mod exponentially overestimate the player's metal income at high game speed, and logarithmically underestimate it at low game speeds. This lead to all kinds of horribly wrong behavior.<br />
* Kaizers Marauders:<br />
** Removed the defense spawn distance factoring from sniper turrets. In the hope that nobody will ever clutter their gravity well so much that the game begins to lag when trying thousands of locations to place something at the edge of the planet.<br />
** Used the new DynamicAveragerRing class to do calculations on the defense spawn distances.<br />
** Essentially when the last result distances were further away than within a margin it expands the next spawn attempt's base range, and if they were closer than that margin it inflates the next attempt's spawn distance.<br />
** This way it should be able to increase and decrease dynamically, but this is untested as of yet. I'd love to get someone's save with a built-up Kaiezrs Marauder Capital planet to see if it works, and by how much it grows better or worse.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a couple of places in the squad class where cross-threading issues could crop up with index out of range exceptions looking at unit orders. The side benefit of this is that it also makes this code a bit faster to run, because fewer array indices are happening.<br />
** Thanks to Zweihander2021 and Sigma7 for reporting.<br />
<br />
* Fixed a number of additional cases where cross-threading exceptions could happen with orders to units, even though none of them had been hit yet. Better to be preventative.<br />
<br />
* Game code is no longer allowed to directly touch the QueuedOrders list on entities. This may affect some code mods.<br />
** The code is now required to call GetQueuedOrderAtIndex_OrNull( index ), GetLastQueuedOrder_OrNull(), GetQueuedOrderCount(), RemoveOrder( Order ), QueueOrder(), and RemoveOrderAt( index ), as needed.<br />
** This was just absolutely ripe for endless cross-threading issues, and now we're able to condense all the possible errors into one place that is error-proof.<br />
** In general we have also switched to using more Remove rather than RemoveAt. This is slightly less efficient, but also less likely to junk or corrupt wrong data. If it causes a slowdown, we'll have to look into it.<br />
** It's worth noting that, in general, this is BY FAR the largest source of cross-threading issues, and we had literally like 30 different band-aids throughout the codebase. This removes and centralizes all of them, avoiding any chance of such issues. We've literally been having these for over a year, though, with no sign of stopping... and so an architecture change was in order.<br />
*** Updated one line of code in civilian industries to make that mod work with this change.<br />
<br />
* Properly fixed that index out of range exception that could still happen on WriteTechThatBenefits(). I was missing a -1 in there.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed some issues where death effect damage may have been overflowing, and in general where it would not serialize if it was negative. Now it just corrects to 0 damage rather than throwing an exception. This was during DeathEffectCausingDamageReceivedToEntity_Data mainly for multiplayer.<br />
** Thanks to Badger for reporting.<br />
<br />
* For some strange reason, it was still possible for us to hit Steam's "LimitExceeded" error when sending certain messages that include the entire world file. This was intermittent with clients in general.<br />
** Overall it is true, we were trying to fragment savegames as little as possible, basically breaking them at around 500kb rather than something lower, knowing that Valve's limit on messages is 512k. But with our own headers being around 100 bytes or so, we still should have had plenty of room, so why exactly this was happening is not clear.<br />
** What we've now done is shifted it so that we now target 400kb, which is VASTLY more room than needed. However, in terms of the grand scheme of sending world data, this is really paranoid in a way that should avoid the issue while not letting edge cases slip through. No headers are remotely near 112kb in size, so if we still get the error then this is something to do with how much is queued up in the steam networking buffer or somesuch.<br />
** It's also worth noting that the difference in fragmenting 100kb one way or the other is essentially invisible in terms of performance, and this only affects initial connection.<br />
** Thanks to Badger for reporting.<br />
<br />
* "CheckForShotAOEDetonation error at debugStage 4100" errors in multiplayer should now be fixed, or if not then it should give an even more specific error now. But knock on wood, should be fixed!<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed a "BUG: entityTospawnat is null" on multiplayer clients, but in the process also stopped them from trying to spawn the contents of a wave at all. That was just going to lead to strangeness and lag whenever a wave arrives. That data will be arriving by fast-blast from the host within a matter of milliseconds, and there's nothing for the client to calculate on their own.<br />
** Thanks to Badger for reporting.<br />
<br />
* A HandleAutobuild() exception was happening on some multiplayer clients. It probably still will, but it will give way more informative errors now. There's some slight extra protections in there already, but probably not enough for whatever was going on.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed a bug that would outright crash the game in DLC2 if you had a revenge-firing ship shooting another revenge shooting ship on a planet that no player is actively viewing.<br />
** Essentially, what happened was darker mirrors shooting each other when nobody was looking would not make a sound so much as they would silence all sound forever...<br />
** The change to make this work actually wound up being a lot more extensive in terms of how we process AOE damage, shots, and even knockback. The basic fix would have been faster, but more likely for complicated bugs like this to be possible in the future. If you see any strangeness with knockback in particular, please let us know!<br />
** Thanks to NR SirLimbo for the initial reports, and Democracy for the save that let us replicate this within 30 seconds of loading it. That was a lifesaver, as this still took something like 3.4 hours to find and fix.<br />
<br />
* The "Mismatch on faction index" error that was popping up frequently in the opening of the lobby will now only happen if you are actually generating a final map for the game. It's a useful debugging tool, but the warning it's giving us on the "partial map" is about something that gets entirely erased when you actually start the game, so it causes no problems.<br />
<br />
* Fixed an exception that could happen in some cross-threading situations in TargetEvaluator_ZombifyAsPrimary.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Increased the delay between fragmented Steam messages from 10ms to 50ms. Less likely for the valve to throw a congestion failure message that way, and it's not going to be noticeably different to users.<br />
<br />
==== Multiplayer Canary Code ====<br />
<br />
* "Canary code" has been introduced into several of the multiplayer messages. These may be taken back out later, but they really require very little processing and potentially a great amount of clarity, so we'll see.<br />
** Essentially, using our extremely efficient sub-ASCII text encoding, we send a string at certain points in the multiplayer messages, and on the other end it tries to read that exact string. The key point here is that the client KNOWS what it should be receiving. If it receives something other than what it expects, then it will yell right away and throw an exception and stop processing that message.<br />
** When it comes to our serialization format, it is blind and it is without markup or metadata. This is hyper efficient, but when we are reading naked bits... any string of 4 bites can maybe a byte, and any string of 16 bits can make some sort of small integer. We are reliant on clients and hosts knowing exactly what they are reading at any given time, and it's often not until we get a value that is clearly out of range later on that it actually dies. This can be VERY downstream from the actual divergence in data (we could have had 1, 10, 100, or even 1000s of reads that were invalid without knowing it).<br />
** This sort of thing gives us an existential problem in that when we know there's an error in some sort of message, we have no way to know how to narrow it down. The only way to find the divergence is to get the client and the host to both write a log of what they sent, and then diff the two. The problem is always immediately obvious once we do that. However, we have no way of knowing when to log, when the problem is a very intermittent one. Full time logging would make the game unplayable, and we also can't retroactively log after discovering we have a problem (the host never even knows there is a problem).<br />
** The one other way that we can find a problem like this is via manual code review, but that is extremely tedious and we could be looking through literally thousands of lines of code in dozens of files for a single send, since it could involve many external factions or even mods.<br />
** To solve this existential problem, at certain points we can send a known unique series of ASCII characters, which get converted into a hyper-specific series of bits. We're talking about... let's say maybe a series of 72 bits. In the canary check, it would be unimaginably unlikely for all 72 bits to happen to be the right combination of on and off unless the data that has been read prior to now is all exactly correct. Thus we basically cut down dramatically on the amount of code that we have to review in order to find the problem spot, since we don't have logs.<br />
** If the amount of code is still too much, then after the first round of canary checks, we may wind up needing to add more layers of more detailed canaries, potentially that are toggled on as a more lightweight form of message checking, since logs are really impossible to synchronize in a realtime multiplayer game. The data is just too voluminous for players to handle, and they have no way to pre-parse it for our use. The canary solution keeps things brief, to a single line of log code on just the client, and has minimal-to-no slowdown added (if we wind up adding lots of layers of canaries, that would be slowdown, and would be a toggle for when you suspect problems).<br />
** Two things to be aware of with canaries: <br />
*** If I make a mistake when entering a canary, then I may make multiplayer unplayable by accident. That could happen, and would just require a code change to fix it. This is difficult to test in advance of someone else firing up multiplayer, unfortunately.<br />
*** If my canaries are all correct, multiplayer still may become unplayable if there's a bug that a canary is now finding. Essentially, an area of multiplayer might ONLY have been functional because of the nature of "any row of bits is a number," and that in turn would lead to all sorts of strange effects like... well, potentially ships going to the wrong location, or having very mysterious orders, that sort of thing. Those are all just lots of series of numbers, so its entirely plausible to have a functional -- but wrong and fill with lots of sync data request -- multiplayer game going in those circumstances. The canaries would make such a game unplayable, however, because they actually would find at least the general areas of the code and then halt reading of the message (since they know it's garbage after that, even if it's theoretically-playable garbage). This may actually mean a short-term reduction in multiplayer playability, is the bottom line. But it leads to long-term correctness, and the removal of strange MP-specific divergences that wind up sending more and more and more sync data trying and failing to fix itself. Aka over time it will also lead to less bandwidth usage.<br />
** Thanks to Badger for the report that posed this conundrum.<br />
<br />
* Lots more canary code, on clients sending gamecommands to the host, and the host doing the same to the clients.<br />
** This way, if any gamecommands are being corrupted, we will hear about it just the same as we would with all the various types of sync data, and the fast blast data.<br />
** We have long suspected that there is something amiss in the fast blast data for speed groups in particular, but never had a way to test it until now. With these changes, it's entirely likely the multiplayer is going to be extremely broken with various canaries squawking. If folks post the logs of what they run into, and savegames are also ideal, then we should be able to exorcise those bugs rapidly and the stability of multiplayer as a whole is likely to skyrocket. Apologies for any temporary blockages that this causes, though.<br />
<br />
* So far in some limited multiplayer testing, we aren't seeing systematic issues yet!<br />
<br />
==== Speed Groups Rewrite ====<br />
<br />
* The way that speed groups are calculated, stored, updated, and most importantly shared via multiplayer has been completely rewritten.<br />
** This is something that fireteams use, and it's also the "group move" function on player ships.<br />
** Essentially, the old way was pretty inefficient in single player, and lost its data for fireteams when you saved and loaded your game, and also was completely broken in multiplayer.<br />
** The initial revised approaches we started with still involved sending speed groups over to the client, but this is just a huge amount of data and often a real pain in the rear to try to coordinate. A much better approach that we settled on is to actually keep the speed group data entirely on the host (rather like fireteams themselves), but then just share the resulting speed limits for any grouped ships.<br />
** We are sharing those speed limits in the form of sending the entire ship data, which is not a huge amount of data, but is nontrivial. Part of the reason for this is that we're aware that other slight divergences will likely happen in the few frames of movement after a group is created or disbanded, so a full sync is less likely to require a resync soon after. If we later find out something different, we can make it sync just the new speed limit in those cases.<br />
** Overall this new approach that we have now implemented should lead to a large bandwidth drop in multiplayer (all the other sync repair data), as well as the removal of certain ships seeming to "rubber band" to an area and then back as they try to move faster locally than the host says they can. This should also take less processing on the CPU on the host and in single-player.<br />
<br />
==== Hunter Bugfixes ====<br />
<br />
* Fix a bug where hunter ships against a Hostile To All faction might decide to attack one of your planets if you were on the way<br />
** Thanks to Zweihander2021 for reporting<br />
<br />
* Fix a bug where Hunter Fleet ships that spawned in waves against minor factions (Nanocaust, Dyson, etc) were able to go after the player, instead of remaining focused on the faction the wave spawns against.<br />
** Thanks to a number of people for reporting, including Democracy and cml<br />
<br />
* Huge thanks to Badger for fixing this!<br />
<br />
* Remove the hunter_targeting_this_faction_dies_immediately="true" tag from the dyson sphere, since that is no longer needed now that the hunter doesn't turn rogue and attack you anymore.<br />
** Thanks to Arides for reporting the exploits that you could get up to with this tag on, and to Badger for fixing the hunter code up.<br />
<br />
== Beta 2.764 Command Station Hotfix ==<br />
(Released March 26th, 2021)<br />
<br />
* Improve the text of an Objective to remove incorrect information about forcefields<br />
<br />
* The X map has been redone to make it more balanced and aesthetically pleasing. The old X map struggled badly with the Praetorian Guard mechanic (especially in the spire campaign) amonth other things.<br />
** The new map X map is more similar to AIWC's X map<br />
<br />
* You now get 4 FFs rather than 3 on mil cmd stations.<br />
** You still get 3 on logi stations.<br />
** You now get 2 on econ stations rather than 1.<br />
** Thanks to ArnaudB for sorting this out.<br />
<br />
* Fixed an error where until you clicked to the fleets tab, each fleet would say "Fleet type: ERR None". This was new since we started having the ability to click into fleets without going to the fleets tab first.<br />
** Thanks to GalacticZombie for reporting.<br />
<br />
* Fixed a regression in the most recent build where, thanks to some other better error handling, the "you don't have X mods enabled right now, would you like to?" function for savegames was no longer working.<br />
** This now works again, and has been generalized out more so that it is easier for us to not have this break in the future.<br />
<br />
* Remember in the last release notes, I said I was removing some fleet leader memberships and that it didn't seem to be a problem but also didn't solve the bug I was hunting at the time? Turns out it was a problem, in that it made it impossible to build command stations since their memberships would be auto-deleted as you attempted to do so.<br />
** That bit of code has been reverted, since it was wholly unneeded in the first place and just caused problems.<br />
** Thanks to Zweihander2021, zeusalmighty, Lord Of Nothing, and many others for reporting.<br />
<br />
* Fixed a couple of regressions from the last month that were related (I think) to a fix put in to support certain flavors of linux mouse handling raycasts. All of the functionality should be correct for all OSes and flavors of those OSes, now.<br />
** One of the problems was that if you were hovering over the UI, it could still show the battlefield or placement cursor, either stuck in one spot, or locked up to the top right-hand corner of the screen. It now no longer shows those cursors at all when your mouse is over the UI, which is what you'd expect.<br />
** The second problem was that some combinations of clicks, and this seemed to vary by OS, could actually wind up activating orders to ships or placement of structures when you were still hovering over the UI. That could lead to insta-placement of command stations in the upper right of the grav well, or similar for turrets and such.<br />
** IF this was a longer-term issue than we thought, then it could also explain why some units were seeming to randomly path to the upper left right (you were accidentally giving them orders, if that's what this was -- we always suspected decollision, but maybe it was this all along). If this was indeed what was happening, then this issue has actually existed for years and was not related to our linux fix a month ago.<br />
** Thanks to Arquebus X and mashtong54 for reporting.<br />
<br />
== Beta 2.763 QoL Explosion ==<br />
(Released March 25th, 2021)<br />
<br />
* Whenever you click a button or icon or other clickable element in the UI, it now causes it to immediately update no matter what.<br />
** This makes interfaces way more responsive to player clicks, but without having to turn on the unrestricted updates method, which causes framerate drops.<br />
** Additionally, when it comes specifically to the planet sidebar, it had TWO update timers limiting it (the general purpose one, and then one that predated that which did the same function but was just for that ultra-heavy ui window).<br />
*** The interplay between the two of them led to that specific sidebar to feel extremely laggy, and it was only somewhat better when you put the unrestricted ui update speeds on there. Now it flows vastly better and more consistently, and in particular collapsing and expanding sections happens instantly like you would expect.<br />
** Thanks to Daw11 for reporting the sluggishness.<br />
<br />
* Added another batch of names to the standard naming list.<br />
<br />
* The scourge are now smarter at using their builders to expand when there's available territory<br />
** Thanks to Ecthelon for pointing out some inefficiencies<br />
<br />
=== Planet Sidebar Improvements ===<br />
<br />
* In the event that a player's fleet leader on the sidebar does not have an overlay icon, but is assigned to a control group, then it will show the control group number in the sidebar directly.<br />
<br />
* On the sidebar, fleet leaders now always have their own line item no matter what, so that you can hover over them and get their tooltip information for each specific leader.<br />
** Often you'll have a couple of support factories, or several identical transports, and those should not collapse down in that way.<br />
<br />
* On the sidebar, added a new option under the options section, which lets you switch between the existing icon mode, and a new text mode.<br />
** Ships can either be listed as icons in a grid, or wider text entries in rows. The icons are the classic view, but the text is much easier to visually understand, and is the new default.<br />
** This turns out to be vastly less tall than we thought it would be.<br />
** Thanks to Arquebus X and GalacticZombie for being the most recent to request this.<br />
<br />
* On the left-hand sidebar, when you have it broken out by faction, it now shows a color on the strength count for that faction that indicates their relationship to you.<br />
** When you hover over the header to see more about their strength breakdown, it then also explicitly says if they are your ally, enemy, or neutral, etc.<br />
** This was basically impossible to find in the recent builds unless you still used the by-relationship version of the sidebar.<br />
<br />
=== Selected Ships Window Improvements ===<br />
<br />
* The selected ships window in the bottom right corner now shows ship icons in your ship color, if you have actual ships selected (versus selecting and entire fleet).<br />
<br />
* The selected ships window in the bottom right corner now uses the shortened name of ships (if there is one), for the same reason the build sidebar does. Essentially being able to see things that otherwise might be too long and wrap.<br />
** Thanks to NR SirLimbo for suggesting.<br />
<br />
* In the event that you have selected an entire fleet, and the fleet is assigned to a control group number, that number now shows to the left of the fleet name in the selected window.<br />
<br />
* The way that the selection window sorts ships and fleets is now completely different.<br />
** Overall it helps to ensure that the order makes sense and feel more natural, so that you can see things more quickly.<br />
<br />
* Added a new "Selected Ships/Fleets Window" subsection to the Display section of settings.<br />
** Configuration relating to the window that shows the selected ships display in the bottom-right corner of the screen.<br />
<br />
* Added a new setting: Max Lines To Show For Selected Ships Before Scrolling<br />
** When you have a lot of fleets or ships selected, eventually it needs to scroll so that it doesn't go off the top of your screen. But depending on your HUD scale, and your monitor size in general, you may feel like you have more or less room that you want to use for this. The old default was 8 prior to this setting existing, but the new default is 16. Min 4, max 60.<br />
<br />
* Added a new setting: Include Selected Ships That Are Selected By Fleet<br />
** Normally the selected ships and fleets list only shows directly-selected ships, and fleets which are selected as a whole. With this setting on, if you select a fleet as a whole, it will still include all of the full list of ships from it down in the big list under the rest.<br />
<br />
* For purposes of the selected ships window, if you have drones selected that are in whatever modes (pursuit, etc), it does not show those buttons as lit-up now. You can't control drones, and their state is irrelevant for larger UI purposes.<br />
** Apologies for not being able to find who suggested this, but it was a good suggestion.<br />
<br />
* For tooltips over ship lines that are related to the selected window, it now includes the total count and strength for all ships of that type, even if some of them are part of a fleet that is not showing the details of what it is in itself.<br />
<br />
=== Fleet Management Improvements ===<br />
<br />
* Fixed a bug in the swap fleets screen where you could actually swap ships IN to unclaimed fleets, thus losing access to a ship line until you claimed the thing. Oops.<br />
<br />
* The fleet management window now shows the full cap strength of each ship line (including centerpiece) next to it.<br />
** Thanks to Badger for suggesting.<br />
<br />
* It is now possible to multi-swap several ship lines (from any number of fleets) into the fleet you are viewing.<br />
** The swap "in and out" is still single-item, but the "swap in from elsewhere" is now multi-swap. It's a straightforward difference when you see it in game, hopefully.<br />
** This is a huge timesaver, and it DOES properly handle multiple ship lines that are the same type.<br />
** We have not tested if this properly handles elites (cruisers) being swapped in and out of fleets that have them (supposed to be max one per fleet), but the code is in there to enforce it. We just don't know for sure if that works.<br />
** The multi-swap variant can never be used with fleet leaders, so that part is not a worry.<br />
** Thanks to TheIronBird, Zweihander2021, Strategic Sage, and Daw11 for requesting.<br />
<br />
* It is now possible to swap flagships between fleets, including golems for transports, or arks for golems, etc.<br />
** This only works for officer and strike fleets, not any other kinds of fleets (not support, not lone wolf, etc).<br />
** If the flagships are on different planets, they will be set to 1 health rather than the usual of being destroyed.<br />
** This can swap across factions!<br />
** If there are drones in the fleet, it should move them, but this part has not been tested. Only a few golem types really have drones, most of the rest of that is with combat factories, which cannot be swapped in this fashion.<br />
** Thanks to TheIronBird, Zweihander2021, Strategic Sage, and Daw11 for requesting.<br />
<br />
=== Settings And Options Improvements ===<br />
<br />
* The top line item of the game tab of the settings menu is a new "show advanced settings" toggle. It notes:<br />
** There are a whole lot of these, friend. If you're not already super into the game or having a specific problem, it's a good idea to steer clear of these. The defaults are awesome 99% of the time.<br />
** Any setting with is_advanced_setting="true" is no longer shown unless this is on.<br />
** That wipes out most of the settings, except for the ones that people commonly change.<br />
** That gets rid of all the debug ones, most of the game ones, all of the performance ones except those that have a large impact, a few of the excessive display ones, a vast majority of the audio settings including the auto mixing tools, almost all of the camera tab, and nothing on the network tab (since that was already pared down).<br />
** Note that there's still a lot on the display tab since those are things people tend to like to tweak. Given that these are often the chief complaints someone has in a non-advanced fashion, these staying non-advanced seems like a good idea even though this tab is overwhelming.<br />
** Most of the automation tab is non-advanced, which seems... maybe a good idea? Really unsure there.<br />
** The audio tab probably still has more than some folks expect, but these bits allow people to get at what they are looking at. Maybe it could be pared down slightly, but I'd do that with caution.<br />
** The elements left on the camera screen are very key, given those are the things that most often get changed to suit tastes.<br />
** Thanks to Strategic Sage for inspiring this feature.<br />
<br />
* Added a new General section to the Galaxy Options tab.<br />
** Inside that, added a new Show Advanced Galaxy And Faction Options setting.<br />
** There's a wild world of tweaks that you can make, many of which are going to feel mod-like in nature. If you like tuning things to your exact specifications, then these are for you. If you don't want to feel overwhelmed, this is probably safely left off.<br />
** Please note that this option not only affects the options tab, but also the factions tab.<br />
** This removes the vast majority of settings, most of which are truly advanced things for ultra-tuning mechanics. It leaves the things that are big decision-points that someone might consider while still playing the normal game experience.<br />
** Thanks to Strategic Sage for expressing how overwhelming this section had become.<br />
<br />
* The scouting section on the galaxy options tab has been removed, and its contents folded into the general tab.<br />
** That said, basically all of them are counted as advanced, and so are invisible.<br />
<br />
* All of the AMU settings have been marked as advanced, because by their very nature they are.<br />
<br />
* is_advanced_setting="true" can now also be set on custom fields for factions, and the factions tab then shows or hides them based on the option in the galaxy options tab.<br />
** Here again, the amount of customization options was getting intense, and this really dials that back.<br />
** The starting economic options on the humans have been hidden unless advanced are turned on(they were already marked as advanced).<br />
** On AIs, the type of the warden and in particular PG are all hidden unless advanced is on. And the hunter, as it turns out.<br />
** The DLC2 AI options have provisionally also been hidden under advanced. Because... they are. Even though they are super cool. Same with wormhole borer.<br />
** The added options on players that AMU adds are also hidden under advanced, same reason.<br />
** The amount of relief even I feel when looking at these de-cluttered screens now is palpable, I have to say. It's like a giant weight off, especially with AMU in the mix. That said, having the power of all this by turning on advanced feels like a superpower, so we have a double win.<br />
<br />
* In the single player lobby, it no longer shows the "humans controlling this faction" stuff. That's only in the MP lobby now.<br />
<br />
* On screens where there are hidden advanced settings, it now tells you that those are there, and how many. That way if you are curious, you never need to worry if you're missing something.<br />
** There are some particularly cool AI settings in DLC2, for example. Those let you really customize how the flow of the map is. But... it's a huge amount of clutter if you're new, or not planning on looking at that right this second.<br />
<br />
* Added a new advanced option for AIs: Universal Difficulty<br />
** Most of the time, having the AI, Hunter, Warden, and Praetorian Guard Difficulty difficulty levels all match within an AI faction is the desired setup.<br />
** With this setting enable, the subfaction difficulties will be set to match that of the main faction. Key note: that means if you do make changes to them individually, you need to disable this setting or else the central setting will override!<br />
** This now defaults to ON!<br />
<br />
* The difficulty levels for the sub-factions of the AI are now hidden by default, behind the advanced settings, since Universal Difficulty will take care of them for you unless you want to break them out separately.<br />
<br />
* The following settings are now stored in the "graphics settings" file that is NOT synced between computers during Steam or GOG cloud sync.<br />
** Essentially these are per-computer settings, versus settings that really should be shared between computers.<br />
** This already included all the things related to the screen resolution and windowed mode, and even SOME of the color grading settings. So none of those are changing. All of the rest of what is added will have its values reset to default in the next version if you've changed it from the defaults:<br />
** Galaxy map bloom, and hexagon intensity.<br />
** Sound mixing subsection.<br />
** Performance CPU Load settings including Use Unrestricted UI Update Speeds, Parallel Faction Processing (should leave this ON!).<br />
** Performance Visual Load settings.<br />
** Performance Visual And RAM Load settings.<br />
** Mouse scroll speeds and inversions.<br />
** HUD Scale (hey, different monitors and different needs).<br />
** All of the camera speed modifiers.<br />
** Thanks to marty651 for reporting, and pointing out how so many of these will still vary between machines.<br />
<br />
* The little "there are x hidden advanced fields" text things are now clickable directly to give you an override of that feature on whatever tab you are on until you switch tabs. This makes it SO much more convenient to quickly examine just a few fields you are curious about, and/or make changes with them.<br />
<br />
=== Ship Short-Name Improvements ===<br />
<br />
* The combat factories, transports, and forcefield generators now all have shorter versions of their names for use in the sidebar and the selected ships window.<br />
** It's likely that there are other types of ships and structures that have long names that will wrap inappropriately, and just let us know as you find them, please.<br />
** For instance, human home command and some of the other structures there now also have shorter name versions.<br />
** Most capturables now use the acronym that people commonly use for them.<br />
** Various strikecraft need and now use abbreviations on themselves.<br />
** Turrets all have a shortening to "Tur" at minimum, if not more.<br />
** Guard posts now all just say GP, since that's easier to see. And guardians are now GU, since that's easier to tell apart than GD would be.<br />
** Overall where we can spare a word and still be clear, we're doing so. Orbital Mass Driver is just Mass Driver on the sidebar. Easier to see that way.<br />
** There's still plenty more we have missed, without a doubt. Volunteer helpers with this would be greatly appreciated.<br />
<br />
* All of the various scourge units in DLC1 and DLC2 now have shortened name variants for the sidebar so that they don't wrap and can be understood.<br />
<br />
* All drones now have a short sidebar name that uses the designation DRN.<br />
<br />
* Frigates are now either in the Heavy or Light class, and for their abbreviation now say either FFL or FFH.<br />
** So far, the only frigates noted as heavy are the lost spire frigate, spire raider frigate, imperial spire frigate, darker mirror, phantasmal host frigate, heavy minelayer frigate, and the forcefield frigate and its variants. However, that will change.<br />
** Thanks to Zwei for suggesting, and for helping out with corvettes, destroyers, cruisers, and strikecraft.<br />
<br />
* For cruisers, we're now using the designation CC, and for destroyers, the designation DD. Battleships are BB, dreadnoughts are DN.<br />
** Lesser and Greater are being denoted as Ls and Gr.<br />
** For corvettes, those are K, and if strikecraft are ever mentioned with a designation, it's SC.<br />
** For station-keepers, they get a P in front of the rest of their designation. So a station-keeping frigate is PFFL if it's a light frigate.<br />
** For turrets, the designation is TUR, and for golems it is GOL.<br />
** One of several good sources: https://en.wikipedia.org/wiki/Glossary_of_military_abbreviations<br />
<br />
* Astro Trains now use the designation Astro T.<br />
** Astro Train Guards use the designation TGU.<br />
** Battlestations now use the designation BST.<br />
** Citadels now use the designation CIT.<br />
<br />
* In the long name for ships, anything that started out as "Drone Whatever" is now "Whatever Drone."<br />
** This was the norm for most ships already, and helps keep things sorted together by function on lists. Now it's fully consistent.<br />
** In DLC2, we have some stuff that starts with Drone, but it's not actually a drone -- it's a thing like a Drone Factory or similar, which helps us tell that it's not a thing that IS a drone, but it ACTS on drones.<br />
<br />
* Any minor faction beacons now use the short name designation of BEAC.<br />
<br />
* For things like the AI Eyes, which change forms, their short names now start with the same word but put the form change at the end.<br />
** For sorting purposes, this keeps their order the same, and makes it so that they don't just around in the unit list as their alert status goes on and off.<br />
<br />
* All of the various engineers are now denoted in short form as ENG, with a shortened modifier after that if need be. Again, so they all show right next to each other easily on the sidebar and similar.<br />
<br />
* Fixed a variety of cases where the short name from a base unit was being applied inappropriately to a variant (among all the cases where the application was appropriate).<br />
** This was the big thing we were worried about, in the main game and in mods, but we've used the new export spreadsheet (see below) to weed this out for the main game, at least.<br />
<br />
* Units that are Dire now have a D in front of their short-form designation (DGU, DGP).<br />
** Units that are Royal now have an R in front of their short-form designation (RDGU, RGU, etc).<br />
** The readability and organization of this turned out to be a lot more substantial.<br />
<br />
* Anything with the word Gunboat in it now uses the acronym GBT in the short name form.<br />
<br />
==== Critical Note For Modders ====<br />
<br />
* The game now silently complains into your log on startup if any unit's effective "display name for the sidebar" is longer than 18 characters.<br />
** For anyone with a mod, xml or otherwise, this is a great time to boot up your mod and see if errors are going silently into the log when you do.<br />
** If so, this is a case where ideally you stick to the central conventions for shorter names, or make up new ones where you need to. This makes a lot of interfaces more consistent and tidy and readable (and prevents wrapping on certain screens that are otherwise unreadable).<br />
** The full names of ships can continue to be absurdly long, as much as you want.<br />
** Note that display_name_for_sidebar inherits separately from display_name, so if you are changing that as you inherit from things, you need to be sure to change that anyhow.<br />
** For convenience, it states the name of the expansions or mods in question for each item.<br />
<br />
* Our "GameEntityReferenceData.csv" export has been updated to include far more information, including the long and short names of ships, their internal name, what mod or expansion or both they are from, and to be sorted by mod and expansion before name.<br />
** It also includes the length of the short name, and makes it easy for us to figure out if there are any mismatches between short and long names (those are bad). The internalname is never seen by players, so is often mismatched, and that's no problem.<br />
** Long name is display_name (DisplayName), and short name is display_name_for_sidebar (DisplayNameForSidebar). It's used on more than just the sidebar now.<br />
<br />
* There is a new xlsx excel file that we are distributing with the game, which modders or players can paste data into on the second tab, from the csv file, and then have nicely-formatted data with conditional rulesets to help find problems, and things of that nature. This should make a lot of life much easier for folks looking to find inconsistencies.<br />
<br />
=== New Mods! Tame DS and Powerful Cmd Stations ===<br />
<br />
* Added a new Tame Dark Spire mod by ArnaudB, made thanks to the inspiration of FwiffoForce.<br />
** A mod that prevent Dark Spire from expanding. Either in normal games or during Fallen Spire campaign. They won't build locus.<br />
<br />
* Added a new Powerful Command Stations mod by ArnaudB.<br />
** This changes the way Command Stations work, shifting forcefields to the stations themselves: you get a cheap economic station for 60k, a shield protected logistical one for 200k, and a VERY powerful military station that cost 500,000 metal. <br />
** A hull tech for Command Stations is added.<br />
** Stations have no bonus turrets.<br />
** In addition forcefields are rebalanced here. You start with one on every station, but you can hack for more at the ODSS.<br />
<br />
=== Mod Updates ===<br />
<br />
* The Shield Generators mod by cml has been updated to meet the new standards.<br />
<br />
* The More System Defenders mod by CRCGamer has been updated to include the new short-name styles.<br />
<br />
* Spire Railgun Shop by Lord of Nothing has been updated to include the new short-name styles.<br />
<br />
* AMU:<br />
** Reorganized the base types: Instead of just Strike Craft and just Frigates there are now Light/Medium/Heavy variants of those similar to how Small/Medium/Big turrets work, with escalating "suggested base stats" and values.<br />
*** Mods now using these types will likely have different icons, sizes, targeting priorites etc for some ships based on this. Too many minor changes to count...<br />
** Brought other types in line with that.<br />
** Added Destroyer and Cruiser base types.<br />
** Removed the LargeShipNonStackable base and replaced it with a Battleship and Dreadnought base type.<br />
** Added sidebar-display-names for all the AMU base entities based on what Vanilla uses.<br />
** All variants of the AddToShipGrantList() function now require a multiplier for frigates, since these are usually much much stronger than strike craft ship lines.<br />
* Extended Ship Variants:<br />
** Added sidebar-display-names for all the AMU base entities based on what Vanilla uses.<br />
** Copies from the Cloaked and Parasitic variants of the Viral Shredder no longer state that they are copies. They are supposed to just "mix in" with the real ones.<br />
** The Shredder Frigate now uses the AMU Medium Frigate base type.<br />
** The Sharpener Frigate has been renamed into the Heavy Sharpener Frigate. It always was a heavy one, but didn't say so.<br />
** EMP Missiles no longer count as Strike Craft but as Frigates.<br />
** All of my mods put the short ship definition (FFL = Light Frigate, C-FAC = Combat Factory, etc) to the REAR of the game entity type. ESV changes the Vanilla Combat Factories to do this as well.<br />
* Kaizers Marauders:<br />
** Began using the new AMU base types.<br />
** Added or changed sidebar-display-names where needed.<br />
** The Disrupter Corvette is now the Disrupter Heavy Corvette, and as such is a bit larger and has more mass and engine power.<br />
** The Light Sting Frigate was renamed into the Sting Light Frigate to put the size in front of the ship type.<br />
** The Rampage Frigate was renamed into the Rampage Heavy Frigate, and as such is a bit larger and has more mass and engine power.<br />
** The Raid Cruiser was renamed into the Raid Seeker, due to it not actually fitting in with DLC2 Cruisers at all.<br />
** The Raid Battleship was renamed into the Raid Super Battleship, due to it not actually being a Battleship, whenever those actually become a thing, of any sort.<br />
** Kaizer's [Spire] Dreadnought was renamed into Kaizer's [Spire] Super-Dreadnought, due to it not actually being a Dreadnought, whenever those actually become a thing, of any sort.<br />
** Frigates hacked now have 4x the strength cap they had before, leading to way higher and more significant counts, fitting in better with the Vanilla Frigates.<br />
* Micro Mod Collection:<br />
** Added sidebar-display-names where needed.<br />
<br />
* Kaizers Marauders:<br />
** Reduced the Hull of the Sting Light Frigate from 25k to 15k, Shield from 125k to 85k and Damage from 40k to 25k. In return the metal cost was reduced from 104k to 67.5k and the energy cost from 6k to 4k.<br />
** In return Marauders and players if they hack it now get about 35.1% more, and they are about that margin cheaper.<br />
** The purpose was to bring it in line with other Light Frigates, which have around 1-ish strength. The Sting Light Frigate now has 0.97s, down from before 1.51s. At that strength it would've been what I consider a Medium Frigate.<br />
<br />
=== Balance ===<br />
<br />
* Adjusted HRF special ARS ship grant caps to be actually competitive after recent adjustments to Dark Spire and Dyson.<br />
** Concussive Defender 4 -> 8<br />
** Tesla Defender 4 -> 6<br />
** Grenade Launcher Protector 4 -> 6<br />
** Nucleophilic Protector 3 -> 4<br />
** <br />
** Pike Defender 13 -> 30<br />
** Raider Defender 13 -> 30<br />
** <br />
** Vanguard Defender 13 -> 15<br />
** Pulsar Tank Defender 13 -> 15<br />
** <br />
** Metal cost of Concussive Defender adjusted from 80K to 40K. (It has half the health of any other frigate offering here.)<br />
** Concussive Defender speed adjusted from 500 to 600. Same for Tesla Defender.<br />
** <br />
** HRF Special ARS adjusted to allow up to three hacks. Expected costs of 12, 18, and 27 HaP for each hack.<br />
** Thanks to CRCGamer for noticing, and making these changes!<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in one more check that could still happen when returning entity orders to the pool from multiple threads. It would cause a visible popup of "Mismatch on ClaimedByEntity_Internal" now, but was not a constant thing, so didn't slow down the game like before.<br />
<br />
* We were still having some (legitimate) errors with entity orders going back into the cross-threading pool after being split between multiple entities improperly. It's rare, but now rather than showing an error message when that happens, we just discard the invalid order instead of putting it back into the pool where it might further compound errors. The garbage collector will pick it up, and all will be well. This has been an interesting exercise in cross-threading memory cleanup.<br />
<br />
* The TSS and ODSS and similar structures now should automatically correct any too-high ship/turret/etc line grants that they have. This doesn't affect things like the ARS or FRS.<br />
<br />
* Remove some debugging code that was spamming ArcenDebugLog messages about enemy king attackers<br />
** Thanks to Daw11 for reporting and Badger for fixing.<br />
<br />
* Fixed a minor visual bug where on a bunch of windows, the start of the first line was 6px too high, and thus sometimes actually cut off.<br />
<br />
* ArcenDynamicTableRows now properly are linked to expansions and mods that originate them (not ones that just alter them with a partial record).<br />
** This DOES include rows that originate from a copy_from from some other source like the main game or a different mod or expansion.<br />
<br />
* The "skip_export" xml tag is no longer used, although it can be left in place on units.<br />
** We actually specifically want ALL of our units to export now.<br />
** Just for cleanliness, we have removed that tag from all of the units in the main game and expansions.<br />
** Also removed some of the last graphicsdone="true" references from our own xml.<br />
<br />
* Fixed a bug in GetDisplayNameInternal() for factions that could still throw an exception during stringbuilder creation of names, because of the field we marked as ThreadStatic... not being static. Heh. This is more efficient now in general, as a side bonus. <br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed an exception that could happen when writing tooltips for units that were already maxed out at mark 7.<br />
** Thanks to Badger for reporting.<br />
<br />
* A mysterious error in ActuallyFireSalvoAtTargetPriorityList() appeared in a multiplayer game, but we have no idea what it was. That code has now been fully instrumented so that next time it happens, we can actually fix it. It is either MP-specific, or related to a new feature on the beta branch, probably.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed an oversight that would lead to exceptions on EjectEntireStackFromMyselfIfPresent() on multiplayer clients. That code simply should not be run on clients.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed an exception that could happen in strength counting, mostly in a cross-threading fashion but maybe slightly more likely in multiplayer. A side effect of this change is that the code is also very slightly more efficient now, too.<br />
** Thanks to Badger for reporting.<br />
<br />
* Put in an (untested) fix for the ability to watch fleets in multiplayer not working reliably. This was related to the player account ID and how it was sent, most likely. We now explicitly send it.<br />
** Thanks to Badger for reporting.<br />
<br />
* The game now clears out old stale fleet leader slots on player fleets. This is essentially when you've transformed the type of the fleet leader, or switched what kind of command station you had, but it still had some old data.<br />
** This may not wind up being needed or a good idea, but it does remove some ambiguity and does also make savegames a tiny bit smaller. We thought this was responsible for a certain bug, but it was not.<br />
<br />
* Fixed a minor bug in the fleet list of units where elites could wind up showing ahead of fleet leaders.<br />
<br />
* Updated a number of journal entries and tips to be a bit more accurate to the new paradigm.<br />
** Thanks to Lord Of Nothing for pointing out some holes, and CRCGamer for filling them.<br />
<br />
== Beta 2.762 Performance Hotfix ==<br />
(Released March 22nd, 2021)<br />
<br />
*Changed the golem so it does damage again properly.<br />
**Since zombification isn't affected by bonus multiplier, Botnet can indeed zombify guardians<br />
**After considering, this was left in since Parasite Citadel can do the same for 30 AIP with only less efficiency. Botnet will (probably) be allowed to do the same for 40 AIP till zombification-mechanic get some update.<br />
** Thanks to ArnaudB for doing this.<br />
<br />
*Dyson Sentinel had a 0.19 strength multiplier, making it looks much weaker than it was.<br />
**Totally not a bug made into a feature: Dyson units now have a 0.50 strength multiplier and their description reflect this.<br />
**This gives hackable Dysons an 'unique' ability useful to the player, to avoid triggering eyes for instance.<br />
** Thanks to ArnaudB for doing this.<br />
<br />
* Updated the wording on the mark 2 and 3 increases for the AIs when attacking their homeworlds and nearby planets to say "if you have at least 10 strength outside of transports" rather than the more confusing "if you unload at least 10 strength from a transport."<br />
** Thanks to fighterman481 for suggesting.<br />
<br />
* Fixed an exception that could happen in ClearOrders() at debug stage 400.<br />
** Thanks to alocritani for reporting.<br />
<br />
* Fixed a bug from the last (non-hotfix) version that was causing the Player.log to be spammed with "Mismatch on ClaimedByEntity_Internal when returning to the pool!" errors.<br />
** This was causing massive amounts of lag in all sorts of unexpected situations, and the main predictor of just how bad the lag was, was how busy your hard drive was and how long you had been playing (this would get exponentially worse over time).<br />
** The root cause here was me moving when a variable was nulled-out in order to make cross-threading issues less likely. However, after that point it does a validity check and complains if there is a problem. This check is important, but it was always now failing against a now-null variable.<br />
** The validity check now uses a local copy of what is nulled out, so spurious errors aren't thrown. Additionally, if it DOES have an error, it will now go to the main log and the display, so we don't get surprise hidden problems like this.<br />
** Thanks to Sigma7, Metrekec, ArnaudB, alocritani, Badger, and others for reporting.<br />
<br />
* Fixed some more hidden log messages that would only go to the unity Player.log instead of the usual logs we look in. The only ones that were left in the game beyond the one we fixed just a moment ago were some relating to wave debugging being on. This would exhibit a similar style of mysterious performance drain if someone had that logging turned on for some reason and didn't know what log to look in, but it was very unlikely to ever actually be a problem. Still, better safe than sorry!<br />
<br />
== Beta 2.761 Hacking Hotfix ==<br />
(Released March 19th, 2021)<br />
<br />
* Fixed a bug in the prior release that made all hacks not show up for players.<br />
** Thanks to Sol for reporting.<br />
<br />
== Beta 2.760 Xenophiles And Overlords ==<br />
(Released March 19th, 2021)<br />
<br />
* Minor faction allied Scourge is now allowed to do outright invasions like the Marauders. This complements but does not replace the existing "Join minor faction allies" behaviour.<br />
** So if you have just a scourge on a team, it will invade the galaxy sometimes<br />
** If the scourge are with the marauders then the scourge can see that they have allies and can join them (this is the current behavior) <br />
<br />
* Added a new state_of_matter_to_become_on_wormhole_exit="YourStateOfMatterHere" and returns_to_default_state_of_matter_after_seconds_from_wormhole_exit="numberofseconds".<br />
** What it does is every time the ship exits a wormhole (this does NOT work when coming out of transports or exiting guard posts), it'll change to the other state of matter for X amount of seconds.<br />
** Completely untested so far.<br />
** Thanks to NR SirLimbo for suggesting.<br />
<br />
=== Planet Sidebar Enhancements ===<br />
<br />
* The data for which fleets you were watching in old savegames is now lost, sorry about that.<br />
** However, in new savegames where there is shared-faction multiplayer, the watchlists are now per-playeraccount, which means each person can just watch THEIR fleets that they are responsible for.<br />
** Thanks to Badger for requesting.<br />
<br />
* When hovering a Fleet's entry in the Planet menu, there's now a hotkey to toggle between being Watched and Unwatched. <br />
<br />
* Fleets with longer names now have their text size decreased<br />
<br />
* Instead of showing the raw number of ships (which is not as important as the Strength of ships), it now shows "Enemy Strength on Flagship Planet"<br />
** This way you can monitor multiple battles on multiple planets at once just by looking at the sidebar<br />
<br />
=== DLC2 Delay to May 18th, 2021 ===<br />
<br />
* Updated the release date for the second expansion to be May 18th, 2021. We all just needed more time to work on this and get it really in excellent shape. Apologies for the extended wait that keeps extending, but the added time has been a really positive thing for the base game (as you can see lately) as well as for the DLC itself (wow those units and factions are coming together). We really want to have something that is polished and awesome for you from day one for the DLC, versus scrambling to fix things on launch of it.<br />
<br />
=== The Xenophile Update ===<br />
<br />
*An update to shipline hacks from minor factions, making them use the new ARS/TSS multiple sectors system and aiming to make those hacks tempting instead of disappointing.<br />
**All shipline-Hacks on aliens cost more on hostile planets but less on friendly ones. Shiplines hacks are now much faster, but get much harder every-time you hack the same target (like ARS and TSS). <br />
**All shipline-Hacks on aliens now give +3 AIP per shipline hacked.<br />
<br />
*Dark Spire Wraith increased speed from 400 to 500. Damage reduced from 2800 to 1200, added x2 bonus damage against enemies below 80 armor, which includes most turrets.<br />
**Ship cap increased from 8 to 20.<br />
**Now a close-combat high-damage ship that's pricy and moderately tough. Much more compelling to use. The changes also affects base version and is effectively a nerf.<br />
*Dark Spire Phantom damage reduced from 12,000 to 4,000. Hackable version had 5000 before, it's now the same for both base and hackable version, like all others Dark Spire ships.<br />
**Ship cap increased from 9 to 14, like Bombard cap.<br />
**It's theoretially three times as powerful as a bombard, but has more weaknesses from bonus damage and lower range.<br />
*Dark Spire Specter ship cap increased from 4 to 8. <br />
**It's a powerful multi-shot anti-shield but no tougher than most frigates.<br />
<br />
*Dark Spire Constants changes:<br />
**Dark Spire Conversion ratio based on intensity is now 40/50/60 instead of 30/50/70 at low/mid/high intensities.<br />
**Dark Spire "Income per minute" multiplier is now 0.08/0.1/0.14 instead of 0.7/1.0/2.0 to reduce the impact of Dark Spire on its shiplines are hacked, as the shiplines have been balanced and the hacks have greater cost. Narrowed variance between intensity is safer for DLC3 rogue-like options. This also helps performance against vengeance strike caused by high energy income causing vengeance strike loops.<br />
<br />
*Dyson Sentinel health increased by 100% from 1800 to 3600, damage reduced by 180% from 4150 to 750.<br />
**The exemple of something going horribly wrong. It had enough DPS to rivalize three human lines of strikecrafts and really wasn't supposed to. With FRS it was gamebreaking.<br />
**Ship cap increased from 20 to 30.<br />
*Dyson Defender health increased by 200% from 2000 to 6000, damage increased by 100% from 1500 to 3000.<br />
**Another example of the messy balance of Dyson. It's now tougher than the Sentinel but slower with less range.<br />
**Ship cap reduced from 32 to 30.<br />
*Dyson Bulwark shield increased from 10k to 100k, half its hull. Damage of AOE weapon reduced from 4400 to 4000, damage of second weapon increased from 4150 to 6600.<br />
**Ship cap increased from 4 to 6.<br />
*Dyson Bastion shield increased from 10k to 100k, half its hull (not a hackable ship).<br />
<br />
*Alien hull tech cost lowered to: "500,1000,2000,3000,4000"<br />
**The first two levels are meant to be cheap, so players can easily get them. There is less science to go around so it's still a commitment, and you need to seriously increase AIP or/and spend a lot of hacking points in order to get enough alien shiplines to matter.<br />
*Sentries tech shifted to: "500,1000,2000,2500"<br />
**250 science of Level 2 shifted to level 1, level 3 lowered by 250 for aesthetic. Pricier level 1 means less autopicking level 1 and level 2 look more tempting even though the cost for level 1+2 is the same.<br />
<br />
*Destabilize Wormhole hack cost reduce from 120 to 20. A long delayed change due to being very low priority. It might be useful now.<br />
<br />
*Fallen Spire Frigate primary weapon damage reduced by 50%, added a secondary 20 shots weapon with dps equal to 50% of that reduced damage. DPS effectively unchanged.<br />
**This makes FS frigate a proper escort ship for capital ships, cleaning chaff while bigger ships focus on the bigger targets.<br />
**The primary reason for this change is performance. Big ships are the first to go down on both side, however when fighting the AI it often means the AI retreat once its big units go down. Over multiple battles, more and more 'chaff' ends up surviving as big units die. However big units are much more performance-friendly. This should greatly help early-mid and particularly late Fallen Spire games.<br />
*Fallen Spire Railfrigate from SpireShop mod has also been modified to fit. Its weapons values had been rounded upward, its secondary weapon hits 20 targets instead of 10.<br />
**Railfrigate now has 25k dps instead of 20k dps. Standard Spire Frigate has 30k dps and remains better stats-wise.<br />
**Its description mentions AI forces will focus it first, due to being it being a sniper. (This is why standard spire frigate survive MUCH better than railfrigate variant)<br />
<br />
* Huge thanks to ArnaudB for coming up with this and surprising us out of the blue with it! This is very exciting.<br />
<br />
=== Balance ===<br />
<br />
* Nerfed Polarizer base damage from 150 to 125.<br />
** Thanks to CRCGamer for making the change.<br />
<br />
* Added a new only_show_when_max_ai_difficulty_is_greater_than_or_equal_to and only_show_when_max_ai_difficulty_is_less_than to hacks (they default to 0 and 99, respectively).<br />
** The idea here is to let us have variants of the hacks for different difficulty levels, or different difficulty ranges.<br />
** Normally hacks already scale by difficulty, but some just don't scale well across difficulties, and trying to otherwise massage the numbers to make that work just is not always feasible.<br />
** This actually gives us substantially more freedom, because it allows us to completely swap things out at different levels if we want to.<br />
<br />
* There are now three versions of the superterminal hack. One for difficulties 7 and down, one for diff 8, and one for diff 9+.<br />
** The 7-and-down version has been returned to historical values, which are much more severe. Strategic Sage pointed out just how weak the response was after our recent round of nerfs, when it comes to those difficulties.<br />
** Currently both difficulty 8, and difficulty 9+, use copies of the same new-nerfed values, to keep those responses from being so absolutely insane. It may be the diff 8 actually needs to be a bit stronger, not sure. But essentially the scaling on this particular hack was just so intense that at 8+, and 9+ even moreso, the hack was almost impossibly difficult based on testing by ArnaudB and others.<br />
** Please let us know what your experiences are at difficulties 8 and 9, so that we can tune those up or down a bit more, as needed.<br />
<br />
* Further change: the difficulty 10 superterminal hack is now back to the pre-nerf values as well, and diff 8 and 9 can now be balanced independently. Those are both still at the nerfed values, but if they are too easy, please let us know.<br />
** Thanks to Strategic Sage and Metrekec for reporting.<br />
<br />
*Botnet golem now works like Sabot Guard Post: x100 damage against targets below 100 tx. It can attack everything and its damage, for both base and AI-version, is 1% of its previous damage. So same damage with multiplier.<br />
**A realization this was a much better way to handle Botnet while working on DLC2 golems prompted this change. This should solve the weird targeting oddities Botnet had, particularly with its excessive tendency to rush into enemy forces.<br />
**AIP cost reduced from 50 to 40. It cannot be buffed by FRS and it's immensely pricier to repair, so like Hive Golem an AIP cost reduction is justified.<br />
** Thanks to ArnaudB for orchestrating.<br />
<br />
* Two additions to the Watchman Frigate station-keeper.<br />
** First it has 33% reduced damage taken from anything that has arrived on the planet it is protecting within the last 12 seconds.<br />
** Secondly it always only takes half damage from opponents with an albedo of .7 or higher which is mostly stealthy cloaked types. It is named the Watchman after all.<br />
** Thanks to CRCGamer for coming up with and implementing this.<br />
<br />
*Spire Dreadnought only gain +50% damage to its beam weapon compared to the battleship, however it gains a secondary 20 multi-shots weapon like the frigate, with as much dps.<br />
**It has effectively 150%+150% damage compared to battleship, it's 3x as powerful instead of 2x.<br />
**The Imperial Spire Dreadnought also benefit from this, and should be able to clean up the map much more easily, leading to better performance.<br />
** Thanks to ArnaudB for setting this up.<br />
<br />
=== The New AI Overlord Phase 2 ===<br />
<br />
* Added forced_to_be_this_state_of_matter_when_on_former_or_current_ai_homeworld_or_bastion_worlds, which can make units be a certain state of matter when at current or former AI Homeworlds and Bastion worlds.<br />
** The AI Overlord Phase 2 now has this set to solo-phase, which means it has time to escape from its planets and for you then to be able to fight it.<br />
<br />
* Normal AI threat (which doesn't last long, since usually it joins the hunter fleet) now considers the AI Overlord to be perpetually in danger if it is Phase 2, and so should move to protect it more.<br />
<br />
* When the AI Overlord has moved into Phase 2 AND is no longer phased out, the AI sub-factions now abandon whatever they were planning and move in. This may mean that the PG starts striking at a very inopportune time for you, which should be pretty exciting.<br />
<br />
* Added a new findNearestHumanKing() to the faction utility methods.<br />
<br />
* There is a new should_not_be_given_normal_orders_by_ai_logic="true" that we can assign to certain units to exclude them from fireteams and other rational behaviors. For these we can then give them some sort of other logic.<br />
** There is should_always_be_given_orders_to_attack_player_king="true" that can be combined with the above, and when that has been done, it will send that unit on a path of destruction to the nearest human king.<br />
** Phase 2 of the AI Overlord now has both of these behaviors, while the rest of the AI forces that are subordinate to it are mostly focused on defending it and supporting it (so will come along kind of despite themselves).<br />
<br />
* For the first time, the AI Overlord Phase 2 now properly shows up on the normal galaxy map as an icon. Very important now that it's running for you so fast.<br />
<br />
* The AI Overlord Phase 1 no longer gives you any science or hacking points. That was making the end of the game too easy.<br />
<br />
* The AI Overlord Phase 2 can now pass right through forcefields (in addition to having the Norris Effect), so your military commands can't just block it.<br />
<br />
* The movement speed of the AI Overlord Phase 2 has been dropped from 400 to 300, and its health has been adjusted from 25 million to 64 million.<br />
** Its parasite bolts have also increased in salvo size from 60 to 80.<br />
** Hopefully this is an appropriate amount of terrifying; we shall see. In initial tests, it is definitely very Terminator-esque, which was the idea. It can still get caught and die on a single very heavily defended military homeworld choke point if there is one. Which is fine, good on you if you have that sort of defense!<br />
<br />
* Thanks to Metrekec, ArnaudB, Badger, and Zeus for the discussion that led to this.<br />
<br />
=== Player Command Station Balance Adjustments ===<br />
<br />
* Logistical command station balance adjustments:<br />
** Tractors down from 14 to 10.<br />
** Forcefields down from 6 to 3.<br />
** Gravity generators down from 6 to 3.<br />
** Base allied speed multiplier down from 3.5x to 2.5x, plus 0.5x per mark rather than 1x per mark.<br />
** Metal production down from 120 base + 80 per mark to 90 base plus 50 per mark.<br />
** Energy production down from 250k base + 100k per mark to 175k base + 50k per mark.<br />
** These are no longer quite such a huge standalone middle ground between economic and military. The goal is for people to use all three kinds, just in various ratios. These are also just not quite as good at slowing down enemies to a ridiculous degree like they used to be.<br />
<br />
* Military commadn station balance adjustments:<br />
** Tractors down from 22 to 16.<br />
** Immobile forcefields down from 4 to 3.<br />
** Allied attack multiplier down from 1.25x to 1.1x, and amount added per mark down to 0.15 rather than 0.25.<br />
** Defensive cap multiplier also down from 1.33 to 1.15.<br />
** Metal production down from 60 base + 40 per mark to 50 base plus 20 per mark.<br />
** Energy production alerted from 40k base + 20k per mark to 70k base + 10k per mark.<br />
** These planets were such insane roadblocks for the AI that the only thing offsetting them was player metal and energy. We want these to combo well with economic, but it was just a bit too much. The economic changes also make it more stand-alone on the energy side, but less so on the metal side.<br />
<br />
* Economic command station balance adjustments:<br />
** Forcefields down from 2 to 1.<br />
** Gravity generators up from 0 to 1.<br />
** Metal generation up from 250 base + 200 per mark to 400 base + 220 per mark.<br />
** Energy generation up from 400k base + 200k per mark to 500k base + 240k per mark.<br />
** These changes make them slightly more vulnerable even than they were before, but good grief can these power a ton of other planets in terms of metal and energy.<br />
<br />
* Thanks to Metrekec for the suggestions in this direction after his most recent difficulty 10 win.<br />
<br />
=== Bugfixes ===<br />
<br />
* When the nanocaust hive is destroyed the nanocaust stop doing anything; this is generally how hive-based creatures work. However, they now attrition much faster at this point, so we don't wind up having 3K nanocaust strength sitting around doing nothing<br />
** Thanks to TheIronBird for reporting.<br />
<br />
* Hopefully fix a problem hovering fleets in the Planet sidebar<br />
** Thanks to alocritani for reporting<br />
<br />
* Fixed a bug with the dark spire energy harvesting where, since the last build or so, it was not properly using the harvest ratios for the factions dark spire, macrophage, or devourer golem.<br />
** While we were at it, also made it so that it now properly harvests at a better ratio for the many subfactions of the AI.<br />
** Thanks to ArnaudB for discovering.<br />
<br />
* Removed a couple of exceptions that we were throwing as a sort of self-check in Helper_SendExoGalacticAttack_SingleExoTarget.<br />
** Essentially, the only time that these could fire is if an exo was just launching against a target right as that target died. In those cases it was leading to an exception, but that wasn't actually an error state, so there was no real point to this check at this point. In the past, it helped identify some edge case errors, but we're all good now.<br />
** Thanks to Sigma7 and Daw11 for reporting.<br />
<br />
* Updated beam weapons so that they no longer strike units that are invalid for them based on their normal targeting restrictions (aka, if they can only hit mobile units, then happening to pass over structures with the beam won't hit the structures anymore).<br />
** Also updated this for AOE in general, which had a code branch that was kind of mysteriously never being called. So if there is a minefield that a cruiser wanders over, for example, and the minefield only targets cruisers and things that are large like that, the minefield won't also damage nearby strikecraft anymore (essentially, that was likely to waste some of the power of the minefield in almost all cases, anyhow). If we need to make some further adjustments to this, we can, but right now the logic as it was before seemed to be a bit off to say the least.<br />
** Thanks to Sol for reporting.<br />
<br />
* Fixed a remaining exceptions that could still happen in ClearOrders() due to some cross-threading issues.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* The way that ship targeting works, if a target expects to be overkilled, no other ships will fire on it. This can sometimes backfire if the ship expecting to be overkilled is wrong about that. Or it can lead to ships that are closer who can fire faster shots to kill it faster waiting for a slow-moving shot from far away to arrive, which is also non-ideal.<br />
** We have now set this up where there is a two-pass system for ship targeting. In the first pass, things work like they have up until now. In the second pass, which only happens on systems that have 10s or less reload times (by default; not counting slowing or speeding modifiers), it now ignores overkill damage and if there are still any shots available within the current salvo, it fires on them anyhow.<br />
** This should solve a number of edge cases of "ships not shooting at targets that are in range," both in a short-term sense (big shot is incoming and it waits for it in a way that seems stupid) and in a long-term sense (something is wrong and nobody shoots anymore). However, this will need testing, since that was intermittent.<br />
** Thanks to CRCGamer and Democracy for reporting the latter case with Lanternfish Turrets.<br />
<br />
* Ships that have incoming shots attached to them, which is based around the concept of preventing overkill, now evaluate their lists of shots each sim step and cull any that shouldn't be there.<br />
** This happens for a variety of reasons, like ships that change states of matter, change planets, shots that are intercepted in some fashion, and so on.<br />
** It's really unclear if this data was sitting around and getting stale for the long-term over the last few years (until you save and reload), but it sure looks like it could have been. The more recent changes to the game have made it more likely to actually trigger, but the base thing seems to have been kind of old.<br />
*** Fun fact: we did have code for removing this sort of thing already, but it would ONLY trigger in the event that the shot that would be fired against the ship was not enough to kill it. So if a ship had a stale incomingshot, and it was at something low like 100 health left, and all enemies did at least 100 damage, then it would never reach the part of the code where it would clear the stale incomingshot data. This seems most likely to be what was going on with the Lanternfish Turret bug, but it's hard to be sure just yet. Please let us know what you find in the new version!<br />
** Thanks to CRCGamer and Democracy for reporting.<br />
<br />
* Put in a secondary check for unit death on them taking damage. This might hopefully help with ships that were taking self-damage but not actually dying until something else shot them.<br />
** Thanks to Zeus for reporting.<br />
<br />
* Added the following to the Zenith Trader description: When it is on one of your planets, you will see its wares in your Build menu in a section near the bottom.<br />
** Thanks to Lyrad8791 for alerting us to the fact that this was never specified anywhere in the game.<br />
<br />
* Fixed a bug in the galaxy map filters where if you chose the "Normally invisible" option, it would just throw endless errors rather than showing you a value.<br />
** Thanks to alocritani for reporting.<br />
<br />
* Some factions can request that threat against them go back to guarding (like zombies, dyson sphere, etc). This request was not being always honored, especially the Dyson, which could to vast quantities of threat against the Dyson that would eventually go after you.<br />
** Thanks to Badger for finding and fixing.<br />
<br />
* Rather than the previous logic (from inwork on this release) trying to get rid of threat against other factions, which was either too aggressive or not aggressive enough, we now have a hunter_targeting_this_faction_dies_immediately="true" that has been added to the dyson sphere factions.<br />
** Essentially, if hunter are after them, it's time for those hunter units to die. Those were the ones coming after your homeworld erroneously. If it's other forms of threat against that faction, or threat in general against other factions, those seem okay.<br />
** Thanks to Arides, ArnaudB, and others for reporting. And big thanks to Badger for advice on how to best make this work.<br />
<br />
* Similarly, for the warden and praetorian guard, if they are targeting a faction that is nowhere near them, then they now also get killed off.<br />
** This solves some issues where they were building up against a secondary faction, then could not reach them anymore (probably because they murdered the threat), but now they just sit around like idiots.<br />
** Killing these units allows them to respawn better ones that actually will do things like defend their homeworld from the players.<br />
** We don't know for sure this is why some PG were sitting off to the side, but we suspect it could be related.<br />
<br />
* Fixed some issues that could cause the inability to deserialize a savegame to get you into a strange invalid state rather than just telling you it didn't work.<br />
<br />
== Beta 2.758 Threat Explanation ==<br />
(Released March 16th, 2021)<br />
<br />
* Tweaks to the new planet sidebar:<br />
** If Watched and Local fleets are both below the Ships, Watched fleets are above the Local fleets.<br />
** If a fleet is both watched and Local it now appears under Watched rather than local.<br />
** If a fleet is local, its hotkey is now shown in green. This way you can now tell which of your watched fleets are local.<br />
** Hovering the fleet in the sidebar now gives text similar to the Fleet Health menu<br />
** Thanks to Badger for proposing and for implementing these!<br />
<br />
*Plasma Guardian lowered Albedo from 0.4 to 0.3<br />
**Absence of commonplace counters made it too problematic in waves, this makes it vulnerable to tractor which it does have bonus damage against.<br />
** Thanks to ArnaudB for adjusting.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a bug where crippled flagships in the Planet bar were reporting 2 ticks of health instead of 1 tick<br />
<br />
* Add some more debugging to errors in exogalactic strikeforce generation<br />
<br />
* Fix a bug where you toggling fleets between Watched and Unwatched would fail<br />
** Thanks to Daw11 for reporting<br />
<br />
* Added a fix to situations where the AIP was zero potentially causing GetSpendingRatios() to have a divide by zero error. Maybe this was just something that happened on initial game load for part of a second while data was being loaded, it's not clear, and maybe it's only on certain machines with (particularly fast?) types of multi-core setups. At any rate, it will now handle this gracefully instead of shutting down the AI faction, and it shouldn't even be an error anymore.<br />
** Thanks to Master Frost for reporting.<br />
<br />
* QueueLogJournalEntryToSidebar() has been updated so that the old version is obsolete, and modders and similar need to update their code to use a new version that has an OnClient enum parameter.<br />
** This new parameter generally tells the game to either ignore this on clients -- almost always a good idea, unless this is something detected only on a single client only -- or run this on the host only.<br />
** The default for anything that is still using the deprecated versions is that it will run on the host only.<br />
** Essentially, these are quite midsize messages that should not be going out in large batches, but sometimes were. This would potentially swamp a multiplayer game, potentially if it actually created all those journal entries at the far end (you'd have tons of duplicates and savegames would be strangely large.<br />
<br />
* Fixed the following journal entries that were at bare minimum happening too frequently in multiplayer because client were trying to do it, but may have happened even more than that.<br />
** First time met PG, hunter, AI reserves, warden, dark spire, astro trains, dark zenith, outguard.<br />
** All the various astro train secondary notices.<br />
** All of the "base lore" journals for the various races and similar.<br />
** Imperial spire arriving, and nanocasut invasion starting.<br />
** All of the other journal entries were fine. Things like the beginner journals, info on allies, zenith architrave stuff, extragalactic war starting, and many various other more specific situational ones were already MP-safe.<br />
** Thanks to Badger for noticing the insane number of these that were being queued in his multiplayer games.<br />
<br />
* The AI Defenses galaxy map filter no longer shows data for unexplored planets.<br />
** Additionally, it now only shows the amount of defense that you actually know about, and if there are more that you don't know about it shows a + sign after it.<br />
*** This in itself does reveal some information to you, but that feels appropriate. Is this one unit we're talking about, or 5000? Something more is there, but how much?<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Fixed an issue with the new planet sidebar where it was not properly caring about the amount of time units had been on a planet when deciding what of them to show in the new by faction and by faction and mobility views.<br />
** We haven't been able to replicate the issue, but we've seen the screenshots and also we saw the wrong code. So hopefully fixing the wrong code will fix the issue that others were seeing.<br />
** Thanks to Daw11 and Zweihander2021for reporting.<br />
<br />
* Fixed a bug where, since just after the new states of matter were added, we've had an issue with scouting intel being wiped out on old planets any time a save was loaded (basically every ship was being told it had just arrived on the planet), AND entirely wiped out for multiplayer clients in general.<br />
** Thanks to Zweihander2021, alocritani, and RedPine for reporting.<br />
<br />
* Fixed a bug where the tooltips would show you the AI homeworld without you having ever scouted there. This was new sometime recently in the beta.<br />
** Thanks to alocritani for reporting.<br />
<br />
* Fixed a rare exception that could happen in HandleSpecialEffectRequests(), and made it a bit faster while we were at it.<br />
** It's possible that the exception will still happen, but if so we will now have more information on where it happens.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Sometimes Unity logs some spurious errors that start out "<RI.Hid>" and those would pop up and get in your error log as well. Those no longer will do that.<br />
** Those still go to the unity log if there is truly a problem, but almost universally it's something like "oh we can't find your other monitor that you disconnected since last time, well no worries we'll just use your main one." These are not things that should be throwing freaky errors for you to see.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* When you are in a Drain situation in metal, it now should give you a more accurate percentage of what you have remaining, as well as a more accurate timer of how long it will take to complete all of your current work.<br />
** Previously, it was really just wrong in a variety of ways.<br />
*** Now it only counts each thing being built in a fleet once, no matter how many factories were helping it. Previously, 3-4 factories would cause it to to be 3-4x as high.<br />
*** However, now it also counts how long it will take to build the rest of the entire queue for a fleet item, if it's not disabled, so that might be 50 things rather than 1, 3, or 4.<br />
** Anything that was self-building, or being assisted by engineers was already correctly calculated.<br />
** Any drones being built were already correctly calculated, and same with rebuilding remains, in that those don't actually cost you any metal at all. Note that after something is rebuilt from remains, it has to be repaired, and THAT part has a cost, which is correctly tracked now.<br />
** Anything being claimed is now correctly tracked, whereas before it was estimating vastly too much. If a golem that cost 1m metal had 5 things working on it, it would think you needed 5m metal. Way off.<br />
** Engine repairs are free, and those are now properly ignored. The metal allocated for them is just for how fast they are repaired, but it was showing up as an actual amount you'd need to spend. Same thing for personal shields being repaired. That's also free.<br />
** For hull health and bubble forcefield repair, it now tracks the remaining cost correctly, versus before it was only including a tiny fraction of what was needed, plus also multiplying that by the number of repairing engineers. That just had no connection to reality, really.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
==== Accurate Threat Counts, Hunters, And Similar ====<br />
<br />
* First off: what are we on about with the below changes?<br />
** Well, some funky things are happening with the hunter fleet, and that seemed like a symtom of a larger issue.<br />
** As part of that, I found some code that was quite inefficient (string comparisons), and also potentially sometimes wrong (turns out the flavor of hunter you selected could make certain code work or not).<br />
** Untangling all of this took more time than originally intended, but should solve some issues as well as fixing the potential for future mistakes.<br />
** Overall this was a giant rabbit hole that did not solve the original problem, but did uncover a couple of others and proactively solve them, hopefully without causing new ones. Some of the strangeness of the hunter and similar sometimes not behaving may now be fixed, but it's hard to say.<br />
<br />
* GetSpecialFactionName() has been deprecated, as all the places that were using it were basically either using it inefficiently or using it when a nicer name should instead be showed.<br />
** There are a variety of places in the interface that are now more clear and less debug-text-looking, and other parts of the engine that simply run faster.<br />
<br />
* It's possible that hacking the Vengeance Generator from the Dark Spire, and other similar actions, were just broken by the above change.<br />
** Same with Dyson Sphere hacks.<br />
** Same with Dark Zenith Library.<br />
** Same with Zenith Architrave Portal<br />
** If anyone can confirm if those various things still work -- in a fresh campaign, not an existing one -- that would be super helpful.<br />
** Below in the notes, we note a code and xml analaysis has looked at all of these, but just to be sure it would be nice to have eyes on.<br />
<br />
* It's also possible that depot events targeting specific factions are no longer working with astro trains.<br />
** Same with waves launched at specific non-player factions.<br />
<br />
* Looking at the above, the following divergences were found:<br />
** AI Risk Analyzers had a different name in the code and the xml. That would have busted them some, but the one bit that was using the old code-style name seems resolved now.<br />
** One of the two hunter fleet variants was inconsistent with the other and the xml... who the heck knows what this would have caused in the past. Probably bugs of the sort I am worried about happening now, but at any rate it's now fixed.<br />
** Wow, same thing happened with one of the two Praetorian Guard code instances. I wonder what problems this was causing.<br />
** Aaand the Warden Fleet had two different versions in code, and a completely other thing in xml. Yikes.<br />
** Dark Spire had a difference between code and xml. Same with Devourer Golem. And Dyson Sphere. Also Macrophage.<br />
** We had an extra SpecialFaction_NanobotZombie faction in code that was an old remnant. That's been cleared out.<br />
** Relentless AI Waves had a different name in code and xml, too.<br />
** Everything else was consistent. Not counting mods, this was 42 factions or subfactions, with 9 being inconsitent, and 1 being just an extra outdated thing. So that wa still 32 that were correct and consistent.<br />
** There were three places where this was definitely going to cause problems in the future with the Risk Analyzers, but those are fixed proactively.<br />
<br />
* Looking at code based on the above, the following results were found:<br />
** Dark Zenith Library xml looks to still work.<br />
** Same with Zenith Architrave Portal, looks good.<br />
** Dark Spire were broken by these changes, but the xml should now be fixed.<br />
** Dyson Sphere was definitely also busted, but the xml should now be fixed.<br />
** Everything else seems to have already been consistent and no problems.<br />
<br />
* Added is_always_a_direct_attack_against_players, which lets us track certain factions which are always basically threat regardless of the rest of their disposition (unless they are actively attacking you).<br />
** This applies to the relentless waves, the tsunami CPA units, the AI reserves units (those do go away, but while they are present they count), instigators, anti player zombies, anti everyone zombies, and that's it.<br />
<br />
* is_considered_hunter, is_considered_warden, and is_considered_praetorian have been added to make it much easier to check which factions are of that type.<br />
** This is purely a processing efficiency thing, which is relevant the more ships there are in the galaxy. Mostly for backgroudn threads, but still.<br />
<br />
* The way that the threat is calculated has been updated a bit to hopefully avoid some edge cases where it seems incorrectly under-counted.<br />
** This did not change much in the savegames that people gave us.<br />
<br />
* The display now shows threat numbers that include even numbers on player planets -- aka, before, threat ships would become attacker ships, and they were either/or.<br />
** This was very messy and confusing, because attacker ships might just be something random passing through, and might not truly be a subset or even intersection with threat.<br />
** For the sake of consistency, threat is now threat even if it's on your planets. That way the threat doesnt' seem to diminish just because it's on your planet now. That looked like you were killing something when really you were not.<br />
** Similarly, the strength and number of ships attacking you is just all about enemy ships actually at your planets, and their status doesn't matter.<br />
<br />
* Added a new RelativeToOtherFaction_ThreatStrength and RelativeToOtherFaction_ThreatStrengthVisible, which lets players have an idea of how much of the enemy threat forces are aimed at some other faction than them.<br />
** These actually give an enormously better picture, in the threat screen in particular, of what is threatening factions other than the player.<br />
<br />
* Similarly, the monolithic number of the hunter fleet strength is now broken out by that part which is against humans, and the portion that is against other factions, and breaks that out on the threat window display.<br />
** This was the final piece of the clarity puzzle. Most of the actual numbers that were wrong were only a bit wrong (missing counting certain things, etc), but not being able to tell that huge parts of the hunter fleet have no interest in you was kind of a big deal.<br />
** Note taht this could also make the hunter fleet look insurmountably dificult. <br />
*** In one example, there were appearing to be 275 threat against humans, but really there was 308. But at the same time, it said there was 646 hunter strength, which would be unbeatable... except only 69 of it was against humans.<br />
*** In the other example, the total threat reported was 312, but the real threat was actually 347. It said 652 hunter strength, but only 74 was against humans.<br />
** Both of the examples of "impossible games" are actually more to do with what looked like impossible odds because of hunters doing things that won't bother you unless you specifically go and harass them.<br />
<br />
* Thanks to Lord Mekton and Arides for reporting the things that led to this rabbit hole.<br />
<br />
=== More Mode Icons, And Tracking Hunter Targets ===<br />
<br />
* On the individual ships, we now have an "IsAfterANonHumanTeam_NonSim" that allows for us to keep track of which ships are not here for you right now.<br />
** Based on the name of the variable, you can probably guess, this is not meant to be used with the simulation itself, but only for display.<br />
<br />
* Added about 15 new underlays that can be used for ships, complete with selection circle colors to match, etc.<br />
** Split these out into a new Official_SelectedStatus sprite dictionary, instead of them being part of the "central bits" with health bars, etc.<br />
** This actually makes these moddable for the first time, without them being incompatible with basic health bars and such.<br />
<br />
* Updated our two main compound-icon shaders to allow for passing in this other image, and pulling the data from it.<br />
** The overall efficiency of this is actually a bit higher, too, now that we have more icon options. We're able to use two smaller 1024 images rather than one larger 2048 one (which is 4x the size, not 2x like the current approach).<br />
<br />
* Fixed a bug in our existing calls to the compound-icon shader from half a year or so ago, where it was one of those "how did this even work?" things.<br />
<br />
* We are still using the ActionStatus internally, it turns out, but we are also now using that in combination with the recently-added (and now filled-in) IconShipStatus.<br />
<br />
* States of matter now define a icon_ship_status_to_draw_when_not_in_alt_mode, which lets us (or modders!) define custom status icons and rings for the various ones.<br />
** Multi-phase and single-phase and dark matter states all now have their icon states set up!<br />
** The only one you can really see yet is the multi-phase one, for the spire relics in DLC1, but those work well! Expect to see more of both solo-phase and multi-phase in DLC2.<br />
<br />
* When AI hunter ships or similar are after NPC factions, rather than you, they now get a different icon status behind themselves.<br />
** One thing to note in this sort of situation is that the Threat galaxy map view will NOT show these ships, since they are not threat to you (unless you walk into them), but if you do the strength filters for the hunter you will see them.<br />
*** It's worth knowing where the hunter is, even when it's not aimed at you, because if you happen to fly up to them while they are waiting to hurt some other faction, they will pass the time by hurting you instead.<br />
<br />
* For hunter ships that are after another faction other than you, in their tooltips it now says that "NOT AFTER YOU" and then some added text explaining who they ARE after, and some general advice on dealing with them, depending on how detailed your current tooltip is based on what buttons you are holding down.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** The SmartFactionImplementationBase and AMU_Utils classes now have the Log() utility function, which is but a shortcut for ArcenDebugging.SingleLineQuickDebug(), but cleans up code a lot.<br />
** The InitializeExternalData() function now requires a Faction object passed into it. Thus the game no longer needs to even start for it to work, which is important if it's needed during mapgen already.<br />
** The InitializeSettings_AlwaysDoBase() function is now always executed upon creation of the Faction Implementation, thus the settings are available from the very start of the implementation, which is once again important during mapgen.<br />
* Kaizers Marauders:<br />
** Used the new Log() function in AMU to clean up code.<br />
** Adjusted the Journals creation to the new method in Vanilla so it's up to date.<br />
<br />
== Beta 2.757 Super Mega Exciting Sidebar ==<br />
(Released March 12th, 2021)<br />
<br />
* Holding both W and S will now do nothing rather than moving forward, and same with A and D and not moving sideways.<br />
** Thanks to Feuermagier for reporting.<br />
<br />
=== Planet Sidebar Improvements ===<br />
<br />
* Completely re-coded the planet view sidebar under the hood so that it is more flexible and more efficient, and so that we can start making some new options on how it will actually show information.<br />
<br />
* Step one after that was basically just to get it back to more or less what it was showing before, but with some basic improvements:<br />
** Ships of the same type from different factions that are in the same category (aka multiple groups of enemies with v-wings) now have their own icons with proper colors.<br />
** You can now see unit remains, under construction ships, and crippled ships broken out from their counterparts that don't have such a status, in the event that there are such ships. Before they were always lumped together, or just ignored entirely from the sidebar standpoint.<br />
** Some of the wording for when you're looking at a planet that you can see, but where there are no ships visible at all, has been improved.<br />
** In the event that there are some ships present in a category, but the strength is less than 0.1 (and thus would cause it to say 0 strength), it now says 0.1 instead. This was needlessly confusing when the strength was literally too small to register.<br />
** These bits are just the tip of the iceberg on all sorts of new stuff we can now do.<br />
<br />
* The way that ships in each category (yours, allied, enemy, etc) show up is now vastly better sorted.<br />
** Previously it was stuff with a higher strength value first, and then a semi-arbitrary order for things with equal strength.<br />
** Mow it's command stations first (any faction, then major AI structures next (any faction), then noncombatants next (any faction -- probably these are capturables), then sort by faction within the category.<br />
*** Within each faction, it's sorting by fleet leaders very first, then stationary after that, since these are thing that tend not to die as much and cause others to cascade around. Within those, turrets are last. In the mobile group, it goes elites, then large ships, and lastly strikecraft. <br />
*** Within each tiny group, it sorts by name, and when there are duplicates of the same thing with different icon statuses (crippled, uncaptured, still building, etc), it sorts by those.<br />
** All in all, this should make things vastly easier to find when you go scanning through a list. It's the least invasive version of this sort of change, and potentially can be refined more, but it keeps things together in such a way that you can more easily find what you are looking for.<br />
** Thanks to lots of people suggesting this for years, but perhaps Badger was the original pioneer of requesting this.<br />
<br />
* The planet sidebar tab now uses a global list of icon buttons, regardless of which category they go in, to make them a lot more efficient, particularly if we have way more than four categories for any reason.<br />
<br />
* There are now a group of options that are shown at the bottom of the planet sidebar in a normally-collapsed section. These are personal settings that are saved between games and sessions, so you should not need to alter this often. However, if you are the sort who likes to toggle between a few different views on different planets or just to check something for a moment, these are conveniently placed so that you can do that without having to go into menus and back out.<br />
<br />
==== Subsectioning By Faction ====<br />
<br />
* An alternative mode for sectioning the planet sidebar has been added: by faction.<br />
** The prior one was by relationship, and just showed you, then all allies in one lump, all enemies in a lump, and then the nobody faction.<br />
** This new one shows each individual faction that has ships present, sorted first by those categories, on the sidebar.<br />
** The difference here is incredibly dramatic, and this is really powerful of a feature. For now it is still not the default, because the default relationship one has already been made so much better.<br />
<br />
* There is now a short_name="Name Here" xml attribute available to all factions. It has been applied to all factions in the main game and DLCs, but modders should also be sure to apply it to their own factions.<br />
** The idea is to have a much shorter name that comfortably fits on the sidebar when viewing the sidebar by-faction, so abbreviations and lots of left-out stuff is good.<br />
** When hovering over the faction abbreviation on the sidebar, it shows the full name, so this really is just all about space (and sorting -- the short name is what is used for sorting the list).<br />
<br />
* There is a third and final alternative mode for sectioning the planet sidebar, and that is "by faction and mobility."<br />
** This breaks out all of the things that are mobile or stationary per faction.<br />
** Please note that for the concept of mobile, if it's a ship that can't go through wormholes and thus can't leave the planet, it will still be counted as immobile for sorting here (so FFs that can move a bit but can't go through wormholes, engineers that can'go through wormholes, etc). Essentially these are forces that can't go attack enemies. <br />
*** Your support factories, battlestations, and citadels are also included in the immobile camp, as they are able to go through wormholes BUT are primarily angled at setting up camp locally and deploying stuff for a while.<br />
** When thinking about mobility for yourself, this is mainly a separation of your stuff that would be a major undertaking to get to another planet.<br />
** When thinking about mobility for enemies, this is mainly a separation of the items that they can't use to attack you on other planets if you aggro them.<br />
<br />
==== Local Fleets On Planet Sidebar Tab ====<br />
<br />
* The fleets sidebar no longer has a top section, with blue colors, noting fleets that are on the current planet.<br />
** This has always been something that a lot of people find confusing, even though it was organizationally handy. But the confusion of this, mainly with it being on the fleet sidebar, was just too much. We can do this a better way.<br />
<br />
* On the planets sidebar, you can now see the fleets that are at the local planet, listed by default under all the other ships.<br />
** The tooltips and controls on these buttons, and most of the button visuals, are identical to what you see on the fleets tab.<br />
** The main difference is that instead of showing the planet name of the fleet, it shows either blank space (when all is well) or the shield bar if the flagship of the fleet has taken shield damage, or the health bar if the flagship has taken damage.<br />
<br />
* When the flagship of a fleet is crippled, it now shows up with the words CRIPPLED in orange on both the fleets tab sidebar and the planets sidebar.<br />
** This makes it super obvious when that's actually going on.<br />
<br />
* All of the fleet management subscreens can now be open on either the fleets or planets tabs. Since you can now open them on the planet tab, this saves a lot of effort in terms of clicking over to the fleets tab, particularly when upgrading fleets that happen to be on the current planet.<br />
<br />
* On the planet sidebar, you can now see the strength of fleets like you can on the fleets tab. However, it's shown by the overall fleet health meter (both of these get replaced by the crippled notice if the flagship is crippled.<br />
<br />
* Also on the planet sidebar, if you hold shift you will notice that the ship cap numbers get replace with the colored name of the planet the flagship is on.<br />
** This is less crucial information, but having it in easy toggle range is nice.<br />
<br />
* On both the fleet tab and planet tab, if a fleet is in transport mode, it now has a little cyan (T) behind its name.<br />
<br />
==== Watched Fleets ====<br />
<br />
* Added a new Fleet Watchlist feature in the fleet management details window:<br />
** Normally on the planet sidebar, you can see a list of all the fleets you have on that planet, including the health of the flagship. There are times where you want to keep an eye on a fleet at all times, even when it's on other planets, though. The fleet watchlist allows you to monitor specific fleets on the planet tab of the sidebar regardless of where you go.<br />
** If a fleet would show up on the watchlist AND the local planet fleet list, it just shows up on the local planet list, since that's more informative.<br />
<br />
* if a watched fleet is on the current planet, and the current planet local fleets are shown and open, then it doesn't double-show the fleet in both. It just includes the fleet on the local planet list (but keeps the count of fleets correct in both categories).<br />
<br />
* Thanks to Badger, Strategic Sage, Arides, and others for the requests that led to all these fleet additions on the main planet view, including watched and local fleets.<br />
<br />
=== Cripple Mechanic Updates ===<br />
<br />
* Ships no longer become crippled at 10% health. Instead, they become crippled when they are literally at 1 health. This gives more wiggle room, and is more intuitive in general.<br />
<br />
* Major simplification of crippling penalties:<br />
** Rather than having a bunch of things configurable per type of ship, it's now global for any ship type that can be crippled.<br />
** Ships simply get a 2x multiplier to repair costs when they are crippled. This just undoes the normal repair discount versus building fresh.<br />
** The bail-out function is now turned off by default.<br />
** You can still have a hacking point cost to ships getting crippled if you wish to, but the default is now 0, and whatever you set is now global for all unit types.<br />
** Thanks to ArnaudB for succinctly summing up why this was a good way to go.<br />
<br />
* Additionally, all of the cripplng-related features, and the human balance features in general, can now be edited mid-game.<br />
** So if you had an ongoing game that you loaded into a recent build that turned on bail-outs and such, you can turn that off if you prefer.<br />
** Thanks to Democracy for reporting.<br />
<br />
== Beta 2.756 Choice Of Injury ==<br />
(Released March 10th, 2021)<br />
<br />
* Added a note in the AI hacking response bit where it characterizes that stuff as Slothful or Terrifying or whatever:<br />
** "Note that the hack itself may have a response that is far more aggressive than the generalized AI response component."<br />
** Thanks to Leif for noting how the "slothful" hacking response to a superterminal hack can still be apocalyptic.<br />
<br />
* The superterminal hack has been toned down in general, so that hopefully it's not quite so devastating. It turns out that simply tuning some of the numbers on the hack itself was probably the way to go.<br />
** This may still be too hard, or may now be too easy. We'd be very interested in feedback. Likely the response will be somewhere in the ballpark of 1/3 to 1/2 as strong, but it's hard to be sure and we've not tested the results yet.<br />
** Thanks to Arides for reporting.<br />
<br />
* The Render Vengeance Generator Vulnerable hack was insanely too difficult and also pricey.<br />
** It now takes only 250 seconds rather than 300 (this prevents the tail end that is craziest).<br />
** The primary response strength has also been dropped from 2.5 to 1.8, and hopefully this does not make things too easy when paired with the above.<br />
** The secondary response has dropped from 1.5 to 1.1.<br />
** The cost in hacking points has been dropped from 60 to 35.<br />
** Thanks to Bionic for suggesting.<br />
<br />
* Added a new "Human Balance" section to the Balance tab of galaxy options.<br />
** These settings change up some of the balance to human players in general, but not any one particular empire or type of human player in multiplayer.<br />
<br />
* Fixed one oversight with the new ship states of matter stuff, where their "time on the planet" was not resetting when they change states of matter. Now that works as desired, and their time on the planet is indeed rest.<br />
** Thanks to Zeus for suggesting.<br />
<br />
* Fixed an INCREDIBLY longstanding bug where fatal damage to a ship was not being noticed correctly some of the time when ships took damage from a source. This was denying them chances to do things with specialized "when I kill a unit" effects, and probably throwing off kill count credit, as well. Mostly it was not a huge thing, but it was clearly wrong.<br />
** Historically, we have had a function that goes in there and finds 0-health units and kills them later if we don't know why it's at zero health. But in the last couple of builds we took that out partly, mainly because with changes in mark level you could get units at 0 health based on them being partially damaged and then losing a mark level, and those should not die from wounds of that sort in our opinion.<br />
** That said, if this is continually a problem, we can reinstate that; the true problem was with command stations of players, and player flagships, and we can certainly make THEM not have this logic while everything else does. But having this work properly is probably best for all sorts of reasons with ships in general, and things seem to work properly now that we've fixed the core "notice we just killed an enemy" code being corrected. So we'll see how that goes.<br />
** Thanks to Strategic Sage, Zwei, and arl85 for reporting.<br />
<br />
=== Citadel Overhaul ===<br />
<br />
* Citadel rebalance.<br />
** Citadels no longer come with a bunch of turrets already attached to them. You only get whatever you have from the TSS.<br />
** Citadels themselves are of course very powerful still.<br />
** AIP to claim has been reduced from 60 to 25.<br />
** Defensive structure cap multiplier from 133% to 140%.<br />
** Citadels now always come with 8 interplanetary engineers.<br />
** Note that about half of these features will only apply on new savegames (AIP reduction, defensive structure cap increase).<br />
** Thanks to Arides for starting the discussion, lots of folks for weighing in, and ArnaudB for most of the design of the solution.<br />
<br />
=== Forcefield Harmonics ===<br />
<br />
* Added a new ability: can_pass_through_enemy_forcefields="true"<br />
** FORCEFIELD HARMONICS: Can match shield harmonics to pass through enemy forcefields, although any weapons fire it does will still impact on the forcefield itself.<br />
** Given to the following units:<br />
*** Astro trains of all sorts, and relic trains.<br />
*** Devourer Golem, Ravenous Shadow (ouch).<br />
*** Zenith Trader and Cyborg Ambassador (the latter is mostly thematic).<br />
*** All members of the Imperial Spire (good thing they're on your side).<br />
*** Spire relics (handy for you).<br />
** Thanks to Zeus, CRCGamer, Bionic, and others for helping come up with this idea and name, mainly in response to the new immobile forcefields (always an arms race!).<br />
<br />
=== Scrap Refunds ===<br />
<br />
* New human balance subsection feature: Scrap Refunds On Friendly Planets<br />
** What percentage (0-50%, default 15%) of the cost of a scrapped unit do you get back? This only applies to units on your own or allied planets, and damaged or incomplete units return less.<br />
** Untested, but should work.<br />
** Thanks to Zeus, Strategic Sage, CRCGamer, and Metrekec for weighing in on this.<br />
<br />
=== Crippling Mechanics ===<br />
<br />
* Once a ship has been crippled, it will now stay crippled until it is back to 100% hull health.<br />
** This was a change we were going to make in general for some of the refleeting flow work, but it also puts an end to another exploit where you could upgrade golems (artillery for example) by direct science upgrades in order to un-cripple them.<br />
** Thanks to Strategic Sage, NR SirLimbo, and ArnaudB for the initial discussion on crippling, and Sigma7 for the report on artillery golem exploits.<br />
<br />
* Metal expenditure changes for crippled units (some of this may already have been happening, but now it's double-sure):<br />
** Drones are no longer built inside crippled flagships.<br />
** Crippled factory battlestations will no longer produce any ships.<br />
** Crippled engineering battlestations and similar will no longer repair any targets.<br />
** Flagships in general won't be able to use claim beams, or repair remains, if they are crippled.<br />
<br />
* New human balance setting: When Crippled: Bail Out To Nearest Friendly Planet<br />
** When a mobile ship belonging to a player is crippled, it immediately 'bails out' to the nearest allied planet. If there are no such planets, then it is sent to the nearest neutral planet. If there's still nothing, it stays where it is. Defaults to on.<br />
<br />
* New human balance setting: When Crippled: Bail Out To Nearest Home Planet<br />
** When a mobile ship belonging to a player is crippled, it immediately 'bails out' to the nearest allied home planet. If there are none available, or it is already on the home planet, it will move to the nearest allied planet in general. If there are no such planets, then it is sent to the nearest neutral planet. If there's still nothing, it stays where it is. Defaults to off.<br />
<br />
* No matter what, when a ship is crippled and belongs to you, it now gives you a chat message about that.<br />
** It gives information including the player name and planet name, and goes into the central chat log for later reference if need be.<br />
** This should be pretty helpful in multiplayer, particularly if someone is not noticing that their stuff gets crippled.<br />
** Thanks to Badger and his play group for inspiring this change.<br />
<br />
* Ships will now fully-reliably do their "on crippled" logic in general, if they have any.<br />
** Sometimes before if they were crippled by passive effects or attrition or similar, they would not do whatever was unique to that faction for the crippling effect.<br />
** Note that in existing savegames where your ships were already crippled, this will now catch them and cause them to bail out or charge you HaP or whatever.<br />
<br />
* balance_repair_extra_cost_for_seconds_after_crippling has been removed.<br />
** This was previously set to 120 seconds, and it made sense when the crippled status was something that you could just wait on.<br />
** Previously, if you could repair a ship back to 10% health and have it un-cripple, and then the other 90% of health would either be during or after this 120 second period, costing you more or not; if you micro'd it, you could get around it, which is never good.<br />
** Now the crippled status doesn't go away until a ship is fully repaired, so we have no need for a timer like this (at least not related to crippling).<br />
** Ships will simply cost more to repair while crippled, and not cost more to repair when not crippled, and that's much simpler.<br />
<br />
* balance_multiplier_for_ships_that_have_extra_repair_cost_temporarily has been removed.<br />
** This was previously set to 3.5x, globally, which was really hard for golems and no bother at all for transports.<br />
<br />
* Added a new section to balance in the galaxy options screen: Crippling Costs.<br />
** These settings change up how much it costs when one of your large units is crippled.<br />
<br />
* Added Cost Multiplier Of Repairing Crippled Transports.<br />
** After they are crippled, and until they are repaired to full health, their repairs will cost this much more than normal. Default 4.5x for transports. Range of 1x (normal) to 6x, with lots of intermediate options.<br />
** Also identical options for a bunch of other categories:<br />
*** Default 1.25x for officers (golems and arks).<br />
*** Default 2.5x for battlestations (basic only; not citadels).<br />
*** Default 1.75x for citadels.<br />
*** Default 2x for support (usually combat factories).<br />
*** Default 1.35x for lone wolves.<br />
** Normal 1x cost for anythinig that isn't one of those categories somehow.<br />
** Thanks to Strategic Sage, NR SirLimbo, and ArnaudB for suggesting this in general.<br />
<br />
* When ships bail out due to crippling, they are also paralyzed for the max time allowed when they reach the destination, but they don't have any other new bad status effects on themselves.<br />
<br />
* New group of options in the Crippling Costs section of the galaxy options: Lost Hacking Points When Transport Crippled<br />
** Each time they are initially crippled, how many (if any) hacking points do you lose? The default for transports is 1. The range for any of these is 0 to 20.<br />
** And the other similar settings:<br />
*** The default for officers (golems and arks) is 4.<br />
*** The default for battlestations (basic only; not citadels) is 2.<br />
*** The default for citadels is 3.<br />
*** The default for support (usually combat factories) is 2.<br />
*** The default for lone wolves is 5.<br />
** These also pop up as part of the message visible to all players, but only the player who actually had a unit crippled takes any hacking point loss in multiplayer,<br />
** Thanks to Strategic Sage, NR SirLimbo, and ArnaudB for the discussion that led to this end result as well.<br />
<br />
==== Technical Bits ====<br />
<br />
* The WarpToPlanet code function from AMU has also been moved to the main game. <br />
** We made a slight change in that ALL guarding offsets are now cleared, not just those for melee, since the planet is new and thus a guarding offset is meaningless in the new place.<br />
** Thanks to NR SirLimbo for coding and contributing it!<br />
<br />
* Added a new GetIsFriendlyTowardsSafe() on units, which allows us to check friendliness easily with any other faction, not just the local one.<br />
<br />
* Added WarpToPlanetAtSafePointNearCommandStationIfPossible, which tries to put you near the command station, or another fleet leader if that's not possible, or just a friendly unit if none of those are possible.<br />
<br />
* Added FindNearestAlliedPlanet_FairlyExpensive() on planets, which lets us find the nearest allied planet (by hops) from a given faction with a specific starting planet.<br />
** Also added FindNearestAlliedOrNeutralPlanet_FairlyExpensive, which does the same thing bug for allied, neutral, or owned-by-nobody planets.<br />
** And finally also added FindNearestAlliedKingPlanet_FairlyExpensive, which is the same as the first but also requires that there must be a king unit (generally a home command station) on said planet. This could be your home command, or an allied on in MP.<br />
<br />
* GetFauxFIntValueFromSettingByName_DefaultOne_DuringGame now uses an internal dictionary to cache string results that it has already parsed in some fashion, which saves on processing when this is called frequently.<br />
<br />
* Updated the AMU mod to not freak out with the new changes.<br />
<br />
* Units that have not yet been fully claimed are unable to be crippled (they also don't die, but they don't get the cripple status, cost extra, or bail out).<br />
<br />
* When ships are disabled for some reason, but can't normally be transported, it no longer shows a tooltip message saying that they can't be transported but normaly can. That was confusing!<br />
<br />
* When a ship is disabled for multiple reasons, and one of them is being crippled, it now shows both reasons. It was possible to not be able to see the crippled info if it was also paralyzed or paused or similar.<br />
<br />
* The width of the name column on the galaxy options screens are now wider, so that it's less likely to word-wrap. This is much easier to read.<br />
** The text has also been sized down slightly in order to make sure it fits more consistently, too.<br />
<br />
== Beta 2.755 Hotfixes ==<br />
(Released March 10th, 2021)<br />
<br />
* In the lobby interface, updated the Scourge impact rating from Hard to Brutal due to the rebalance.<br />
** Bear in mind that you can absolutely still play with these in a "hard" fashion, but this does reflect the fact that if you try them above their starting impact of 5, you can expect an outsized response.<br />
** Another way to think about this: the impact scale of 1-10 is a bit different from something that is inherently Hard versus inherently Brutal. You can still get a wide variety of difficulties, but at each step it's going to be more intense.<br />
** Thanks to ArnaudB for changing.<br />
<br />
* Fixed some compiler errors in the last part of the code that was supposed to make the passthrough key (Z) work properly for the revised stationary flagship mode.<br />
** THEN actually finished actually implementing that code, and made sure it worked.<br />
** Apologies for this. I was extremely tired, apparently, and completely spaced out on even finishing the feature I was in the middle of right before release. Thank goodness for beta branch.<br />
<br />
* Fixed a bug in the last release where ships that were in transports from a save from a prior build could not be unloaded in the new version. Essentially, the state of matter for the ships was being blanked out incorrectly.<br />
** Thanks to Kahuna, ArnaudB, Gdrk, Ithuriel, and Leif for reporting.<br />
<br />
* Added some extra sanity-checking around states of matter, so that we're less likely to have any errors related to them being un-set or mis-set in the future.<br />
<br />
* Fixed a couple of bugs in tutorial 4 on the beta branch that were keeping it from being completed.<br />
** Essentially, since we had changed up the type of bombers in the starting fleet, it no longer matched the tutorial and thus it could not be completed.<br />
** Fixed a typo saying Piercer tech rather than Piercing.<br />
** Added a new tutorial-specific version of the ARS that has more info, its own hack, and can only be hacked once rather than three times.<br />
** Thanks to GregC for reporting, down to the line numbers we needed to adjust in the xml!<br />
<br />
* Fixed an issue that has been around since we introduced tech refunds (apparently). If your marking-down of a ship that is damaged would cause it to die, that now will just cause it to be at 1 HP remaining, instead.<br />
** This was actually bypassing ships that normally are only cripple-only and causing them to disappear, leading to entire fleets disappearing. It could also cause your home command station to disappear without a trace without you losing the game.<br />
** All of these are directly fixed.<br />
** Thanks to Sigma7 for the savegame that let us finally figure this one out! Thanks also to Ryulong for letting us know this could happen to kings.<br />
<br />
* Also fixed things up in general so that any ship that is crippled won't ever be deleted even if it's health is 0 or lower for some reason. It will just go to 1 health.<br />
** This doesn't affect permadeath options, which still let them die.<br />
<br />
* For player king units and command stations in general, if those are for some reason at or below 0 health at a random time, they just move to 1 health now.<br />
** These still are very much killable, but they die when they are actually shot or damaged in some way, or when a scrap command is issued. Not ever a "well, I see I have zero health for some reason, so I'll just be dying now."<br />
** This sort of thing could have actually happened from things like us or modders adjusting balance numbers in the xml to have lower health, and then damaged command stations or kings just kill themselves on save load. That had not happened yet, but we were aware it was the sort of thing that could.<br />
<br />
== Beta 2.754 Buffs And Bugfixes ==<br />
(Released March 9th, 2021)<br />
<br />
=== Immobile Forcefield Options ===<br />
<br />
* Outguard forcefields have been updated to now be completely immobile, and thus immune to the norris effect.<br />
** Same for the human home command station forcefields, and the forcefields that you can buy from the zenith trader.<br />
** Regular forcefields now note their vulnerability to being moved by ships with the norris effect.<br />
** Added a new "Immobile Forcefield Generator" that military stations now have instead of the normal kind that logistical and economic have. This one can't be norrised, but is otherwise identical.<br />
** The Turtle Defenses battlestation fleet (from DLC1) now uses Immobile Forcefield Generators, which both protects against norris, and also prevents accidental movement of them when selecting them for use.<br />
** Thanks to stanazolol69 for the idea of the immobile forcefield generator in general for norris purposes, and to Bionic for the idea on them from a practical management standpoint.<br />
<br />
=== Useful Stationary Flagships ===<br />
<br />
* So! Chris completely misremembered how stationary flagship mode works, and this led to it being described as a way to set up a rally point.<br />
** Previously, this did not work because any orders that were given to a flagship in stationary flagship mode were refused, but any orders that it already had it would execute. This is backwards! It should accept all new orders, but sit there with them and hand them to any ships emerging from itself.<br />
*** Given how much more desirable that is, that is how this mechanic now works.<br />
** Additionally, any move orders on the galaxy map work the same as any other orders. If you don't hold Z, your flagship will still just sit right where it is in stationary flagship mode. This makes it actually possible to set up cross-planet rally points using the galaxy map screen, whereas otherwise it was not possible at all.<br />
** And finally, the various tooltips have been updated to reflect this new functionality.<br />
** Thanks to alocritani for reporting the discrepancy.<br />
<br />
=== Buffs To Underdogs ===<br />
<br />
*A balance pass to help a few units unfairly treated by the many, many changes over the course of the beta.<br />
** Thanks to ArnaudB for doing all of these!<br />
<br />
*Hive golem AIP gain reduced from 30 to 20.<br />
**With heightened metal cost, little benefit from its durability cost and eyes proving more troublesome, this golem no longer justify its horribly pricy cost.<br />
<br />
*Spider range increased from 8k to 10k.<br />
**It should now be able to usefully applies it slow effect.<br />
*Gunbot and porcupine health increased by 50% and metal cost reduced by 33%.<br />
**Too expensive in the beta where metal is precious, with so low health they were a metal sinkhole in the player's hand and poor jokes within AI's waves.<br />
*Sniper metal cost reduced by 40%. It was too pricy for how unreliable it is for the player. Hopefully this should make it worthwhile to use.<br />
<br />
*Tutelar tank FRS hull bonus reduced from 2.5 to 2.0. With all strikecraft health going into hull, it was way too strong. Sorry.<br />
*Ireful MLRS Corvette shield bonus increased from 1.25 to 1.50 and gain an additional 1.50 bonus to hull.<br />
*Encircling Spider FRS shield bonus increased from 1.50 to 2.0.<br />
*All AIP costs for FRS ships is now 12, except Turbo Raider.<br />
*Turbo Raider AIP cost reduced from 20 to 14. Speed is king, but for a bonus that doesn't applies to Flagships it was too pricy.<br />
<br />
*Beam Turret now has 1/3 of its damage and 3 times more beams.<br />
*Solar Flare Turret now has 1/3 of its damage and 3 times more beams. Its paralyze effect lasts 2 seconds instead of 3.<br />
**They were underperforming horribly in many situations, particularly with low stacks setting, including default ones, or against low health enemies.<br />
<br />
=== Bugfixes ===<br />
<br />
* Updated the autosave code so that even if you disable it, in ironman mode it will still work. And if you disable it in ironman mode, it should definitely actually be disabled.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Fixed kind of a cascade of issues that was preventing Interplanetary Engineers from being constructed, mainly if they were on battlestations or command stations.<br />
** These issues were mostly introduced on March 4th, when the other changes relating to repair delay timers, etc, were introduced.<br />
** That said, the way these worked was kind of accidental before, and it didn't show up in the interface with progress on constructing them like it would for other ship lines, etc. All of that now works much more properly, and you get proper interface feedback for the first time ever with these.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* Fixed a variety of potential cross-threading bugs in EntityOrderCollection, including one that had popped up in particular in ClearOrders. The one in ClearOrders should not only be fixed, but if something else happens where it does recur, it should no longer corrupt savegames, and it should also give us more information about where exactly the error was.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Fixed a bug in the fallen spire where it would give you an exception after you beat the game with the imperial spire around, because they had no one left to go kill.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Fixed the remnants of an exception that could happen when there was a missing praetorian guard faction in loading the lobby settings. This is something that should be remedied on actually generating the new map in general, but there was some overzealous error checking that was getting in the way of that process.<br />
** This was something that happened in particular when editing older quick starts after loading them into the lobby.<br />
** Overall this involved some extra plumbing to make sure that older quick starts and saves self-repair new information in. At some point it may be required to explicitly link up some of the AI sub-factions to their parent AI in multi-AI games, which is where these problems seem to crop up. But for now this works, and so minimal changes seems like the wiser way to go.<br />
** Thanks to alocritani for reporting.<br />
<br />
* The tooltips of strength-based AI eyes no longer talk about unit counts (super confusing!), and instead properly talk about the relative strengths of opposing forces.<br />
** Thanks to Strategic Sage for reporting.<br />
<br />
* After poring through the code for a while, it was really not clear why the Raid Engine was so very wimpy in terms of the response it was sending. It seems like it is using the general pre-wave-buff amount of forces, multiplied by 1.5x. But the code would not really seem to support that being the case, it's very strange.<br />
** At any rate, the waves of the raid engine are now multiplied by the wave_budget_multiplier of the AI difficulty that is in question. So on difficulty 7, as in the example save that we had, this is an increase of 6x strength for the wave, leading them to be these 99-strength monstrosities popping out.<br />
** The hope is that they were universally wimpy, and so nobody gets crushed now by some giant 1000-strength wave instead of a few hundred in some very intense game. We haven't seen any evidence of that yet, but that sort of thing is always the worry when we don't understand what is going on and put in a new multiplier to compensate anyhow. At any rate, we're sure we'll hear about it; but the raid engine is a good thing to kill post-haste in any game now, for sure.<br />
** Thanks to Strategic Sage for reporting.<br />
<br />
* Fixed an exception that could happen when doing the neutral planet science extraction hack (or any other non-instant planet-based hacks) against dyson sphere planets.<br />
** All of the other factions are checked and are okay.<br />
** Thanks to Metrekec for the report and the save for duplicating it.<br />
<br />
* Fixed an oversight in the previous version where ships that were being transported would not properly keep their state of matter when going into and out of transports, or being saved.<br />
** This didn't matter in the prior build, but will matter in the near future for DLC2 and 3.<br />
<br />
* In the event that a transported ship is removed after loading a savegame because it is deprecated, it now logs an entry in the game log so that this is not some mystery.<br />
<br />
* Fixed up the vicious raid frigate so that it inherits its properties from the regular raid frigate and NOT from the deprecated AI Raid Frigate (AIs don't get frigates anymore). This wrong inheritance was causing it to have all of its ships mysteriously disappear whenever a savegame is loaded with them in it (existing saves, when loaded, will now load them properly and keep them).<br />
** We also checked our other frigates to make sure that there were no similar issues.<br />
** Thanks to Timerlane for reporting.<br />
<br />
* Additionally, the ship cap for lines of vicious raid frigates has been increased from 6 to 9; it was an oversight that it was so low.<br />
** Thanks to Timerlane for reporting, and ArnaudB for confirming intent.<br />
<br />
== Beta 2.753 Interplanetary States of Matter ==<br />
(Released March 8th, 2021)<br />
<br />
* Fixed the Devourer Golem being allowed to attack literally everything. Now it only targets mobile ships again.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Battlestations now cost 250k to build (mainly, to repair), rather than 6k. This was a balance oversight. Their claim cost has always been 200k.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
* Citadels now cost 400k metal to claim, rather than 200k. They already had construction (repair) costs of 1.5m, so this claim cost was just a copy of the cost on battlestations. Again a minor balance oversight.<br />
<br />
* Added a new IconShipStatusTable, which replaces the old hardcoded enum ActionStatus.<br />
** This allows for us to, in general, let ships have new background indicator icons that denote their status.<br />
** Put slightly better, this actually allows for modders to do that.<br />
** This may break the AMU mod, so for now we're just putting in the table, and we'll finish the feature tomorrow after the other bits are out.<br />
** For now, any ships that are in an alternate state of matter just use the guard ActionStatus, which is fine for today.<br />
<br />
* Put in extra debugging for when xml row nodes fail to parse for various reasons.<br />
<br />
* Added a new is_disallowed_from_spawning_in_waves="true" flag, which can be applied to units that otherwise are vastly too strong when included in a wave from the AI.<br />
** This works on guardians, dire guardians, regular strikecraft, whatever.<br />
** This is now applied to temperamental/tantruming and fragmenting guardians, because their mechanics are really only designed around being on an AI planet, and they quickly become nightmares on player planets.<br />
** Thanks to Metrekec and Strategic Sage for reporting.<br />
<br />
=== Interplanetary Engineers ===<br />
<br />
*Reduced the time needed for players to build on AI planets across the board.<br />
**Expenditure at all marks below 7 is now at 70%, making things takes 142% longer to build than on allied planets.<br />
**Expenditure at marks 7 is now 60%, making things takes 170% longer to build.<br />
**The old numbers didn't take into account the removal of seeded battlestations and AIP increase of citadels to sixty, both of which leading to a dearth of Interplanetary Engineers to build beachheads at insane speed.<br />
**Marks no longer changes with every mark of the AI's planet, as that was both confusing and doubly punishing. On higher marks where you needed more beachhead it was slower, and it vice-versa. It's now much more intuitive and straightforward, with Mark VII having an extra difficult to make it "special".<br />
** Thanks to ArnaudB for implementing.<br />
<br />
*Added hacks for Engineers and Interplanetary Engineers in the ODSS. You can hack Engineers for Command Stations or Interplanetary for Battlestations (and Citadels).<br />
** Thanks to ArnaudB for implementing.<br />
<br />
*Added 4 Interplanetary Engineers to starting battlestations.<br />
**This is mostly so players can intuitively deduce the new engineers and interplanetary engineers hacks will give engineers to Command Stations only and Interplanetary to Battlestations only.<br />
** Thanks to ArnaudB for implementing.<br />
<br />
*Made Interplanetary engineers self-build like drones. They keep getting killed and need to be manually rebuilt when used offensively, which is plain annoying and encourage tedious micromanagement.<br />
**This also means they don't show up in the build menu (good!)<br />
**They do show up in the lobby when you pick a station, and in the fleet menu, which is what matter.<br />
** Thanks to ArnaudB for implementing.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed a very stupid bug in the AddListSeparated() function that was breaking out Kaizers Marauders.<br />
*** Thanks to Histidine on Discord for finding.<br />
** The getPlanetNameFormated() function now now also requires a bool whether or not the planetary mark level should be shown if the planet is an AI-owned planet. It was extending the planet names needlessly and especially for notifications got too long.<br />
*** Thanks to a bunch of people for suggesting over time, most recently Histidine.<br />
* Kaizers Marauders:<br />
** Adjusted all logic where planet names are printed out or displayed to the changes in AMU.<br />
<br />
* AMU:<br />
** Fixed a bug where the PlacementCondition.GetLocation() in edge cases (that got really common with highly built-up Kaizers Marauders) allowed to spawn things literally on top of each other.<br />
*** Thanks to Histidine for providing a save that lead to discovering this.<br />
* Kaizers Marauders:<br />
** Fixed an error when Marauders had only very, very little space to spawn more Fortified Forceshield Generators or Defense Posts, very often when seeding outposts near the player, and they already had a ton of stuff close.<br />
** This then turned into a bad performance leak because it had to retry so many times all the time to spawn these entities.<br />
*** Thus the distance that things are spawned at is now calculated and added to the next spawning attempt. The result is dynamically extending things out for as far as needed.<br />
*** Note that this spawn-bonus-distance is not serialized. This means that, per planet, if conditions are this bad, the first spawn of something difficult to place may take quite a while - but every further spawn should take a lot less time.<br />
*** This may also change the placement between saving and reloading, but only in edge cases where an Outpost survives but its huge amount of defenses has been crushed. It will still try to seed further away, at least for a while. An autocorrection to this has been implemented but not tested.<br />
**** Thanks to Histidine again for the save that lead down this rabbit hole. This was something I wanted to find a "good" solution for, but had put it off because it was a rather complex issue.<br />
<br />
=== DLC2 & 3 Features ===<br />
<br />
* Added a new StateOfMatterTypeData, which is something that will come into play in a MAJOR way in DLC3, but also will have a substantial presence in DLC2, and even a bit of retroactive presence in DLC1.<br />
** Because all of these things can cross DLC, this is something that we're building into the base game.<br />
<br />
* The first state of matter is just called "Normal", and it is set up so that ships that are in this state of matter (that's most of them) won't show a tooltip with the explanation of it. But here's an explanation anyway:<br />
** Objects in realspace, existing in three spatial dimensions and traveling along the axis of the fourth dimension (time). Aka, most of the observable universe.<br />
<br />
* The second state of matter is not something you'll see until DLC3, but we may as well define it here: 5th Dimension<br />
** Units in this state of existence cannot see or interact with those in realspace, and vice-versa. Very few units can pass between the spatial planes of the 3rd and 5th dimensions. The relationship of this higher plane to our normal one is extremely hard to comprehend, and we are just starting to explore it.<br />
<br />
* The third state of matter is also mostly a DLC3 thing, although it will retroactively play a bit into DLC2 and the base game when we get there: Dark Energy.<br />
** Units made up of dark energy still exist within realspace, but their nature is very poorly understood. We can detect one another, but crossing over is hard. Dark Energy makes up 68% of the observable universe, while dark matter makes up 27%, while normal matter is a mere 5%. Most space travel is made possible by dark matter reactors.<br />
<br />
* The fourth state of matter is mainly a DLC2 thing: Solo-Phase<br />
** Objects temporarily beyond all reach, both hostile and friendly. They can be detected by our instruments, and even given orders, but for the most part all they can do is wait and heal. They could be deployed for a surprise attack on phasing back in to normal reality, as well, however.<br />
** Thanks to Zeus for suggesting.<br />
<br />
* The fifth state of matter is another DLC2 thing: Multi-Phase<br />
** Objects in an alternate state of matter that can only interact with other multi-phase objects. Units in this state may be in such a state temporarily -- even unwillingly -- or may intentionally and permanently be set to guard this side-band of realspace.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* On all ships and shots, there is now a CurrentStateOfMatter, which defaults to Normal (realspace), but can be changed to other things.<br />
<br />
* On ships, there is now a GameSecondWillExitStateOfMatter, which is normally 0. This can be set to future gameseconds to cause an entity to revert to normalspace, or combined with various other features yet to be described.<br />
<br />
* If a shot is fired, it will automatically exist in whatever the state of matter its parent firing entity is.<br />
** Right now this won't apply for drone guns.<br />
<br />
* If a shot's state of matter does not match its target's state of matter, the shot now ceases to have a target, which is the same as if the target has moved to a different planet.<br />
<br />
* Added a new forced_to_always_be_this_state_of_matter field on ships. This can be defined to make a ship always a 5th-dimensional entity, as one example, or always dark matter or even multi-phase or whatever.<br />
** This does not normally need to be set, and anything that you want to be able to shift into something like solo-phase or multi-phase should definitely not have this set, since this would prevent them from phasing or being phased.<br />
<br />
* On the world object, there is now a LocalPlayerViewingStateOfMatter, which defaults to normal. It's not until DLC3 that we would start swapping this out to let you view the 5th dimension in certain circumstances.<br />
** However, this does have an affect on visibility of certain things even in DLC2 and even DLC1 now, so we should go ahead and keep it consistent and nicely planned-ahead.<br />
<br />
* Updated shots and units so that if they are supposed to be invisible to you (mainly 5th dimension right now), they should actually be invisible unless you are also looking at the 5th dimension or whatever, in which case it only shows you stuff from that other state of matter.<br />
<br />
* Bubble forcefields now only protect or displace ships that are in the same state of matter, whatever that might be.<br />
** Gravity effects continue to cross all states of matter.<br />
** Tractor beams also can now only grab units that are in the same state of matter.<br />
** Also, tachyon beams can only hit units that are in the same state of matter.<br />
** AOE damage can now only hit units that are in the same state of matter, and any AOE damage that tries to fire off in the solo-phase state now just completely fizzles. It might be visible, but it's harmless in there.<br />
** Any shots that are impacting will not hit enemies that are in a different state of matter. This is partially relevant because the target may shift states of matter right before being hit by a shot that WAS in the same state of matter when it was fired.<br />
** Units in different states of matter still decollide with one another, except those that have different view modes (like the 5th dimension).<br />
** The "can a unit be placed here" logic also has been updated to account for this, and again mostly deals with those with separate views like the 5th dimension.<br />
** Targeting logic has also been updated so that ships can only target other ships in the same state of matter... and for those in the solo-phase, they can't target at all.<br />
<br />
* If the current state of matter of a unit is not normal, then it shows what the state of matter is in the tooltip (assuming you can see the unit to hover over it), and the medium and full tooltips give increasingly lengthy explanations for it.<br />
<br />
* The immune_to_all_damage_and_invisible_if_first_half_of_the_current_second feature that was on spire relics (DLC1) has been removed).<br />
** Now there are the following three: alternative_state_of_matter, phases_to_other_alternative_state_of_matter_after_seconds, and phases_back_to_default_state_of_matter_after_seconds.<br />
** These allow for the same sort of behavior, but also a LOT more flexibility both with the same phasing in and out (different intervals in one and in normal), and a choice of states.<br />
<br />
* The spire relic (DLC1) now phases to the Multi-Phase state every 30 seconds. This is similar to what it did before, except before it would have really been in the Solo-Phase state (not that that was defined before).<br />
** So in some very rare edge cases, having DLC1 on and a relic chase in progress, you might run into some other multi-phase enemies that are a danger to it now. Not super likely, but it certainly is an interesting edge case.<br />
<br />
* Ships in the dark energy, solo-phase, and multi-phase states are no longer visible to the naked eye, but you can see the icons for them.<br />
** Rather like how the spire relic was when it was phased out before.<br />
<br />
== Beta 2.752 Golden Devourer ==<br />
(Released March 5th, 2021)<br />
<br />
* A new ArcenArrays class has been added, and the Randomize methods have been moved from Engine_Universal over to there (with an obsolete tag so that modders have to do it when they recompile their mod, but things work prior to then).<br />
** A new ExpandAndReplaceArrayIfTooSmall has been added to ArcenArrays.<br />
<br />
* Fixed a potential bug in GetCanUnlockTech() where MAYBE under some certain circumstances it could get an exception if you had already fully unlocked a tech that was being checked.<br />
** Probably our existing code was fine, but after Histidine got an error in here, we're being extra careful.<br />
<br />
* The TechUnlocks and FreeTechUnlocks arrays are now expanded during calls to GetCanUnlockTech() if they need to be.<br />
** This is a bit of a confusing issue, as it seems like the only way that this should be able to happen is if mods or DLC or something are reloaded after a game has started, but there may be something there with techs that are added after a game was started and we just missed that.<br />
** At any rate, this is more likely where the bug was, so this will self-fix itself now.<br />
** Thanks to Histidine for reporting.<br />
<br />
* One of the tips was still talking about GCAs, and has been updated to talk about the TSS and ODSS.<br />
** Thanks to Democracy not only for noticing it, but also for rewriting the whole thing for us!<br />
<br />
* Fixed an issue in general with self-attrition damage being considered as "player is scrapping me" damage, which meant that a few on-death effects (most notably spawning units on death) would not happen if a unit self-attritioned to death.<br />
** Thanks to Zeus for reporting.<br />
<br />
* When there is a range of DPS because of multiple beam weapons or similar, the second number in the range now has proper formatting.<br />
<br />
AMU mod:<br />
* Readjusted the mod to be up to date and work with the currentmost AIW2 Version.<br />
** The cost multiplier for certain entities (such as crippled flagship) if repaired within the set timeframe can now be adjusted.<br />
** Dire Guard Post AIP can now be modified.<br />
* Source Code updated.<br />
<br />
=== Fireteam Aggression ===<br />
<br />
* The Praetorian Guard now have the same style of overconfidence ratios that the Warden was given a bit ago, making them more aggressive and more able to come defend their homeworlds if they really want to but you have cut them off. This in general just makes them more active, without going completely crazy. Their budgets and income have not been changed at all (unlike when the Wardens got an income buff a while ago because of their increase in suicidal tendencies). The PG are more of a goalie, so the risks that they now take are likely to be much more productive than some of those the Warden previously was doing.<br />
** Thanks to Democracy for reporting the ability to trap the PG way too easily away from the homeworlds of the AI.<br />
<br />
* ALL of the various factions that use fireteams, in the base game, DLC1, and DLC2, now have greatly-increased thresholds for planets that they will pass through in order to join up with their groups.<br />
** This was a change that we made recently to the warden (allowing them to go through 80 strength enemy planets to join up), but now it's also applied to all the other factions in amounts that are usually more like 20-40 strength, but for some stronger factions (or reckless ones) is up to 80.<br />
** Previously, all of them were set to 1 strength, which was something that prevented a lot of movement of a lot of them. Given how strong player fleets often are now, players can still block these factions quite often, but it's no longer so black and white.<br />
** Thanks to Democracy and others for some observations related to the Praetorian Guard in particular.<br />
<br />
* Previously, the hunter would not path through a path that was cumulatively 1/10th its own strength if it was running to go lurk.<br />
** Bear in mind that is the difficulty of the ENTIRE path, so at any given point the forces the hunter faced might be quite weak. This meant that it was hard for them to go anywhere there was even token resistance added up.<br />
** Now the hunter can head along paths that are up to 5x its current strength to get to a desired lurk spot.<br />
*** We did something similar with the warden a few weeks ago, but made it a 30:1 ratio they would accept, rather than a 5:1 ratio like the hunter.<br />
** Most other factions that want to lurk will also now use the 5:1 ratio rather than the 1/10th value they all had.<br />
** This should all make for much more active factions.<br />
** This doesn't completely solve the PG being trapped from their own homeworld by forces in the way, but then again we don't want them to just throw their lives away. They are now much more aggressive about taking on the opportunity when you shift more to their homeworld, and they come crushing in to kill you versus just letting you pillage their boss.<br />
** Thanks to Democracy for reporting.<br />
<br />
=== DLC2 Features ===<br />
<br />
* New ability: Hardened<br />
** HARDENED: Any damage from a single source (explosion, shot, attrition, etc) will have its value reduced to X% of this unit's max hull health if it would be greater than that. Protects against very large guns, ion cannons, mass drivers, etc.<br />
** Added to a unit by giving it something like damage_taken_cannot_be_more_than_this_percentage_of_max_health="0.1" for a 10% hardening (this is very strong -- larger numbers are less of a reduction).<br />
*** One way to look at this is that it means that it will never take fewer than 10 shots to kill something that is hardened at 10%. At 50%, it could in theory take two shots to kill a thing.<br />
** It is worth noting that there are various types of effects that sometimes hit more than once in a short span, and those would be capped to the hardened level per time they hit, meaning that their overall effectiveness against hardened units is going to be higher.<br />
** This is untested so far.<br />
** Thanks to Zeus for coming up with this idea and requesting it.<br />
<br />
* Added a new aoe_and_beam_damage_multiplier_to_non_primary_target, which should have values set to something above 0. Something like 30 would do 30% of damage to all of the secondary targets of an AOE blast or beam weapon, rather than the full 100% that it does now. Fun fact! You can actually set the value to something like 400 to do 4x as much damage to secondary targets as you would to the primary target, if you wanted to for some reason.<br />
** This DOES work in conjunction with aoe_spreads_damage_among_available_targets, although the results are a bit funky. In those cases, the damage is first spread evenly, and then reduced for the non-primary target.<br />
*** Please note that aoe_spreads_damage_among_available_targets only works for area of effect explosions, and not with beam weapons, hence the naming difference.<br />
** For beam weapons, this is only relevant for those that have hits_all_intersecting_targets set to true.<br />
** This also combines with coilbeam damage reductions for non-primary targets, as a direct multiplier against it.<br />
** This also works with chain lightning.<br />
** Note that when multiple beams are fired, as with beam-arrays, only the target that was directly aimed-at will actually be hit for the full damage if this setting is used for a ship.<br />
** This is a ridiculously versatile new feature, as it allows for a variety of new weapon types.<br />
** This feature is untested.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Added a handy new FillRingOfPointsAtDistance to the Mat class, which lets us get a variable number of points in a radial arrangement given a distance from a center point.<br />
<br />
* Added a new distance_from_center_for_beam_emission for beam weapons, as an optional feature.<br />
** This basically makes multiple beams turn into something that are emitted in a radial offset around the center of the ship, rather than coming out of the center of the ship.<br />
** This is best for things that are large, like golems, and a good amount might be something that is 80% of the radius of the ship itself.<br />
** By itself, this will lead to a bunch of beams that are coming out from a ring and focusing on a center point (like a death star), but if you combine this with degrees_offset_per_beam... it's still going to do that, because the alternative was almost impossible to code. You get to choose if it strikes all targets or just one target, though.<br />
*** Note that this also does not work with the new rotating beams effect.<br />
** Note: when combined with chain lightning, if this is set to some number, AND the number_beams_to_fire is set to more than 1, then it will visually do the death-star effect to the first ship that then has the chain lightning after that.<br />
*** No extra damage comes from this with chain lightning, and it's just a visual effect for how it strikes the first ship. There's no practical purpose to this, it's just for visual flair. Normally the number of beams is ignored for chain lightning.<br />
** Note: when used for a point-laser (aka not something that strikes multiple targets), this completely ignores any fanning-out offsets, and just focuses the lasers on the singular target. This is another one where it's purely a visual effect with no gameplay purpose.<br />
** Final note: this effect isn't reflected in the tooltip in any fashion. From a practical point of view, it's very obvious when it is present, and the behavior of whatever the tooltip already says is not all that much different (aside from not being a fan if you set it up to be a fan AND this sort of radial emission). If we wind up needing to make some small addendum for any of the variants, please let us know.<br />
** This is fully tested in all the forms except chain lightning.<br />
<br />
* New gold and bright red "radial beam" effects added for the DLC2 golems, which we show off in this video: https://youtu.be/IckDa6s_7j0<br />
** Thanks to Zeus and CRCGamer and Badger for the suggestions that led to these new looks for them.<br />
<br />
=== Devourer Upgrade ===<br />
<br />
* The Devourer Golem's weapons range has been doubled, making it far more dangerous.<br />
** It also has been given a weapons adjustment so that it now uses one of the new DLC2-style Zenith ring beam weapons (the gold kind that is most dangerous).<br />
** This weapon is also a lot more dangerous than the old one it had, so the devourer is a lot more threatening in general.<br />
<br />
* In general, updated the beam weapons so that they can visually be offset from their center firing point, which was previously not possible, turns out.<br />
<br />
* Also made it so that as soon as a guard post is damaged at all, it immediately dumps its units.<br />
** Also also made it so that when guard posts are emptied, their ships try to come out unpacked around them in a decollided fashion, rather than all bunched up in one place. When a guard post is being bombarded by high energy beam weapons, this keeps all the contents from being evaporated in one hit.<br />
<br />
== Beta 2.751 Repairs And Clarity ==<br />
(Released March 4th, 2021)<br />
<br />
'''Please note: because of the changes to how repair works, the AMU mod and Kaizer's Raiders mods are both temporarily broken. If you have them enabled, expect exceptions during mapgen, and during savegame load, etc.'''<br />
<br />
* Added a 1.1x damage modifier to the Maugrim for targets of 5 tX mass or more. Makes it more likely to use that 12 second reload Heavy Beam Cannon on something worth shooting rather than just a stray strike craft stack.<br />
** Thanks to CRCGamer for making this adjustment.<br />
<br />
* In the event that you try to load one or more transports that are crippled, the message: "X of your transports are currently crippled and cannot be loaded. Repair them first!" will pop up for you.<br />
** Thanks to Badger for reporting the confusion that was otherwise happening for new players.<br />
<br />
* The hotkey for "Hold To Give Orders To Stationary Flagships" is now Z instead of Ctrl. This means that when flagships are in stationary mode, you can set them up on a planet and just ctrl+click a wormhole like usual to give them movement orders through the wormhole (that they will not follow, but which work as a rally point.<br />
** Thanks to Chthonic_One, Badger, and Zeus for pointing out how hard it was to make these work as rally mode items from a neighboring planet because of this.<br />
<br />
* The stationary flagship button tooltip now includes the text "This is a great way to set up a flagship on one planet with a rally point for its units to a neighboring planet, among other uses." in bold at the end of the first paragraph.<br />
** Thanks to Badger and Zeus for suggesting this.<br />
<br />
=== Guardian Balance ===<br />
<br />
* Guardians now all once again start at mark 1, which means they won't be absolutely insane when coming in waves against you.<br />
** Thanks to a variety of players for making us aware of the danger of this in waves, and to CRCGamer for counsel on it.<br />
<br />
* For the same reason, royal guardians (just the Royal AI type) are now also mark 1 instead of mark 3 for the start.<br />
** Also he got the More System Defenders mod guardians taken care of.<br />
** Thanks to CRCGamer for the reminder.<br />
<br />
* When guardians are seeded at a planet initially at game start, or when they are spawned as part of a reinforcement event, the game now tries to seed them at 1 mark higher than whatever the planet would normally have.<br />
** So if this is a mark 2 planet, its guardians are mark 3. Mark 6 planets should have mark7 guardians. Obviously mark7 still has mark7 guardians.<br />
** This gives guardians that bit of a boost around the galaxy, and is actually more effective than just a blanket "min mark level of 3" like we had in the past.<br />
** However, this won't affect waves, so it keeps waves and hacking responses and that sort of thing from being hilariously overpowered.<br />
** Thanks to Sol and CRCGamer for leading us more in this direction.<br />
<br />
=== Repair Delay Sanity ===<br />
<br />
* "RepairDelaySeconds" has been removed, and now there are two new fields: RepairImpossibleForSeconds and RepairExtraCostForSeconds.<br />
** When reading from older savegames, if the delay was less than 5 seconds it will go to the impossible field, and if it was more than 5 seconds it will go to the extra cost field.<br />
** ForceRepairDelay has been renamed to ForceRepairImpossibleFor_Max15, to be consistent with the new nomenclature. Also, the most it will make repair impossible for is 15 seconds, as noted in the name.<br />
** CustomRepairDelaySecondsAfterCrippling_Max511 has been renamed to CustomRepairExtraCostForSecondsAfterCrippling_Max511.<br />
*** This was custom_repair_delay_seconds_after_crippling_max_511, and is now custom_repair_extra_cost_for_seconds_after_crippling_max_511.<br />
** CustomRepairDelaySecondsAfterDamagedByEnemy_Max511 has been renamed to CustomRepairImpossibleForSecondsAfterDamagedByEnemy_Max15.<br />
*** This was custom_repair_delay_seconds_after_damaged_by_enemy_max_511, and is now custom_repair_impossible_for_seconds_after_damaged_by_enemy_max_15.<br />
** Balance_RepairDelaySecondsAfterCrippling is now Balance_RepairExtraCostForSecondsAfterCrippling.<br />
*** This is balance_repair_extra_cost_for_seconds_after_crippling, and it has been dropped from 300 to 120.<br />
*** The purpose behind this is to give some weight to ships being crippled, versus them just popping in and out of cripple status with no ill effects. However, a 5 minute malus is a really long time, versus 2 minutes is more appropriate.<br />
** Balance_RepairDelaySecondsAfterDamagedByEnemy is now Balance_RepairImpossibleForSecondsAfterDamagedByEnemy.<br />
*** This is balance_repair_impossible_for_seconds_after_damaged_by_enemy, and the default remains 5.<br />
*** This idea with this was always to prevent engineers from being able to infinitely sustain a golem or similar when it is actively in the middle of a firefight.<br />
** Balance_RepairDelaySecondsAfterTransformingCommandStation is now Balance_RepairImpossibleForSecondsAfterTransformingCommandStation.<br />
*** This is balance_repair_impossible_for_seconds_after_transforming_command_station now, and the default value remains 5.<br />
*** The idea with this was always to make it so that when players rapidly switch command station types, they have a short burst of vulnerability, since this can be a powerful tactic.<br />
** There is a new Balance_MultiplierForShipsThatHaveExtraRepairCostTemporarily.<br />
*** This is balance_multiplier_for_ships_that_have_extra_repair_cost_temporarily, and for now we're going to try this at 3.5.<br />
*** This gives a very nontrivial extra cost to ships being repair for 2 minutes after they are crippled, but of course they are not actually repaired for the entire 2 minutes, neccessarily.<br />
*** The important thing is that players aren't prevented from playing, and it doesn't seem like engineers are just broken or something, but there is an economic hit that you take.<br />
** RepairExtraCostForSeconds is not able to be reduced by any means; not by being on your planets, or any other factors.<br />
*** Please note that this does not block natural shield regen from happening, unlike RepairImpossibleForSeconds, which does. Same deal with personal regen of health in general.<br />
** RepairImpossibleForSeconds also is now not able to be reduced by any means, unlike even the past beta; however, it cannnot EVER be more than 15 seconds, rather than often being 300 before. And nothing in the game actually would set it to be more than 5 seconds at the moment for any player unit.<br />
** Thanks to Chthonic_One, ArnaudB, Badger, and others for weighing in on potential ideas and problems with the way the system was set up last beta release.<br />
<br />
'''TLDR:'''<br />
<br />
* 1. Ships that are shot can't be repaired for 5 seconds, same as always. No way to shorten that time period now, since that is kind of defeating the purpose and it's so darn short.<br />
* 2. Ships that are crippled now cost 4.5x as much metal to repair for 120 seconds, and there's no way to shorten this either. This doesn't make ships that are constructed and sent to them more expensive, and it doesn't prevent them from being repaired, but it will put a dent in your economy if it keeps happening over and over.<br />
<br />
* I had several more complicated variants in the pipeline, as well as some other options, but wound up simplifying it down to this.<br />
* Actions need consequences, but that doesn't mean you sitting there bored, or even having to withdraw your transport and fiddle with things.<br />
<br />
=== Bugfixes ===<br />
<br />
* Ships still under construction (like a Zenith Power Generator bought from a Trader) should no longer cause AIP on death (scrapping or being killed or otherwise). Additionally, they should not cause a response from the Vengeful AI type. Please let us know if there are still problems with this, as we have not tested the fix.<br />
** Thanks to Ithuriel for reporting.<br />
<br />
* Added some slight spacing after the range declaration on ships, to avoid text running into one another.<br />
<br />
* Fixed a bug with the mirror damage on medium and up tooltips not showing the full text properly.<br />
<br />
* Put in a fix that should prevent any situations where too few bastion worlds seed.<br />
** Tested on X maps and they were seeding the correct number, even when they were further away than adjacent.<br />
** Also verified that with randomized AI layouts (DLC2 feature), the bastion worlds work properly, but again are just seeded further away.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed a bug in the prior beta where most tutorials were broken (unable to generate maps), and generating maps with custom AI layouts was also broken.<br />
** Thanks to Lowestech for reporting the tutorials.<br />
<br />
* Fixed a rare random couple of exceptions that could happen in map generation in Helper_MakeSureFactionIsSetUpForPlayer, possibly mainly after coming from tutorials to the lobby?<br />
** Either way, whatever it was is fixed now, and that code will give more specific error messages if it has errors in the future.<br />
<br />
* If you tried to load a tutorial and it errored, then sometimes it could make for errors then appearing in the lobby the next time you went there. Fixed that.<br />
** Essentially, if Praetorian Guard are missing in the lobby, it now adds those.<br />
<br />
== Beta 2.750 Bastions And Tuning ==<br />
(Released March 3rd, 2021)<br />
<br />
* Put in a new xml feature, will_not_regenerate_dying_ships_if_health_below_this_percentage, which should take a floating point number between 0 and 1. If it's set to 0.2, then if a regenerator ship has less than 20% health remaining, it will not actually regenerate any other ships. Normally the logic is only "don't kill yourself, regenerator!"<br />
** Applied this to the DLC2 Valkyrie Cruiser, at 0.5, but have not tested that it works.<br />
** Thanks to Zeus for requesting.<br />
<br />
* For a long time, there has been a mechanic where if you outnumber enemies 10:1 on the local planet, or there are fewer than 0.2 strength on the current planet, then the repair lockout would immediately reset to zero. For hostile factions, their rule was if they had no enemies present, their repair lockout would reset to zero immediately.<br />
** The repair lockout is based around how long it has been since you were last shot, and the purpose of this mechanic was to make it so that with turrets and other structures on your own planets, you don't have an incentive to scrap and rebuild your turrets because of repair lockouts after you've beaten the enemy off your planet.<br />
** This mechanic now only applies to "planetary" forces, which means basically turrets, minefields, station-keepers, and other things like that which can't go through wormholes (most anything from the ODSS, and most of the small forcefields).<br />
** People had noticed that they could game this system with their mobile offensive fleets by transiting wormholes to adjacent safe zones and bypassing the repair delays on things like their transports, which was a source of minor cheese in a variety of cases.<br />
<br />
=== Fixes And Tweaks ===<br />
<br />
* The variable LastTimeTakenDamageFromPlayer on ships was a misnomer, it turns out, and it has been renamed to LastTimeTakenDamageFromBeingShotByAnyone to prevent all sorts of possible confusion.<br />
** This should affect nothing, unless some mod happens to use it. But in that case, there was a good chance the mod might have been using it wrong based on the name, so it would be worth a review anyhow.<br />
<br />
* Fix an incorrect ARS hack tooltip<br />
** Thanks to Metrekec for reporting<br />
<br />
* Add some defensive code to the hacking tooltips<br />
** Thanks to Chthon for reporting<br />
<br />
* Fix a typo in the TSS hovertext<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Updated a bunch of the code for how we find "external data" that is used by factions, mods, and various other semi-custom or fully-custom data.<br />
** The old methods have been marked as obsolete, which will force any code-based faction-related mod authors to update to the new style before they can compile again, but it will NOT break mods in the meantime.<br />
** For those mod authors please make sure and take a look at how we handle this in the central codebase, for instance in the dyson sphere faction or really any of them except AI Reserves (which is an odd case). There is a super-simple way for you to resolve the obsolete code, but it's actually leaving in more verbose code that does not have the extra error checking. If you swap over to instead using the new code that the main game uses, then when there are failures we will better know why.<br />
** This overhaul was rather time consuming (most of a morning to do), but it's something that keeps coming up again and again in both multiplayer and single-player. This new code makes it so that we should be less likely to have errors there, and that if we do it should be a lot more apparent WHY we are having an error.<br />
** Related to this, made some minor improvements to the dyson sphere check code when hacking them, but frankly it's unlikely to fix whatever the original issue was, since the original issue was actually buried down deep in this other code. The dyson bug itself may or may not be fixed, but at least if we have it happen again, we should know more about why. A savegame prior to doing a neutral planet science hack on a dyson world, if that does produce an error again, would be very welcome.<br />
** Thanks to Isiel and others for various reports that led to this.<br />
<br />
* Set wormhole transit speed bonus modifier to 1 for Trader provided Tamed Macrophage. This should suppress text about the bonus since as a station-keeper it cannot leave the planet anyways.<br />
** Thanks to CRCGamer for fixing!<br />
<br />
* Fixed a potential thread race condition when planets were created on not the main work thread.<br />
** This may never actually have happened, but let's not tempt fate. In multiplayer it was more likely to be a random error on clients, though we had not seen it yet.<br />
<br />
* Fixed an error in ReactToPowerLevel() where it would throw an exception and disable a faction if the faction didn't own or influence any planets at the moment when it ran this.<br />
** This will wind up with these factions who have apparently aggro'ed the exo forces of an AI just not getting any exos against them, presumably because they have no territory for the exo to attack.<br />
** Thanks to Histidine for reporting.<br />
<br />
* Fixed an issue that could happen in various circumstances when the name of factions was being created on the fly on multiple threads at once. This had to do with a static Stringbuilder in all cases, and now we have that marked as ThreadStatic and updated so that it uses one per thread. How did we ever manage with things like this prior to ThreadStatic??<br />
** Thanks to Badger for reporting.<br />
<br />
* Put in a tweak that should probably fix the Raptor Drones showing ??? on the upgrade science list. Can't test for sure, since we don't have a savegame.<br />
** If this doesn't do it, we may just need to remove these specific ships from the upgrade list of info, since as CRCGamer notes they only come from drone guns. So they don't really have a cap, and however many there are at the moment is incidental to how much combat has been happening lately.<br />
** Thanks to samnainocard for reporting.<br />
<br />
* Drones that were shot out of a drone gun belonging to the outguard would not properly be in the outguard faction, and thus would cause errors later. Fixed.<br />
** Thanks to Zeus for reporting.<br />
<br />
* When the game is thinking about despawning outguard because they have been around for long enough, it no longer throws any errors with any members who are missing outguard faction info. Those simply won't despawn. Most likely these are just drones or similar who are going to die soon anyway.<br />
** Thanks to Zeus for reporting.<br />
<br />
* Fireteams now use ConcurrentDictionary instead of ArcenSparseLookup, as apparently these could get a bit wires-crossed with multiple threads, and this may be slightly more efficient in general, anyway.<br />
** This prevents certain nullref exceptions that could happen in BuildShipsLookup, and probably also a few other things.<br />
** It's worth noting that it turns out that the foreach statement with a ConcurrentDictionary is fully thread-safe, and in general supports continuing iteration over the directionary while things are added or removed, which is a strange and wonderful superpower of this.<br />
** Thanks to Sigma7 for reporting an exception in BuildShipsLookup.<br />
<br />
* Fixed a bug with some fireteam tracing always being on, and slow things down because of that, because of a tracing flag having a typo causing it not to be used. This may have only affected the scourge, not sure.<br />
<br />
* In the tooltips, ships that are immune to repair no longer show the repair timer for when they are next able to be repaired -- that was contradictory and confusing.<br />
** However, if such a unit is able to regenerate itself, it shows that timer and says that's how long it will be before it can start regenerating health again.<br />
** Additionally, for ships that can regen AND be repaired, the wording for that has been updated.<br />
<br />
* The "Deals half normal damage due to firing from under forcefield." warning is no longer shown for any units that get a bonus for firing out from under forcefields.<br />
** The actual mechanic was working fine, but the tooltip was still showing this one piece of info, which was wrong.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed a bug where if units like the bastille turret were under a great-forcefield (which does not cause damage penalties to those firing out from under it), then the unit with a bonus would also not get the bonus for firing out from underneath it.<br />
<br />
* Turtle AI types now have a special version of the Troop Accelerator that they can seed that causes no AIP when it dies.<br />
** This also prevents the adaptive AI from just causing tons of AIP that you would have to take whenever it cycles through the Turtle type.<br />
** The description on this is updated to note this, in much the same way that the Zenith Trader version of the troop accelerator is.<br />
** For now, this is still the only type of special structure seeded by the turtle type, but it will no longer be so dire when it happens.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Peacemaker AIs are seeding tons of Orbital Mass Drivers, which was by design, but seemed confusing especially with adaptive AI types.<br />
** Now they are seeding Peacemaker Mass Drivers instead, which have half the durability in exchange for their prevalence.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* The Fortress Baron now seeds a special Baron Fortress that is weaker and has a unique name.<br />
** The fortresses purchased from the Zenith Trader are also now weaker and have a unique name.<br />
** Same with the black hole machines for the one-way doormaster.<br />
<br />
* Added a new Planetary range setting with 70k base range (56k range after the default 0.8 range modifier). This serves the purpose of having weapons with a range that in theory can go from one edge of the planet to another (2x 26k = 52k) without being at the 80k range limit of ships stopping to move.<br />
** Modified a number entities for ZO with this range setting so that they would still move into range.<br />
** Thanks to NR SirLimbo for adding!<br />
<br />
* Added a new can_be_stacked_even_if_would_not_normally for ships, which basically allows us to override anything else that would automatically prevent stacking (including cannot_be_stacked).<br />
** The general idea is that there are exceptions to generalities, and this allows us to override the edge cases.<br />
** This is now applied to the Pulsar Punk, Etherjet, Persuader, and variants so that they don't slow down performance to a crawl when a bunch of them are used. Normally strikecraft either don't have tractor beams, or don't have such a magnitude of them at once.<br />
*** In the future, if we run into a case where we really need to differentiate ships like this, we can make stacking and non-stacking versions.<br />
** Thanks to Democracy for reporting the issues.<br />
<br />
* While we are at it, just to be on the safe side, we are going ahead and reverting the change that made all tractor sources not-stackable. That is probably safer.<br />
** This might mean that things like mosquitos need to cannot_be_stacked set to true on themselves.<br />
<br />
* Fixed a longtime bug that was preventing regular guardians from ever seeding in waves or wave-like things, even when they were supposed to (such as on hacking responses).<br />
** Dire guardians were able to seed on truly massive waves or wave-like things because they are handled differently, but guardians themselves have long been absent. For a third hack of an ARS, this could mean a CPU-grinding amount of tiny ships, rather than offsetting that at least some with guardians to keep things moving and interesting.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed an issue since Feb 25th where all of the beam weapons and other lines other than the new chain lightning had their hdr glow removed, making them pretty hard to see.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed a bug with waves where if they included any dire guardians or regular guardians, they would ONLY include those. This was a simple code error, and now it properly mixes them with strikecraft when relevant.<br />
** Thanks to Democracy for discovering.<br />
<br />
* Previously, if you sabotage hacked a warp gate (and it died without costing you AIP), then if you captured the planet, you would still get the full AIP later. This should be fixed now, though the fix is untested. If anyone can confirm in the next build, that would be appreciated!<br />
** Thanks to Bionic for reporting.<br />
<br />
* Fixed a bug in multi-AI games where it would complain about duplicate factions when you loaded in, with relentless AI wave factions and CPA logic factions.<br />
<br />
=== Endgame Difficulty ===<br />
<br />
* The AI Difficulty xml has a new feature called number_of_ten_minute_increments_before_homeworld_is_fully_defensible.<br />
** This was previously always set to 18, which is 3 hours of time.<br />
** Essentially, the AI homeworlds want to grow to be monsters of defenses by nature, but we introduced this mechanic a few months ago in order to hold them back from being too crazy at the start of the game.<br />
** The problem is, they would still often become crazy, more than was warranted, as they were often reaching a cap because of players alerting few planets. This doesn't make sense to be global for all difficulties, as CRC Gamer pointed out.<br />
** So, by difficulty, the timings are now:<br />
*** 1-5: 60 (10 hours)<br />
*** 6: 50 (8.3 hours)<br />
*** 7: 40 (6.6 hours)<br />
*** 8: 30 (5 hours)<br />
*** 9: 24 (4 hours)<br />
*** 10: 18 (3 hours, previously what everything was set to)<br />
** Thanks to ArnaudB and CRCGamer for helping us discover this!<br />
<br />
* Added a new debug setting to the AI Logging subsection in settings: Track Guard Post Content Details<br />
** Any time ships are added to a guard post for any reason, it will log a 'reason code' on the guard post with why they were added. Useful for hunting down problems with planets with too many guard posts. Not a great thing to leave on long-term or for general play, as this will substantially bloat savegame files. No impact on game speed, however. You can see the results of this tracking data by hovering over the guard post you are curious about.<br />
** Thanks to ArnaudB and CRCGamer for inspiring this addition.<br />
<br />
* The way that we check for external invincibility on units is now a bit more efficient.<br />
<br />
* The way that the game checks for "must have at least this number of something for external invulnerability" is now based on "greater than or equal to" instead of just greater than.<br />
** This was probably leading to things being off by one in a way that folks noticed with AI Eyes.<br />
<br />
* Dire guard posts now have their own SpecialEntityType, of DireGuardPost, rather than GuardPost.<br />
** All of the things that affect GuardPost still affect DireGuardPost, including things like the hacks to weaken them.<br />
** That said, they won't contribute to the invulnerability of AI Eyes anymore, so there's that!<br />
<br />
* The AI Overlord now gets invulnerability only from dire guard posts, rather than all guard posts. However, it gets it from all of the dire guard posts that it owns in the galaxy, rather than just those on its home planet, now.<br />
** For existing savegames, this is effectively no difference.<br />
<br />
* The text for invulnerability provided by outside sources has been cleaned up, allows for plurals properly, and will show on any entity now without need for a special description appender.<br />
** This should mostly apply to AI Eyes and the AI Overlord Phase 1, but it also applies to things like the Custodian with Astro Trains, and it would apply to modded or additional units that use this sort of mechanic.<br />
<br />
* When a former AI homeworld is reconquered by an AI, it should now no longer seed dire guard posts.<br />
** Additionally, whenever any AI world is reconquered by an AI, it should have a different mix of guard posts than it used to.<br />
<br />
* Three new fields on AI types:<br />
** number_of_dire_posts_on_homeworld: How many dire guard posts will there be on the AI homeworld? All other guard posts that are seeded there will just be regular armed guard posts.<br />
*** Given that there is variability in the number of guard posts on AI homeworlds in general, this makes the dire part consistent at least for a given AI type. Dire guard posts costs AIP to destroy, and are way tougher. And also are the ones protecting the overlord.<br />
*** Note that we are not toning down the total number of guard posts, since that would actually make things harder since the same number of units would be concentrated in a smaller number of receptacles.<br />
** number_of_bastion_worlds: how many mark 7 "bastion" worlds are there in the vicinity of the homeworld? No longer is this limited to purely just however many planets are adjacent to the AI homeworld.<br />
*** If there would somehow have been more mark 7 worlds than this based on an extreme map type (lots of links), those will now be mark 6 worlds, instead. Aka, easier.<br />
*** If there would have been very few based on very narrow map topology (x or snake), then the mark 7 bastion worlds will be seeded further out in a line. Aka, harder.<br />
** number_of_dire_posts_on_bastion_worlds: each bastion world will have this number of dire guard posts, allowing the general number of dire guard posts to be similar (or higher or lower, depending on the AI type), while still having fewer on the actual AI homeworld.<br />
*** This makes it so that the AI homeworld is not always just this giant pit of doomstacks of AI units, with them instead being spread between a few nearby worlds. You have to kill the dires on these worlds before you can kill that overlord, after all. Same fight, but less concentrated in one small world, and thus a bit easier but also hopefully more interesting.<br />
** Thanks to ArnaudB and CRCGamer for inspiring this change.<br />
<br />
* AI types adjusted:<br />
** Most of them: number_of_dire_posts_on_homeworld 6, number_of_dire_posts_on_bastion_worlds 2, number_of_bastion_worlds 3.<br />
*** This spreads things out considerably.<br />
** Turtle: number_of_dire_posts_on_homeworld 10, number_of_dire_posts_on_bastion_worlds 5, number_of_bastion_worlds 1.<br />
*** This gives that doomstack turtle effect.<br />
*** The Vengeful AI in DLC2 also works like the Turtle in terms of its balance of these, since that's an interesting paradox.<br />
** Fortress Baron: number_of_dire_posts_on_homeworld 4, number_of_dire_posts_on_bastion_worlds 3, number_of_bastion_worlds 4.<br />
*** This gives the effect of this really big fortress area from several worlds.<br />
*** The Spire Hammer in DLC2 also works like the Fortress Baron in terms of its balance of these.<br />
** Peacemaker: number_of_dire_posts_on_homeworld 7, number_of_dire_posts_on_bastion_worlds 1, number_of_bastion_worlds 5.<br />
*** A bit in the middle, with a slightly more intense homeworld, a LOT more bastion worlds than normal (that's scary), but way less to do on each one.<br />
*** The Geneticist in DLC2 also works like the Peacemaker in terms of its balance of these.<br />
** Beast (DLC2): number_of_dire_posts_on_homeworld 10, number_of_dire_posts_on_bastion_worlds 3, number_of_bastion_worlds 2.<br />
*** A bit of a different flavor, to go with a very brutal AI type.<br />
** Thanks to ArnaudB and CRCGamer and Democracy for various suggestions here.<br />
<br />
* The way that guard posts are chosen for AI-allied Scourge (DLC1) has been updated so that it will never use dires, and is more proper in general.<br />
** If we accidentally broke it, then let us know that also, too, please.<br />
<br />
* The number of mark 7 worlds used to be partly controlled by the AI difficulty, and partly based on map size, but this is now entirely based on the AI type.<br />
** This style of brokering difficulty (mainly lowering it for lower difficulties or smaller maps) is not really required. This will make smaller maps a bit harder, though.<br />
<br />
* Bastion worlds are now unusually hyper metal-rich, which is a nice bonus if you choose to capture them (you certainly do not have to).<br />
<br />
* The initial seeding of AI homeworld strength caps is no longer 2x what it would otherwise be. <br />
** That strength is now effectively spread out among the various Bastion worlds on which you now need to do at least a bit of fighting.<br />
<br />
* Wardens now have a bit more affinity for bastion worlds, like they do for AI homeworlds.<br />
<br />
* Spire cities can now not be built on AI Bastion worlds. That would have generally been a terrible idea, anyhow.<br />
<br />
* AI Instigators can no longer spawn on AI Bastion worlds OR next to them (this can avoid some really nasty situations that previously you could get into).<br />
<br />
* The ZM from DLC2 also can't spawn on AI Bastion worlds.<br />
<br />
=== DLC2 Features ===<br />
<br />
* Forcefields or regular ship hulls can now be "Electrotoxic"<br />
** This is set up with returns_this_percentage_of_damage_if_damaged_by_enemy_attack, which should be a float that is larger than 0 if you want to use it. 0.5 is 50%, 2 is 200%, etc.<br />
** Depending on how strongly electrotoxic a target is, it will deal back some portion of any damage that it takes from incoming weapons fire (beam weapons and AOE and so on are included).<br />
** If a bubble forcefield takes 8000 damage from some ship that has a bonus against bubble forcefields, as one example, and the forcefield was set up to be 150% electrotoxic, then it will deal back 12000 damage to the shooter.<br />
** This has some similarities to the mirror mechanic in the first AI War, but various different applications, and probably will only be used on some specialist units. This is something for in DLC2.<br />
** Not yet tested.<br />
<br />
* On weapon systems, instead of setting firing_timing="OnlyInRange", you can set firing_timing="WhenParentEntityHit"<br />
** This makes it so that the weapon won't fire normally, but will instead only return fire when the ship holding the weapon system has been hit.<br />
** At the most basic level, if ONLY this is turned on, this makes for a "retaliatory" weapon system that can be anything.<br />
** The range and such of a retaliatory weapon is technically irrelevant, if the enemy can hit it, it can fire on the enemy. Reload timings are also irrelevant. It fires only as often as it is shot, but is able to fire every time it is shot.<br />
** That said, if this is set up as a beam weapon, or chain lightning, or some AOE burst, or a "drone gun," or whatever else... those things will all work just fine.<br />
** It's worth noting that the shots that are fired in this way are still able to be blocked by forcefields, and have damage bonuses, and all of the other regular things that a shot does.<br />
*** The one main thing that a shot like this can NOT do is cause a retaliatory shot to be triggered on the other end (you'd get into infinite loops). But if the other end has an electrotoxic effect, that WILL be triggered.<br />
** Please note that at this point, we are not at what you would call a "mirror shot." Rather, this is just a passive weapon system that fires back on enemies whenever it gets shot by a non-retaliatory shot. This is interesting even before we take it to the "mirror shot" level.<br />
*** It is also worth noting that this will not be triggered by semi-passive effects like electrotoxic effects, attrition damage, or similar. But AOE damage will trigger it.<br />
** It is also worth noting that this CAN be given to a ship that is a forcefield generator, and any time anything hits the forcefield -- aimed at the generator or something under it -- it will generate a retaliatory shot. Probably not something to do, but it can be done.<br />
** This is untested so far.<br />
** Thanks to Zeus and CRCGamer for requesting.<br />
<br />
* Mirror time! Your weapon system has to have the above firing_timing="WhenParentEntityHit" set on it already. And then add a new returns_this_percentage_of_damage_when_firing_retalitatory_shot="0.5" or whatever ratio you want on the weapon system.<br />
** This works ONLY with return-fire shots that are not drone-gun style. If you use it with AOE style return shots, or a beam weapon return shot, it's uncertain what the result there would be, too. Ideally this is just used with a general projectile. This also only gets one shot per salvo, and anything specifying more is ignored. It's an entirely reactionary system.<br />
** If you set this to something like 0.5, then 50% of the damage that was just done to the ship with this system on it will be "reflected" back in a retaliatory shot at the ship that originally fired on it.<br />
** You can, of course, set that ratio to be 1 (for full damage) or more than 1 (for amplified return fire).<br />
** Things like forcefields can block these sorts of mirror shots, but other forms of damage reduction (other than temporary or permanent invincibility) will not work. <br />
** Additionally, any weapon damage bonuses are irrelevant with this sort of effect, so combining those is going to be confusing to players (don't do that). If you want that sort of thing, use retaliatory shots without the mirror component.<br />
** This is untested so far.<br />
** Thanks to Zeus and CRCGamer for requesting.<br />
<br />
* Added in a new custom_repair_delay_seconds_after_damaged_by_enemy_max_511 and custom_repair_delay_seconds_after_crippling_max_511, which are on entities and allow for you to set custom amounts of time that a unit is locked out of regen and/or repair after it is either damaged or crippled, respectively.<br />
** Normally it is 300 seconds after crippling (5 minutes), or 5 seconds after being damaged. But for various units it is useful to be able to set other values for one or both things. The max this field can take is 511 seconds, because of the data type it is. Anything set higher will just be reduced to 511.<br />
** It's worth noting that as long as you set it to something more than 0, that will be the new default. So if a certain flagship should recover more quickly from crippling, say only 100 seconds instead of 300, you can set that sort of lower value and it will apply. Anything 1 second and up.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Additionally, we now have tooltips that explain what these values are for each unit in the full tooltip, in grayer text with red for the actual time values, so that people are aware this mechanic exists at all, if they previously were not.<br />
<br />
* There is, in general, a new large background thread of potential features all relating to area boosts of ships against allied ships.<br />
** These get subdivided into two categories: not-evaluated-at-time-of-being-fired-upon, and those which ARE evaluated when a ship is fired upon. Only the latter is used for now, but we can do various things in the future with the other.<br />
** Essentially this provides a bit of a framework for us to implement a number of features, as well as letting us actually implement the one feature we care about today.<br />
<br />
* Added a new attract_range_for_shots_against_allies feature, which should be a range specified like for tachyon or tractor or gravity, and which should be on its own system on a ship.<br />
** This was implemented as a ship system so that we can turn that on and off by mark level of the ship, or via modules later on. All those nice system-based features that are optional based on certain contexts.<br />
** This feature is very simple. UI description:<br />
*** ATTRACTANT FIELD: All shots fired against friendly units within range X are automatically redirected at this unit, instead.<br />
** Thanks to CRCGamer for requesting.<br />
** Untested so far!<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed a bug where the new GetFactionListOrEmpty function would only find "dead" AIs or Players at the start of the game due to them having no king units. This was causing errors with AI-allied, potentially also player-allied Kaizers Marauders.<br />
** Fixed Battlestations and Citadels not being listed under Hackers, as they now TRULY ARE allowed to hack things in Vanilla.<br />
** Simplified the logic for setting up a rollup of abnormal hackers in the ExtendedHackingImplementation.<br />
** Moved and centralized the logic for Placement Condition location searches to the PlacementCondition class and made it static, which makes it possible to access it without any need for variable tags.<br />
** Created a new function within AMU in the galaxy settings under AMU - Topography: Capturable Repositioning:<br />
*** This changes the locations of capturables (Zenith Power Generators, Zenith Matter Converters, Major Data Centers, etc) on a planet to not be near wormholes and somewhat on the outter edge of the system.<br />
*** The result is that there will be less situations where important targets such as MDCs are located right on top of wormholes or in the travel line of Astro Trains, making it extremely difficult to defend them.<br />
** Vastly upgraded the Auto-Juggle Energy assistant:<br />
*** It can now handle different types of converters, with different efficiencies at different marks, and will always find the most efficient way to re-allocate excess power, or make up for needed energy.<br />
*** It also should be more efficient (in CPU and bandwidth, not so much in RAM I'm guessing).<br />
** Fixed a really bad bonehead programming bug where the PlacementCondition.GetLocation() function would not try to seek points at X distance to a specified location all the time - it would wrongfully update the specified location with the current location attempt, leading to greatly misplaced Kaizers Marauders turrets.<br />
* Micro Mod Collection:<br />
** In conjunction with the upgraded Auto-Juggle Energy the Energy and Matter converters were changed:<br />
*** Both can now increase in mark level with Orbital Mining and Economic Command Station techs, and by directly spending science on a command station.<br />
*** Matter Converters were nerfed (initially) to only grant 40k energy for -500 metal/s, but gain 5k yield per mark. At mark 7 they now grant 70k energy.<br />
*** Energy Converters were buffed to now grant 200 instead of 150 metal/s, further increased by 25 per mark. At mark 7 they now grant 350 metal/s. The cost stays at flat 50k energy.<br />
*** At its peak the Human Matter-Energy conversion loss is 2%. So a chunk of 100g of metal converted to energy and back would return as 98g, or a power cell with 100W converted to metal and back would return as 98W. That's pretty amazing!<br />
* Kaizers Marauders:<br />
** Instead of getting the outpost and capital hacks done by battlestations and citadesl through the above logic they now use the new Vanilla logic. This changes nothing for the player but cleans up the code.<br />
** Adjusted them to work with the new PlacementCondition logic.<br />
** Adjusted them to also have color-coded and internally recoded debug toggles.<br />
*** Thus it was discovered that Defector Traces were internally still using Stage 3 General Tracing, and thus the toggle for the player to enable did nothing withle the general tracing one did more than it should.<br />
*** It was also discovered that in no place of the code the Invasion-, Offensive- and Defensive Spawners were traced at all, and internally the debug toggles were entirely unused. This has been fixed.<br />
* Extended Ship Variants:<br />
** Reduced the count of all player-found Etherjets, Ensnarer Etherjet and Thieves by 75% as they are they were made 4x stronger in Vanilla.<br />
<br />
* Extended Ship Variants:<br />
** Fixed the Acidic Support Factory having built drones AND a drone gun for the same drone type, leading to infinite potential drone counts...<br />
** Normalized the amount of Sentry Frigates all the support fleets have to 2 like Vanilla fleets.<br />
<br />
* AMU:<br />
** Updated a few variable overwrites:<br />
*** Received Damage While Under Construction default is now 3, and it correctly stats that its minimum is 1x.<br />
*** Fixed a bug where AMU would disable achievements if a player turned science per planet down, and then back up even if it was below the 2k Vanilla science count.<br />
*** Added the settings to manipulate the amount of bonus hacking points for owning adjacent planets.<br />
*** Added the settings to manipulate the AIP that AI Command Stations, Warp Gates and all stages of the AI Overlord inflict on the player. The first two combined also are the AIP cost for capturing a neutral planet that the player hasn't paid the price for yet.<br />
*** Also added the settings to manipulate the AIP on death or claim of Data Centers, Fortified Data Centers or Major Data Centers.<br />
**** Thanks to zeusalmighty428 for suggesting!<br />
** Updated the Source Code.<br />
<br />
* AMU:<br />
** Fixed the amount of hacking points set in the player faction stating that the default is 100, it actually was 60.<br />
<br />
AMU:<br />
* Fixes and improvements to the Auto-Juggle Energy assistant:<br />
** Fixed the Auto-Juggle Energy not factoring in power gained through planetary resource boosts that even affect Energy and Matter Converters.<br />
** For the assistant to consider something a valid "converter" it now requires it to have 0 raw energy cost, and either positive energy and negative metal generation or the inverse. Structures that cost energy and produce metal no longer apply.<br />
*** This was done to prevent any false positive on converters or modded converters that could be boosted with flagships to exceed the laws of energy converservation (see below in the Micro Mod Collection update notes).<br />
** The assistant now has 2 more "fail" conditions:<br />
** If, even after using all converters, a brownout cannot be prohibited all converters will be blown up. First the player needs to sort out their economy before the assistant can reasonably work, and they will most likely need metal to do so.<br />
** Ditto if using as many converters as needed turns the metal generation negative (even if not accounting for other metal uses) and the remaining time of spending all metal until it's gone is below 10 seconds it will stall until it's safe to convert again.<br />
*** This is to prevent counteracting whatever the player may try to do and displays a warning. Without self-sabotaging on purpose it's quite hard to reach these states anyway.<br />
** Before it was unclear whether or not converters on planets with destroyed command stations were even considered at all. Now they will be considered, but nothing can be built, only destroyed if needed.<br />
** Updated the source code.<br />
<br />
Micro Mod Collection:<br />
* Changed the raw energy cost of the Energy Converter to instead be a negative power production.<br />
** This is so that it also is increased via planetary metal and energy income boosts. Otherwise at Mark 7 the player could begin producing metal and energy out of nothing, literally breaking the laws of energy conservation.<br />
** Known issue: When a game is saved while the player's energy production is negative (which can happen now, although it's not easy to do if not deliberate) it'll throw an exception, it should however have a fairly low impact, possibly UI-only.<br />
<br />
* AMU:<br />
** Fixed the Max Waves From Wormhole Invasions having a default of only 2 when it states (and should have) 5.<br />
<br />
AMU:<br />
* Fixed the Metal Bleed notification from the Auto-Juggle Energy Assistant not working.<br />
* As the planetary range setting is now in Vanilla it was removed in AMU.<br />
<br />
== Beta 2.748 Defaults And Fixes ==<br />
(Released February 25th, 2021)<br />
<br />
* New Show Faction Alliance Details In Escape Menu setting under Debug: Escape Menu Additions:<br />
** This will take up a LOT of processing while it draws, so it's not something to use frequently. But if the allegiances seem off for factions, this will let you see what they even are at a very detailed level.<br />
** Thanks to Bionic for inspiring looking into this, but thankfully all seems well.<br />
<br />
* Fix to a typo in a recent release: Ambush Turret hull was reduced instead of metal cost. This has now been fixed.<br />
<br />
* Fixed a pair of cross-threading issues that could happen when updating the amount of strength available per tech line, often on starting quickstarts but also other times.<br />
<br />
* Fixed another trio of cross-threading errors that could happen in general when fleets were being analyzed while a fleet was still in the process of being added. This was happening at the start of quickstarts in particular as well.<br />
<br />
* Fixed what seems to be the last of the cross-threading issues, potentially mainly on quickstarts, based on fleets calculating what planets they were on.<br />
** Thanks to Metrekec for reporting.<br />
<br />
* Since basically the inception of this game, we've had the ability to say "if a keybind or a setting had its value set in a version older than X, reset it to the default value," which is extremely useful for when we are changing around defaults in ways that should be pushed to everyone without us renaming or removing a field. That's been a very useful tool, although it's not like it's used every day or something.<br />
** However, we have never had that actually in and functioning for galaxy options (the stub was there but it did nothing), or custom fields on faction types (like humans, for instance). Now we have that for both of those categories of data.<br />
** The first two fields to benefit from this are the number of cryogenic pods, and the number of home human settlements, both of which are meant to be a lot higher than they used to be, giving players way more metal income early in the game. But for anyone who was just firing up the game and not doing Reset To Defaults in the lobby (why would you), they were still having the old values.<br />
*** Also, as a side note to this, the defaults as noted in the tooltips for these have both been corrected to the new values, whereas previously the stated defaults were the old defaults.<br />
** Thanks to Suzera for reporting the tooltip issue.<br />
<br />
* Restructured the base sniper unit and children entities a bit.<br />
** Snipers, Trippers, and Railpods no longer get a x8 versus fast enemies moving faster than 1K speed. Instead get a 2x bonus against enemies that have been on planet for under 15 seconds.<br />
** Additionally basic Snipers get a 3x bonus against any enemy held within a tractor beam. From some testing this is *very* satisfying to watch them focus fire anything caught by things like Deathgrip Tackle Drones.<br />
** Additionally un-nerfed Tripper damage from being half that of a regular Sniper since the old potential x24 damage multiplier doesn't exist anymore.<br />
*** This means they will be somewhat more exciting against higher powered engines than previously and a lot more exciting when they get to stack that bonus with the ambush bonus against things new to the planet.<br />
** Thanks to CRCGamer for implementing these changes.<br />
<br />
* Added a new cheat to the game: grantalloutguard<br />
** All outguard are immediately considered contacted and show up on your sidebar, whether they were included in any beacons in the galaxy or not.<br />
** Thanks to Zeus for inspiring this change. It will make testing outguard much easier for everyone!<br />
<br />
=== DLC2 Work ===<br />
<br />
* Added new mechanics which can be used to create "chain lightning" out of beam weapons.<br />
** These are based on general beam weapons, with NOT having "hits all targets on, and having instead these filled in: beam_chains_out_to_targets_x_times, beam_chains_out_to_targets_x_range, and beam_chains_out_to_max_targets_from_each_source.<br />
** An example in DLC2 has been created in the form of Invincible Ohmu Chain Lightning, which will remain around longer-term as a cheat code for fun.<br />
** Video of this here: https://youtu.be/OqSfu8UoBTA<br />
** Thanks to CRC Gamer for suggesting the mechanic!<br />
<br />
* Added a new target evaluator, LowestHealthAsMajorPrimary, which is also useful for large chain lightning weapons, and potentially other AOE items.<br />
** This was added post-video, and makes it work much better.<br />
<br />
* Added a new only_targets_strikecraft_and_frigates, which is useful as a companion to large chain lightning weapons.<br />
** This was added post-video, and makes it work much better.<br />
<br />
* Various chain lightning updates:<br />
** The Chain Lightning attacks now have their own visual effect that looks lightning-like and uses a new variant of the custom shader.<br />
** The chain lightning effect can now also have a minimum distance of travel, which is set to 200 by default in our test unit, so that units on top of one another don't get strange self-lightning.<br />
** The Chain lightning visual effects are now faster, and also last longer on the chain parts rather than the original blast.<br />
** Video of the results: https://youtu.be/wVGZhGtxtBM<br />
<br />
== Beta 2.747 Outguard Usability ==<br />
(Released February 24th, 2021)<br />
<br />
* Made the code for regenerator effects a bit more explicit in not being able to work if they are crippled, or remains, or various other things. I think this part was already working fine, but it's good to be sure.<br />
** However, it was definitely possible for the number of ships to be regenerated in excess of the ship cap, probably most likely when there was also a factory producing things at the same time as ships were dying, but really potentially in a variety of cases. These have now been fixed and that should not happen anymore.<br />
** Thanks to Sol for reporting.<br />
<br />
* New bonus for players!<br />
** If you have captured a planet that is next to another human planet, it will yield an extra 5 hacking points. This is noted on the tooltip when looking at the planets.<br />
** Normally the big incentive is to planet-hop around, in order to reduce total AIP increases. And that's still definitely the overriding factor in play. But we wanted to provide a contradictory incentive for when you DO choose to take a pocket of planets. It's a minor thing, but can give a little bit of a boost to players who are thinking about mid-AIP or high-AIP playstyles.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Long (tall style) popup text now has some extra whitespace under it to prevent it from ever being cut off. This is applicable for things like journal entries.<br />
<br />
* Nerfed the Royal AI guardian variants to start at Mark 2 instead of 3. While certainly not an insurmountable challenge it definitely was far stiffer competition than the other brutal AIs with the general guardians being raised to mark 3 baseline.<br />
** Thanks to CRCGamer and Puffin for catching.<br />
<br />
* Fixed the "Neutral Planet Science Extraction" description from being "old, do not use" to "Hack the AI to distract it as you deploy your science-related nanomachines to the planet."<br />
** Thanks to Metrekec and ArnaudB for reporting.<br />
<br />
* The Warden fleet's ability to increase its strength is now back to what it was for the first 5 minutes of the game, and then its ability to boost itself due to low population cap is only 1/4 as strong until the 10 minute mark, and then only 1/2 as strong until the 20 minute mark. After 20 minutes, it is fully able to self-heal as much as before.<br />
** The Warden is still just as aggressive early on in, but this gives you a change to kick their butt and have them out of the way for the first few planets. It also keeps there from being deadly amounts of warden on early planets.<br />
** While we do want the AI to be more vibrant in the early game, we don't want it putting up this much of a fight until people have a bit of time to catch their breath. We definitely don't want to introduce any difficulty walls for new players.<br />
** Thanks to Daw11 for reporting, and Strategic Sage and TechSY730 for weighing in.<br />
<br />
=== Outguard Updates ===<br />
<br />
* Description of the outguard faction (not even sure if it's shown much of anywhere) now updated some to reflect them a bit better.<br />
<br />
* Integrated Zeus's new journal entry with lore for the outguard into the game, and that now pops up the first time you meet any outguard. This is apparently going to see a few revisions, but it's nice to go ahead and have that in there.<br />
** As part of this, it also notes "Outguard sighted -- potential underlings!" in the chat, which is pretty blatant in terms of what these are.<br />
<br />
* After you have hacked an outguard beacon, it now disappears, although it still exists. We're being tricky about this by setting its "time it was created" into the future continuously, which means that any of the scouting logic thinks that it was not seen in the last scan (since the last scan was the current second).<br />
** This lets us not disrupt how the outguard function from a technical standpoint, but makes the beacon not hang around in a confusing and annoying way.<br />
** Thanks to samnainocard for reminding us of this.<br />
<br />
* In general, the text color for hack targets is now the mark level of the ship line, making it more obvious what is better to hack for.<br />
** The error text is now colorized next to them, saying "Not Possible" when they are not an option, rather than sometimes saying "Invalid."<br />
<br />
* The hack "Access Outguard Beacon" has been renamed to "Make Contact With Outguard."<br />
** The description of the hack now says:<br />
*** Hacking this beacon will allow you to contact some of the Outguard -- remnant anti-ai forces that can come to your aid. Since this is going to be routed through the AI communication channels, expect heavy AI response to this. However, once contacted, the Outguard will be at your disposal as-needed for the rest of your campaign. They can be called directly to planets far from your territory, they don't incur deepstrike or counterstrike penalties, and they can often reach places you may have trouble directly going yourself.<br />
*** Many outguard can also turn the tide of a conventional battle, if you need them to. Some others have other functions that are more utilitarian or economic in nature.<br />
<br />
* The intensity of the Outguard hack has been cut in half, making it far easier in the early game and not so apocalyptic in the later game.<br />
** Thanks to Strategic Sage for suggesting.<br />
<br />
* Rather than getting two outguard groups when you hack an outguard beacon, it now shows you the two groups and allows you to choose one of them.<br />
<br />
* All outguard groups now have a custom amount of AIP that it costs to hire them.<br />
** For anyone creating outguard, you MUST now specify aip_cost_on_contact="10" or whatever to set the amount.<br />
** For now, all of the outguard groups continue to cost 10 AIP -- but now the flexibility is there for many different amounts.<br />
** Note that, technically, all outguard groups used to cost 5 AIP since you got two at a time, but at any rate the transaction cost has not changed.<br />
** Thanks to Strategic Sage and others for inspiring this change.<br />
<br />
* The tooltips for the outguard groups are now generated more efficiently, and include a bit more data.<br />
** Additionally, you can now actually see these tooltips BEFORE you hack for them, so you can see the details of a mercenary group's call conditions and so on when you choose which one to hack for.<br />
** Thanks to Strategic Sage and others for inspiring this change.<br />
<br />
* The game now prevents you from accidentally hacking an outguard beacon to call an outguard faction that you have already contacted, as contacting them again has no benefit.<br />
<br />
* When you C-click an outguard beacon to see the details of the ships in each potential outguard faction, it now also gives you the full details about the group like you could see on the sidebar. Previously there was no way to find this out prior to actually hacking and getting a group.<br />
<br />
* You can now C-click individual outguard options when hacking, and see just what comes from them.<br />
<br />
* You can also C-click outguard who are on-call on the outguard tab, and thus actually see what they contain. Previously once you had hacked them, you could only go back to the original beacon to find that information (and now the beacon is invisible, so that was also not even an option).<br />
<br />
* Outguard beacon description updated:<br />
** Hack this beacon to make contact with extremely helpful groups of allies who you can later call to your aid. They can often strike where you cannot, and are great for emergencies. See hack details for more info.<br />
<br />
* The outguard sidebar has had some color introduced, and does things on three lines instead of four, now. Overall much more attractive.<br />
<br />
== Beta 2.746 Release The Warden ==<br />
(Released February 23rd, 2021)<br />
<br />
* Number of typo fixes in starting fleets.<br />
** Thanks to ArnaudB for fixing.<br />
<br />
* When the general mark level of the AI goes up because of AIP, it now gives you a chat message about that.<br />
<br />
* Fixed a display bug where in various circumstances, it would say "pass" instead of "fail" for the "number of mark X cities other than me" on spire cities. This was purely a visual thing, but quite confusing.<br />
** Thanks to samnainocard and ArnaudB for reporting.<br />
<br />
* Fixed a bug in the prior version that was causing elite ships to still count against the fleet-wide bonus limiter, when they were not supposed to.<br />
** Please note that elite ships already DO get any bonuses from fleet-wide effects, even those that say non-flagship (elites are not flagships). They don't benefit from something like the high capacity transport, though, since that explicitly only benefits strikecraft. But if there were an elite strikecraft line, that would benefit from the HCT.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* Fixed a one-line typo in the prior release which broke all tachyon beams from actually revealing enemies.<br />
** Thanks to Democracy, Metrekec, and others for reporting.<br />
<br />
* The AI Reserves no longer use the Relentless AI Wave faction, as that may have caused some strange logic and wasn't needed at any rate.<br />
<br />
* The Exo waves generated by the Fallen Spire varioos things no longer use the Relentless AI Wave faction.<br />
** Not sure if this will help with their overall difficulty or not, but we'll see.<br />
<br />
* Reconquest exo waves no longer use the Relentless AI Wave faction.<br />
** Same with extragalactic wormhole waves.<br />
** This caused them to sometimes come after players in a way that was not desirable, rather than actually reconquering the planet they were after.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Fixed a couple of annoying issues with the bandbox selection mode popping up even when you click on the UI as the start of what would be a bandbox. Not sure if this was a new issue or not, but it feels like one and was super irritating.<br />
<br />
* Fixed an exploit where you could get a strange speed boost by putting ships into loading mode and then giving them a bunch of orders to attack something in the other direction by spamming the right-click button to get them to go the wrong way at the faster speed.<br />
** Thanks to Democracy for reporting.<br />
<br />
=== Scourge Tuning ===<br />
<br />
* Fixed the Scourge still going over the limit of builder. There was a division by zero dodged by defaulting to 1. I commented out the troublesome part.<br />
** Thanks to ArnaudB for fixing.<br />
<br />
* Scourge warriors now requires the same experience requirement for each Mark (300). <br />
** A failure to realize they went back to Mark 1 after evolving meant they were short-changed, since lower marks are more expensive.<br />
** Thanks to ArnaudB for fixing.<br />
<br />
=== Balance In The Player's Favor ===<br />
<br />
* Reduced cost multiplier for hacking TSS/ARS from 2.0 to 1.5 With the cost increase, the 3rd hack was so expensive it was pointless to offer it, even on owned planet with half cost. <br />
** ODSS multiplier cost similarly reduced from 1.6 to 1.4 for coherence.<br />
** The later costs on repeat hacks were just getting so extreme as to never be worth it or affordable.<br />
** Thanks to ArnaudB for adjusting.<br />
<br />
* Halved the cost of FRS, Cruisers and Destroyers hacks that were too costly, since they also had AIP cost.<br />
** Hacking the above structures only increases hacking response by 66% of the hack cost, instead of 100%.<br />
** Thanks to ArnaudB for adjusting.<br />
<br />
* The number of human home settlements has changed from a default of 2 to a default of 4, with the range still being 0-5.<br />
** Also, the number of cryo pods has increased from 10 to 25, still with a range of 0 to 30.<br />
** Both of these will help folks have enough income in the early game, plus some extra spots of vulnerability.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
* In a way that is almost certainly redundant given the existing code in place, we are now making sure that AI Instigators never spawn on AI homeworlds or planets adjacent to them.<br />
** The method we were using before (and still use) checks for an enemy king unit, which is generally sufficient, but sometimes the king moves (phase 2, for instance), or is already dead but the game is still going on (multiple AIs).<br />
** The new way prevents even former homeworlds from being a place that the instigator can spawn on or next to. The old method is still relevant and is also in place; as noted, this is largely redundant, but there are edge cases where they are not (AI king on the move, etc).<br />
<br />
* Ships that are under construction now only take 3x as much damage as normal, rather than 10x as much.<br />
** Thanks to some folks on discord for requesting this. This will feel better on planets of yours that are under attack, and when you are trying to beachhead. That said, some counter changes to beachheading are also coming.<br />
<br />
=== Player Nerfs ===<br />
<br />
* For thematic and balance reasons, human homeworlds no longer have any science or hacking points on them. It's a strange idea that those would not have already been gathered, and there's no point making players wait for the extra starting science and hacking points. It also was giving even more of a boost in multi-faction MP, throwing those off from single-player.<br />
** Thanks to ArnaudB for noticing!<br />
<br />
* The default number of hacking points for players starting out the game has been dropped from 100 to 60.<br />
** We do want folks to be able to do something right from the start, but it was a bit on the excessive side. Overall we're trying to make sure that players have plenty to hack, and plenty of hacking points, but at the same time that they are not drowning in hacking points.<br />
<br />
* When you are building structures on an AI planet, or you have engineers helping to build a structure or boost ship production on an AI planet, there is now a slowdown in output based on the mark level of the AI planet. The raw output of factories is not slowed down (just engineers assisting the factory).<br />
** At mark 1-2, all is normal.<br />
** Mark 3: 90% expenditure (making things take 111% longer to create)<br />
** Mark 4: 70% expenditure (making things take 142% longer to create)<br />
** Mark 5: 58% expenditure (making things take 172% longer to create)<br />
** Mark 6: 50% expenditure (making things take 200% longer to create)<br />
** Mark 7: 40% expenditure (making things take 250% longer to create)<br />
** (Quick math reminder: just do something like 100 / 0.4 to get a number like 250, which is easy to read as to how much longer it will take).<br />
** Thanks to ArnaudB for suggesting, and Magedrifter for inspiring this change.<br />
<br />
=== AI Buffs ===<br />
<br />
* New pair of mechanics! If you make a minimally-aggressive move on certain AI planets, the mark level of that AI faction (and only that faction, in the case of multi-AI games) will go up permanently.<br />
** In some respects this sounds like a penalty to players, and you could certainly argue that it makes the endgame a bit harder. And that is true, to an extent.<br />
** However, what it also does is allow for players to not fear the cutoff mark for these mark levels from AIP rising, and thus starve themselves of planets during a tense game. The rise in general AI mark level to 3 is now inevitable when you are facing off against an enemy homeworld -- so, that gives you far more latitude to work, even on very high difficulties, with AIP rises without worrying about that trigger point to the next AIP level. It will happen, so part of your mission is now making yourself even more powerful rather than keeping yourself artificially weak to slide under that threshold.<br />
** The actual thresholds in general:<br />
*** If you unload at least 10 strength on any mark 7 planet of an AI, it will gain mark 2 if it doesn't already have it. A message will pop in about this, and there is a note about this mechanic in the AIP tooltip now, too.<br />
**** It's set at this level so that you can still fly transports through if you need to bypass AI planets to get to an instigator on the far side, but you probably can't fly a golem or ark through. Also, ships like etherjet tractors can't drag off substantial enough strength of yours to trigger this, either.<br />
*** Similarly, if you unload at least 10 strength on the homeworld of an AI, then it will gain mark 3 if it doesn't already have it, and all the other same mechanics and tooltips and so on apply.<br />
** Thanks to ArnaudB for the discussion and helping hash this out.<br />
<br />
* Fixed a couple of cases where certain AI logic was not triggering for ships belonging to the PG, the Relentless Wave faction, the CPA faction, or the AI Reserves.<br />
** This more or less meant that units from those subfactions would not trigger a variety of things, including things like the Shark B plot (but realistically probably plenty of other things as well).<br />
<br />
* The Shark B plot of the AI now has a base of 4000 rather than 300, and increases by 20 per AIP rather than 10 per AIP.<br />
** This is substantially more challenging of an optional feature to enable now.<br />
<br />
* The equivalent of shark B has been baked into the main game mechanics now. The level of intensity of that depends on the difficulty level of the highest-mark AI:<br />
** Nothing at diffs 1-4.<br />
** Diff 5: base 500, +1 per AIP.<br />
** Diff 6: base 750, +2 per AIP.<br />
** Diff 7: base 1300, +4 per AIP.<br />
** Diff 8: base 2000, +7 per AIP.<br />
** Diff 9: base 2800, +10 per AIP.<br />
** Diff 10: base 3600, +15 per AIP.<br />
** If you play on a difficulty that has these values, AND you have Shark B on, then those numbers will combine and it will be truly intense.<br />
*** Note that the achievement for Shark B only gets triggered by actually having Shark B on, not by being on a difficulty level that has some of this mechanic in there.<br />
** So what is this feature, anyway?<br />
*** Essentially, any time the humans lose a command station, the AI gets a new "go for the throat" sub-fleet of the hunter. Essentially they're trying to finish the job, and it gives a bit of an extra punch to when you lose some territory even temporarily. Note that this only happens when the AI itself, or an AI-subfaction kills the command station.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
=== AI Warden Aggression ===<br />
<br />
* Previously, the Warden was "overconfident" and would attack your ships when it was outnumbered only on LOW difficulties, but this would lead to the AI actually building up large amounts of warden ships that never did anything on higher difficulties.<br />
** The warden now is almost directly inverted in terms of its overconfidence, where it is now more likely to attack on higher difficulties even if it is outnumbered. Paired with some upcoming progressive income buffs, this should make for more fights with the warden while those fights not all being apocalyptic.<br />
** Thanks to ArnaudB, Magedrifter, and others for noting just how passive the warden is, even with huge advantages against the player.<br />
<br />
* Made a number of changes to the warden danger evaluation for pathfinding and such for its fireteams, so it is far more likely to path through dangerous planets. This will cause minor scuffles and losses, and that's okay. We want the warden to be... brushing up against you a lot.<br />
** Rather than the warden thinking things like "if it's more dangerous than 1 strength, don't call a remote unit," it now only says "if it's more dangerous than 80 strength," which is a big difference. Sure that will get a lot of small units killed, but it also gives a chance for them to rebuild, and some will sneak by anyhow.<br />
** Rather than the warden going "if the total danger to where I want to lurk is stronger than 1/10th of my own strength, then just ignore that possibility," it now doesn't care about that sort of danger at all. The warden isn't here to cower.<br />
** Rather than the warden ignoring possible places to lurk if they "only" outnumber the enemy 10:1 on the way, they now will only go if the enemy outnumbers THEM by 30:1 now. This is basically assuming that the target planet is within about 3 hops, so on average they are outnumbered 10:1 (which is still a complete inversion from them previously needing to be 10:1 outnumbering YOU).<br />
** This means the wardens will give SOME consideration to not blundering into dangerous forces, but overall they will go where they want to. Again, more scuffles and skirmishes.<br />
<br />
* As for potential targets for the warden fleet, they are already not interested if there are less than 2 hostile strength on them, but now there are a few other changes:<br />
** If it's not a planet that was originally a homeworld for the AI, and there is less than 6 friendly strength on the planet, then it's not interesting for the warden to try to defend.<br />
** Aka, if the planet has been neutered, and it's not currently being attacked by the hunter or something, then this is not a hill worth dying on.<br />
** Thanks to Democracy for suggesting.<br />
<br />
* The Warden fleet gets its budget from "donations" from the main AI sentinels, but also sometimes from some other sub-factions that don't need their budget. That's the setup for this explanation.<br />
** However, now that we've got an intentionally-more-reckless warden, we want them to have essentially some progressive extra income based on just how depopulated they are. Rather than giving them a literal secondary revenue stream (which would be complicated), we're instead amplifying every donation they get if their population is heavily depleted at the moment.<br />
*** Bear in mind that the warden is now going to be depleting itself in all sorts of ways that are not all that dangerous to you now, and so the idea is that you're getting more conflict (as with the AI waves), and thus having a more interesting time, but the warden will just evaporate and be gone forever in a game if it did that without having compensation to back it up. Also bear in mind the HUGE buffs that we've been giving to player economy and capturables, so this is also kind of balancing that out a bit, too. This isn't meant to just be cheap rubberband AI, but rather something that adds more flavor and challenge when the players themselves have been reaping buff after buff lately.<br />
** Okay, so when the warden's current population is (pick the first that applies only):<br />
*** Under 1%, get a 10x bonus to donations.<br />
*** Under 2%, get a 8x bonus to donations.<br />
*** Under 4%, get a 7x bonus to donations.<br />
*** Under 6.6%, get an 6x bonus to donations.<br />
*** Under 10%, get a 5x bonus to donations.<br />
*** Under 12.5%, get a 3x bonus to donations.<br />
*** Under 16.6%, get a 2.25x bonus to donations.<br />
*** Under 25%, get a 1.6x bonus to donations.<br />
*** Under 33%, get a 1.25x bonus to donations.<br />
*** Under 50%, get a 1.1x bonus to donations.<br />
** In general, this will hopefully help them maintain a minimal presence in the galaxy at the very least, while still getting into more overconfident scuffles with you on purpose.<br />
*** Previously, the strategy of the warden was to wait and build up doomstacks that it would then use to crush you on planets if it could, but otherwise just lurk and avoid you. This was usually not super effective as a strategy, and when it was effective it did not feel good to be on the other end of that.<br />
*** The general new strategy of the warden is aggression and chaos, and while it will spend some time lurking and growing, a lot of that is going to be situational. It is very unlikely to build a doomstack now (unless there's another place in code where we missed it being overly cautious), and it's highly unlikely that it will come and make a planet absolutely impossible for you to take unless you were already teetering on not being able to take that planet.<br />
*** What the warden WILL do is generally hit you with small to slightly-huge forces, situationally, and it acts as a wildcard as you plot the destruction of various enemy forces. You can thin out the warden a bit, but overall they will just rebound from that, and frankly they will thin themselves out enough that, again, there's not the doomstacks there that you have to worry about in the same way.<br />
** Overall let's see how this does! If they feel too everpresent, or too weak, we can change numbers around. But more conflict, and more wildcards, are something we view as good in this sort of area.<br />
** Thanks to ArnaudB for suggesting a form of progressive income, although we twisted the concept a bit.<br />
** These numbers have been revised down after Democracy had a bunch of fights with the interesting new warden. Thanks for helping us tune those before unleashing them on everyone else!<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Adjusted the default amount of hacking points players can set to 60 to fit with the new Vanilla balance.<br />
<br />
== Beta 2.745 The Unsmothering ==<br />
(Released February 22nd, 2021)<br />
<br />
* Removed a duplicate file that caused an error on startup for Civilian Industries.<br />
<br />
* Fixed an issue introduced in the prior beta build where clicks were often registering twice in quite an annoying manner. It turns out that our new adjustments to do raycasts on FixedUpdate in order to solve a rare problem on some OSX machines needed a bit more nuance.<br />
** Thanks to Timerlane for reporting.<br />
<br />
* Fixed an issue with speed groups that could cause various inefficiencies, as well as also errors in multiplayer and now in single player, too. Not sure if this fixed the multiplayer sync problem with speed groups, but it does at least fix the single player one and the inefficiencies.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Fixed a couple of typos in the deepstrike description, and one strange wording.<br />
** Thanks to Ovalcircle for reporting in detail.<br />
<br />
* Fixed a whole bunch of errors that could happen if you were viewing a tooltip of a unit right as it died. Command stations in particular.<br />
** Thanks to samnainocard for reporting.<br />
<br />
* Fixed a typo from the prior version that was causing only reverse tractor beams to actually draw.<br />
** Thanks to Democracy for finding!<br />
<br />
=== Fallen Spire City Upgrade Mechanics ===<br />
<br />
* On the fleets sidebar popout, for any ship lines that have only a single entry, it now lists the details of the specific ship if there are any.<br />
** This is immediately useful for seeing the spire city details from hovering over the city hub entry in a given fleet, or for seeing flagship info on any fleet.<br />
<br />
* The city-specific information for the fallen spire no longer requires you to unpause the game before it can be viewed.<br />
<br />
* The tooltips for why a specific spire city can or cannot be upgraded are now way more explicit and clear on what is needed for this exact one.<br />
<br />
* Spire cities no longer upgrade in an automated fashion at all.<br />
** For one, that was often happening in a strange way that was not correct.<br />
** For two, it was denying players the ability to choose which city would upgrade when multiple were possible, which was greatly annoying to them.<br />
** Instead, now at the top of the screen you see a notification with the Informational level of priority when you can upgrade spire cities. Clicking on it will actually do the upgrade.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
=== Volume Of Ships/Turrets Reduction ===<br />
<br />
* ARS seeding adjustments:<br />
** There were 2 extra ARSes that tried to seed pretty close to human empires, in addition to 1 for each human empire, in addition to the 1 for each human empire that is VERY close. <br />
** Those extra 2 are now gone, while the other base of "2 per human empire" are still there. So in a single player game, this would move down from 5 close-ish ARSes to 2. In a 2-player game, that's down from 7 close-ish ones to 4.<br />
** There were just way too many choices for people, and an excess of options in general.<br />
<br />
* There were then a bunch more ARSes way out in the galaxy at various points, and the number of those could be tremendously huge, too. We have tentatively cut those numbers in half, given how many extra choices and how much information overload people were having.<br />
<br />
* Last change for ARS, that second one that normally would be close based on the number of humans empires is now just seeded kind of wherever.<br />
** This lets there be more ARSes out there in general in multiplayer, without the near-field being just absolutely riddled with them.<br />
<br />
* For the ODSS, it was previoulsy seeding one near each human empire.<br />
** It now seeds that first one absolutely anywhere, instead of it being close by.<br />
<br />
* For ODSS, it was previously trying to seed the other ones half in the near distance, and half anywhere.<br />
** The half that were going anywhere are now just gone, and then the half that were going in the middle distance now are within 3-11 hops, roughly.<br />
<br />
* Lastly, the TSS. There are way too many of these, too.<br />
** There is still one put very near to each human empire, as these are very important.<br />
** There is another added for each human empire as well, but rather than being within 3-6 hops, it is now within 3-99 hops. Far less congestion in the early game of good things to capture.<br />
** The rest were put out in the main galaxy, some in the vaguely middle distannce, and some kind of whever. It now only seeds half as many, and mostly does them wherever.<br />
<br />
* Overall, hopefully these changes lead to less information overload, and less overload of turrets held by players in general.<br />
<br />
* The hacking point cost of hacking an FRS has doubled.<br />
<br />
* The hacking point cost of hacking an ARS has doubled.<br />
** The hacking point rise per hack on ARSes is now 2x rather than 1.5x, and the response strength increase is now 2.8x rather than 2.2x.<br />
<br />
* The hacking point cost of hacking a TSS has doubled.<br />
** The hacking point rise per hack on TSSes is now 2x rather than 1.8x, and the response strength increase is now 2.8x rather than 1.8x.<br />
** The maximum number of hacks on a TSS is now 3 rather than 4.<br />
*** This eliminates some of the "large number of turrets left behind" that could otherwise happen when you take a planet and don't want to afford that super expensive last hack.<br />
<br />
* Additionally, the TSS now gives you 5 options rather than 6.<br />
** And the ODSS gives you a max of 4 options rather than 6.<br />
** And the ARS gives you a selection of 4 strikecraft and 1 frigate rather than 6 and 2.<br />
** Again, all of these things come down to the sheer analysis paralysis that people could face, and the ability of people to get exactly what they want at all times, and therefore the increasing homogeneity of all galaxies.<br />
<br />
* Bear in mind that we will adjust further if needed, but the goal is to give players meaningful choices that are different each game, and not SO many choices that it is either overwhelming or just a repetitive "choose your favorite thing" every game. <br />
** It's really important to remember that with ship upgrades now, getting to mark 4 is most of the battle, so having more diversity in unlocks (because you can't find exactly what you want) is a good thing and actually can lead to higher overall power versus just getting to mark 7 with a single tech class that you lean into completely. Put another way: if you have 6 ship or turret lines, you get more strength if you have 3 each in 2 groups that have been upgraded to mark 4, versus all 6 being in one group that has been upgraded to mark 7. You also get more strategic and tactical flexibility, but just the raw strength numbers are higher.<br />
<br />
** Thanks to Strategic Sage, CRCGamer, Zeus, Democracy, and Zweihander2021 for weighing in on this, among others.<br />
<br />
=== Balance Updates ===<br />
<br />
* Some updates, mostly nerfs to turrets in response to long-lasting issues for raid-melee ones, and nerf for exotic turrets after Magedrifter's recent Difficulty 10 victory.<br />
** Turrets changes due to TSS shift and balancing:<br />
*** A number of turrets have adjusted costs:<br />
*** Makeshift cost raised from 15 to 20k. Like Ruffian.<br />
*** Scrap cost raised from 10k to 15k. It overshadowed Ambush far too much.<br />
*** Ambush cost lowered from 22,5k to 20k. So its competes properly with raid turrets.<br />
*** Crusher cost lowered from 225k to 150k. Hopefully it'll make it used more.<br />
** Also:<br />
*** Makeshift lost metabolism damage since it has the drones, the description didn't even mention it anymore.<br />
*** Shredder gained Makeshift's metabolism instead, where it'll be useful and make the turret attractive. Description changed to mention this.<br />
*** Reduced Subverter zombification multiplier from 20 to 5. Its damage was buffed due to being too low, but its parasitism was far too strong even at low mark.<br />
*** Harmonic maximum damage and damage per mark reduced by 25%.<br />
*** Thanks to Magedrifter for the feedback on these last two, and ArnaudB for implementing all this.<br />
<br />
* Prevented the Scourge from getting builders over the limits. Also fixed the experience needed for the initial armory and spawners.<br />
** Thanks to ArnaudB for discovering and fixing!<br />
<br />
*Sentry Frigate reduction: with constant max caps they ate too much metal.<br />
**Reduced combat sentry frigate count on starting support fleets from 4 to 2<br />
**reduced combat sentry frigate count on seeded support fleets from 4 to 2<br />
**Reduced Sentry Frigate on command stations from 12 and 4 to 2.<br />
<br />
* Adjusted all basic guardians to start at Mark 3.<br />
** Additionally bumped a small number of basic guardians that rely on weapons one speed step.<br />
** Note that units like Carriers or Tethuida with special properties were not included in the speed step increase.<br />
** Thanks to CRCGamer for identifying how weak guardians were in the new pantheon of player ships, and addressing this.<br />
<br />
=== DLC2 Feature Items ===<br />
<br />
* Cruisers and Destroyers have been added as new SpecialEntityType entries, and rollups.<br />
** They also have their own mark level scaling styles, although right now those are identical to how Frigates scale up.<br />
** These are primarily to be used in DLC2 and DLC3, respectively.<br />
** Usage: special_type="Cruiser" where you would use special_type="Frigate" or similar in the past.<br />
<br />
* There is a new is_elite="true" that can be applied to entities directly (like we do with is_strikecraft="true").<br />
** Anything with a special_type="Cruiser" or Frigate will automatically also be marked as IsElite, so you don't need to also specify that one.<br />
** Any ship lines that are elite no longer count against fleet-wide bonus caps, and this is noted in the tooltips for the fleet-wide bonuses (along with the fact that flagships don't count).<br />
** The logic for making sure that only one elite line can be placed in a given fleet is not well-tested, but we'll get to that as we have units of that sort.<br />
<br />
* Cruiser and Destroy Construction facilities now seed exactly two per any size of galaxy, plus an additional 1 per each 2 additional multiplayer human empires beyond the first (so a 3-player and 4-player game both have 3 cruiser facilities, and a 5-person game has 4).<br />
** These only seed if there are actually any cruisers or destroyers in the mods or expansions you have installed.<br />
<br />
* Reorganized a fair bit of the order in which code is read in for ships, so that when they are being added to fleets or AI ship groups more of the info is present. This lets cruisers and destroyers actually be read in properly to their other categories.<br />
<br />
* Added a new tractor_hits_engine_gx_greater_than, tractor_hits_albedo_greater_than, tractor_hits_mass_less_than, and tractor_hits_mass_greater_than.<br />
** The text on the tooltips has also been updated to dynamically write these various things for units affected.<br />
** We probably need some checks to make sure that none of the existing logic broke, let alone any new units that use these. This was complicated, but looking at one unit seems okay so far.<br />
** Thanks to Zeus and CRC Gamer for requesting.<br />
<br />
=== Mod Updates ===<br />
<br />
* Update to More System Defenders v1.23<br />
** Artillery Cruiser renamed to Artillery Destroyer in response to some other stuff elsewhere. Power cost and tX adjusted as well.<br />
** Basic AI Guardian units added by the mod have had their base starting mark level adjusted up to 3 to match base game changes.<br />
** Fixed the station keeping frigate entries that can be acquired via ODSS to not show up in the valid build entries for battle stations and citadels.<br />
<br />
== Beta 2.744 Scourge Industries, Inc ==<br />
(Released February 20th, 2021)<br />
<br />
* Fixed a one-line typo in the prior version that was causing tractor beams to not work in general, and exception popups on startup. Essentially the tractor beams would only work on ships with no engine strength at all, because tractor_hits_engine_gx_less_than was no longer being read from xml at all.<br />
<br />
* Added wording in the tooltips for hacking ARS and TSS that says " The last sector can also be prohibitively expensive to hack, so unless you have no other options you may wish to leave it at just three." (or two in the case of ARS.<br />
** Thanks to Zweihander2021 for alerting us to folks running into confusion there on the pros and cons and expectations.<br />
<br />
* The old hacking tooltip was really not accurate anymore. It read:<br />
** Hacking: Used to exploit flaws in the AI internal network. The more hacking points you use against an AI, the stronger that AI's response to your hacks will be. Only points spent against an AI owned structure count.<br />
** New version reads:<br />
*** Hacking: general-purpose nanomachines used to improve your own units, sabotage enemies, or steal from enemies. Note that you are in a target-rich environment, and likely cannot afford even a third of the hacks available to you. Choose your hacks wisely, and capture more planets or destroy distribution nodes to get more hacking points. Also note: the more hacking points you use against an AI, the stronger that AI's response to your hacks will be. Only points spent against an AI-owned structure count.<br />
** Thanks to Zweihander2021 and ArnaudB for suggestions in this area.<br />
<br />
* Fixed a bug with the new burst fire weapons that was causing them to not reset their timings properly, and thus generally switch back and forth every shot after their initial period.<br />
<br />
* All of our camera handling logic and mouseover logic (mainly stuff that uses raycasts) is now being run on Update and on FixedUpdate. There was a rare issue where sometimes no raycasts were working for someone, and it is most likely the fact that we were only doing that in Update, when the main physics work is done in FixedUpdate instead.<br />
** We'll see if this solves the problem for the user in question, but it shouldn't cause any problems for anyone else and seems to be working fine so far.<br />
** Thanks to Badger and his play group for discovering.<br />
<br />
* You can once again swap ship lines into/out of mobile support fleets.<br />
** Thanks to tadrinth for raising the issue.<br />
<br />
* Fixed "Max Planets To Scout At Once" referring to the removed "Scout Adjacent Only" feature.<br />
** Thanks to Asirito for reporting.<br />
<br />
* The max of "Max Planets To Scout At Once" is now 10 rather than 40, to keep things from getting too crazy. The default is still 8.<br />
<br />
* The Other Defensive Schematic Server now has a unique icon separate from the Turret Schematic Server.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Put in some defensive code against tech vaults throwing errors when you mouseover them.<br />
** Thanks to Zweihander2021 for reporting.<br />
<br />
* Fixed an issue where in recent beta builds, you could get seemingly-higher-level unclaimed golems on certain planets. They would then revert to their proper mark level of 1 when you actually capture them.<br />
** Thanks to NullZwei for reporting.<br />
<br />
=== Tractor Balance Tweaks ===<br />
<br />
* Any ship that produces tractor beams can no longer be stacked.<br />
<br />
* Any ship that has a reverse tractor beam locked onto an enemy cannot be knocked back (aka knocked off the ship it latched onto). If the thing it is targeting is knocked around, then it will be knocked with it of course.<br />
<br />
* Updated the way that tractor beams work in general (reverse or otherwise) so that if there is not a unique new ship to grab that no other tractor beams are grabbing, they will instead just grab onto one that someone else is grabbing. This is particularly relevant for reverse tractors.<br />
<br />
* Fixed a number of bugs with reverse tractor beams. The now work, and they look AWESOME.<br />
<br />
* Etherjet, Thieves, Persuaders, and similar all now have 1/4 the ship cap, cost 4x as much for players and the AI, have 4x the attack power and hull health, and have updated descriptions.<br />
** Existing savegames may still have too many of these on the side of players or the AI, which will make that local force far stronger than it should be.<br />
** Thanks to ussdefiant60 for pointing out how the fact that these will no longer stack is going to be problematic.<br />
<br />
=== Fallen Spire Balance Tweaks ===<br />
<br />
* Spire relic train reduced from 700 to 500, to give you more time to hack it.<br />
** Thanks to users on discord for suggesting.<br />
<br />
* All of the various fallen spire notifications are now part of the Fallen Spire code file, which may not sound important (and it's not, directly), but shows how DLC or mod content can be added without having to update a central non-moddable file. At any rate, moving this over shows more easily how this is done, since we don't know of any mod factions that currently use notifications on the top bar (or maybe they do and we just don't know it).<br />
** We also have started on a new way of handling spire city upgrades, using the notifications on the top bar, but it's not ready yet.<br />
<br />
=== Scourge Major Rebalance ===<br />
<br />
* Scourge major rebalance:<br />
** Scourge mess of an economy got greatly simplified. Its buildings and units have the same experience cost at all intensities. Metal production is also the same for spawners and builders at all intensities. Now only two variables balances the Scourge's economy: Experience per second and Neophyte cost.<br />
** The Scourge does get nastier in others way at higher intensity, even without considering the two variables above.<br />
** Previously Scourge got the cheapest and most strongest upgrades first and the most expensive and weakest upgrades last. This is now changed. Scourge get the most expensive and strongest upgrades first, and the cheapest and weakest upgrades last.<br />
** This means Scourge stay at low marks much longer, but once units or buildings reach higher mark, they upgrade to the next faster and faster.<br />
** However this also means that killing high-marks buildings or builders will truly hurt the Scourge, whereas it was essentially meaningless before. At start, a spawner Mark VII has 300% the production of the Mark I. This gap narrows as the Scourge gain power.<br />
** Said power increase still happens as you spend science. The Scourge get a flat bonus to metal production every 3 planets worth of science. Do this enough time and, like AI mark, the Scourge will "mark up" and all its buildings will start Mark II. This means it gets the most expensive and strongest upgrade for free. The Scourge can "mark up" again to mark III if you play a high-enough AIP game. This gives it the 2nd most expensive and 2nd strongest upgrade. Watch out.<br />
** Overall the Scourge start up more slowly but scale up more compared to before, where it quickly reached a peak and stalled.<br />
** Killing builders is much more meaningful, destroying high-marks buildings is more meaningful, it's more clear on the galaxy maps that you're having an effect on the Scourge by killing them, as newly-built buildings stay at low marks much longer.<br />
** With the new intensity: Scourge first spawner can reach Mark VII at intensity 1/3/5/7/10 in 7h40/5h10/3h50/3h10/2h30. Those values are less extreme than the previous ones and more forgive, so that Rogue-like DLC2 options limits the number of scenarios unwinnable for most players.<br />
** All those changes affect all three Scourge: Ai-Allied, Friendly one, Minor-Faction one.<br />
** Thanks to ArnaudB for doing all this!<br />
<br />
* Since the scourge now have fewer builders (which are more important), the scourge now dedicates units to escorting their builders.<br />
** Thanks to Badger for the awesome new fireteam mechanic!<br />
<br />
=== Civilian Industries Updates ===<br />
<br />
* Civilian Industries Update<br />
** Updated to support the new galaxy settings system.<br />
** Updated to support new pathfinding code.<br />
** Updated to support new hacking code.<br />
** Updated to use new tech names where applicable.<br />
** Added in some restrictions on Cargo Ship capacity.<br />
*** Scales up based on trade stations, militia leaders, and intensity.<br />
*** Previously there was no limit other than unfulfilled trade requests, meaning there could be some insane late game cargo ship counts.<br />
** Experimental unit stat update.<br />
*** All regular entities spawns for a Civilian Industry faction will have increased hull and damage stats compared to their regular variants, but no shields.<br />
*** This should hopefully help cut down on their unit counts late game, and make any damage they take mid fight more permanent, allowing them to be more easily sniped off whenever they attack something.<br />
*** Turrets and Protectors are unchanged.<br />
** These changes combined may be a notable nerf to their power level, so please let StarKelp know if you feel like they need any complimentary buffs, or if they still deserve more nerfs.<br />
<br />
== Beta 2.743 Scourge Growth Chart ==<br />
(Released February 19th, 2021)<br />
<br />
* A number of updates to the text in the lobby and in the intel sidebar to make the advice on how to handle the Scourge more nuanced, particularly as it relates to higher intensity and/or AI difficulty combinations.<br />
** Thanks to ArnaudB for providing the insights and updates!<br />
<br />
* Fixed the lobby still saying "Defensive Schematic Servers To Seed" rather than the TSS and ODSS variants.<br />
** Thanks to ArnaudB for noticing!<br />
<br />
* Added lobby intensity description for Fallen Spire.<br />
** Thanks to ArnaudB for adding!<br />
<br />
* Improved the efficiency of some of the tractor beam and tachyon beam code to a minor degree.<br />
** On planets where no player is looking, this effect is particularly pronounced now. So it might help some minor factions more than anything else.<br />
<br />
* Fixed a bug where if you had tractor beams disabled visually, some of the functionality of them would actually be handled incorrectly.<br />
<br />
* Updated the cloaked variant of the Mugger Frigate to follow the same dual-tech rules as its base version.<br />
** Thanks to CRCGamer for fixing.<br />
<br />
* Fixed a bug in the drone-line removal checks that would remove a drone line and destroy all its members even if the centerpiece had a drone gun that would produce this kind.<br />
** This most notably lead to the Extended Ship Variants' Rescue Factory not working.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Starting Fleets received several buffs and corrections:<br />
** Classic trade the Fusion Bomber for the Heavy version, with a lightly oversized cap.<br />
** Doorkicker had its Siege Frigate cap raised from 4 to 6.<br />
** Consumer had its Fusion bomber cap raised from 30 to 40.<br />
** Sniper had its Tackle Drone Frigate cap raised from 4 to 6.<br />
** Undying had its Warbird Hydra Frigate cap lowered from 6 to 5.<br />
** Omniscient had its Apparition Frigate cap raised from 6 to 9.<br />
** Broadside had its Siege Frigate cap raised from 4 to 6.<br />
** Thanks to ArnaudB for finding and fixing.<br />
<br />
* Other balance tweaks:<br />
** Heavy bomber default cap raised from 20 to 35<br />
** Parasitic bomber cap raised from 20 to 25<br />
** Thanks to ArnaudB for tuning.<br />
<br />
* Scourge has been rebalanced to grow in strength a bit less exponentially than it used to, so that it still gets strong but is not an overwhelming death squad in the late game.<br />
** Made the Scourge builder and its cloaked version much tougher, as well.<br />
** Thanks to ArnaudB for the analysis and changes.<br />
<br />
=== DLC2 Features ===<br />
<br />
* Added is_reverse_tractor_beam="true" as two options on tractor beam systems.<br />
** This is was quite an interesting coding challenge, but essentially what it does is attach one of more ships to a target, and have them get pulled along with it, rather than them holding it in place. They do prevent if from leaving the current planet, even though they drag it around, though.<br />
** This needs a LOT more testing.<br />
** Thanks to zeus for requesting for some DLC2 content.<br />
<br />
* If a ship is being tractored, it can no longer go through a wormhole unless the ship that is tractoring it drags it through.<br />
** Essentially if you have tractored an enemy ship and it is sitting on a wormhole, it can't escape your tractor by going through.<br />
** Or if you have reverse-tractored an enemy, it can't drag your attached ship through a wormhole.<br />
** But if an enemy has tractored you, and it wants to drag you off to another planet, that still works A-OK.<br />
<br />
* Added use_alternate_rate_of_fire_after_x_shots, alternate_rate_of_fire, and use_alternate_rate_of_fire_for_x_shots_before_reverting.<br />
** If the alternate_rate_of_fire is specified, then the other two must be also specified to be at least 1 or more.<br />
** This allows for a new BURST FIRE mode.<br />
** More testing needed.<br />
** Thanks to zeus for requesting related to DLC2 ships.<br />
<br />
=== Mod Updates ===<br />
<br />
* Extended Ship Variants:<br />
** Increased the strength multiplier (not the actual combat strength) of the Sharpener Frigate from 1.5 to 2.5 and the Wedge Frigate from 1.5 to 2, as they had a lower displayed strength compared to the Shredder Frigate.<br />
*** Thanks to tadrinth for reporting on Discord.<br />
<br />
== Beta 2.742 Hacking Balance ==<br />
(Released February 17th, 2021)<br />
<br />
* Add an xml option to have a weapons systems beam rotate over time, 'seconds_for_beam_to_rotate_fully'; if set to 360 then in 360 seconds the beam will sweep a full circle.<br />
<br />
* Fix a bug where the Dyson Bastion was using the same model as the Dyson Bulwark.<br />
<br />
* Put in yet more defensive code against a persistent cross-threading issue in the fleet factories-supporting code.<br />
** Thanks to Lictuel and Magedrifter for the most recent reports.<br />
<br />
* Fixed a rare error that could happen in CheckForOwnershipChange() if the game was in just the wrong state when you exited to the main menu.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Fixed a bug where mobile support fleets were able to swap ship lines between fleets. Not sure how recent that is.<br />
** Also fixed a bug where the spire city lines could be swapped between fleets. Again not sure how recent that is.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* When planets have mark levels swapped around because of that new randomization in mapgen, it now properly actually swaps the mark levels of all the ships and structures on the affected planets! This won't change existing savegames, but will keep it from happening in new ones.<br />
** Thanks to Democracy for reporting.<br />
<br />
=== Revisions To Recent Beta Features ===<br />
<br />
* Distribution nodes now cost 3 AIP to shoot rather than 1, and provide 35 HaP instead of 80. They now give 1200 science rather than 1000.<br />
** Thanks to ArnaudB for reporting how much they were skewing things.<br />
<br />
* Superterminals are the one kind of hack that actually still destroys its target even when you cancel a hack. A superterminal hack is by definition a "hack until you can't take it anymore" sort of endeavor, so this not being there was quite unbalanced.<br />
** Thanks to Asirito and ArnaudB for reporting.<br />
<br />
* hacking_does_not_increase_difficulty_of_future_hacks_against_this_faction has been removed from hacks, and replaced with hacking_points_against_this_faction_percentage_recorded_modifer<br />
** The ARS, TSS, and ODSS all now have a multiplier of 0.33 in this field.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
* Fixed a typo in the prior build that was listing the ODSS as having four internal sectors and being hackable four times when it was really two.<br />
** Thanks to CRCGamer and ArnaudB for reporting.<br />
<br />
* hacking_points_against_this_faction_percentage_recorded_modifer can actually be used to make hacks MORE noticed by the faction you are targeting, incidentally.<br />
** At this point, because of its extreme power and comparably low cost in HaP, we're having the superterminal hack actually now record twice the normal response rate.<br />
<br />
* Direct battelstation science upgrades:<br />
** Were: 250,800,1800,2800,3600,5500<br />
** Now: 450,1400,2800,3800,4600,6500<br />
** Thanks to ArnaudB reluctantly suggesting this nerf to a thing he loves.<br />
<br />
* Direct citadel science upgrades:<br />
** Were: 400,1100,2200,3300,4400,6500<br />
** Now: 500,1500,3000,4000,5000,7000<br />
** This value is now the same as a command station, for context.<br />
<br />
* The "Neutral Planet Science Extraction" hack makes a return, as many people missed it. However, the balance is a bit different:<br />
** Previously, it gave you a discount in hacking point cost if you had already partly extracted the science from that world. It no longer does.<br />
** Previously, in multi-empire multiplayer games, it made you spend more hacking points for each empire beyond the first. It no longer does.<br />
** It used to take only 10 seconds (although more on higher difficulties), but now takes 60 seconds instead, making it one of the longer hacks around.<br />
** The response strength on completion is now 3x higher than before.<br />
** It now costs 30 HaP rather than 10 HaP.<br />
** Thanks to ArnaudB and others for suggesting.<br />
<br />
* For hacks that require a local hacker, it now says what kinds they can be.<br />
** Hacks in general that require a local hacker can only be done by an officer or a transport, and the tooltip now says that.<br />
** We now have hacker_can_be_battlestation, hacker_can_be_support_fleet, and hacker_can_be_lone_wolf for hacks to make it so that we can use those if they are around.<br />
<br />
* With hacks in general, it now tries to find them in the following order (which decreases the chance of you getting the annoying "you have multiple hackers and we can't tell who to use" message):<br />
** If it must be a battlestation, then first check selected citadels, then all citadels, then selected battlestations, then all battlestations.<br />
** If it can be something else:<br />
*** If lone wolves are allowed, check them first (first selected, then any in general).<br />
*** Then officers; then strike fleets.<br />
*** Then if support fleets are allowed, check them.<br />
*** Then if battlestations are allowed, check citadels, then battlestations/<br />
** For this whole process, it checks in this priority order JUST for selected ships, with no errors, and if you have one selected that's allowed, it will use that. Then it checks by group in selected, then all fashion.<br />
<br />
* The following hacks can now be done by support fleets:<br />
** Weaken Turrets or Guard Posts<br />
** Hack GCA (if in old save)<br />
** Extract science from neutral world<br />
** TSS or ODSS hack for all fleets<br />
** Search for Spire Relic, Analyze Spire Debris, and Steal Macrophage Debris (DLC1)<br />
<br />
* The following hacks can now be done by battlestations:<br />
** Weaken Turrets or Guard Posts<br />
** Hack GCA (if in old save)<br />
** Extract science from neutral world<br />
** TSS or ODSS hack for all fleets<br />
** Search for Spire Relic, Analyze Spire Debris, and Steal Macrophage Debris (DLC1)<br />
<br />
* The following hacks can now be done by lone wolf fleets:<br />
** Spire Archive Extraction<br />
** Weaken Turrets or Guard Posts<br />
** Hack GCA (if in old save)<br />
** Extract science from neutral world<br />
** Subvert Super Terminal<br />
** TSS or ODSS hack for all fleets<br />
** Sabotage An Enemy<br />
** Reprogram An Enemy<br />
** Access Outguard Beacon and all the faction beacons<br />
** Provoke Vengeance Strike and Render Vengeance Generator Vulnerable<br />
** Dyson hacking (other than granting of ships)<br />
** Search for Spire Relic, Analyze Spire Debris, and Steal Macrophage Debris (DLC1)<br />
** Pretty much all the DLC2 hacks other than those that grant ship lines.<br />
<br />
* Updated some code to allow support for the spirecraft fleet leaders from the fallen spire to act as hackers in general. This has never been possible before now, with any hack.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Updated the ExtendedHackingImplementation:<br />
*** There no longer is a specific type for "this is done by battlestations or citadels". Instead this has been extended to literally EVERYTHING.<br />
*** There now are specific filters for what unit type can hack: Transports, Arks, Fleet Golems (Golems that can have fleet ships), Lone Wolves, Mobile Support Factories, Battlestations, Citadels and others (in case there ever is).<br />
**** These others can be defined in a rollup. It's now possible to make a hack that only a Battlestation, VWing, Metal Harvester, Spire Dreadnought or anything else can execute.<br />
*** In case the hack requires a local hacker (even an abnormal one) this list of potential hacker types will be displayed in the tooltip if none are present on the planet.<br />
*** This required a new approach to the duplicate hacking notifier, which now uses a ConcurrentBag to store hackers and uses them for making the notifiers.<br />
**** This should remove any chance of cross-threading exceptions.<br />
*** Hacks of this kind still need to be set up in XML as requiring no planetary hacker, thus the hacker initially will be Home Command. The special hack will simply transfer the hack onto the actual abnormal hacker at the first second.<br />
**** It requires them to be non-crippled and non-destroyed, have no active hacks and prefers selected over all, though will use the closest hacker if more are present.<br />
*** With this capability a lot of future hack ideas become possible...<br />
** Introduced new functions for faction filtering and caching:<br />
*** Every SmartFactionImplementationBase now has 8 faction lists that are cached, and refreshed at most every game second, otherwise recycled, and if never used stay dormant.<br />
**** These are AllHostileToMe, AllIAmHostileTo, AllFriendlyToMe, AllIAmFriendlyTo, AllLivingAIsHostileToMe, AllLivingPlayersHostileToMe, AllLivingAIsFriendlyToMe, AllLivingPlayersFriendlyToMe. Two more, AllLivingAIs and AllLivingPlayers are stored inside the GlobalImportantRollupHolder as these are universal for all factions.<br />
***** These help to reduce CPU cost through constant recalculations, and even more in GC Churn. The overall effect will most likely be minor, but it's easy to do and costs very little memory, and most importantly: Makes the lists future-proof.<br />
***** They support random draws, getting the first or null, average base marks, average power level and combined power level calculations, and potentially more in the future as needed.<br />
***** They also replace the GetFirstLivingAIOrNull and similar functions, which are now available in the form of a very complex GetFactionListOrEmpty and similar functions within the AMU Core.<br />
***** The filters include searching for living, dead or both, in combination with searching only for a specific type or all but a specific type, and all with a specific relation to a faction (or vice-versa), or all but this.<br />
** Updated the included source code.<br />
* Kaizers Marauders:<br />
** Implemented all the above changes. Hacks should now work again, and better than ever.<br />
** Fixed a bug in displaying capturable ship or turret lines that could potentially occur when being a spectator in multiplayer.<br />
** Fixed a bug that potentially allowed for more Marauder Capital hacks than should be allowed.<br />
<br />
== Beta 2.741 Refining The Big One ==<br />
(Released February 16th, 2021)<br />
<br />
* '''This version breaks any savegames from the prior version, which is not something we usually do. However, the prior savegame balance was off enough that we don't want to test anymore with games started in that version (that will just be confusing data), and we are on the beta branch after all.'''<br />
<br />
* Added Denial Fleet to the starting options, bringing the suppression frigate to the roster. As a visually impressive frigate, it was sorely lacking.<br />
** Thanks to ArnaudB for adding!<br />
<br />
* There is a new Minefields category on the build sidebar, and all of the main-game mines are now in that. Any mod minefields will want to set build_sidebar_categories_i_am_part_of="Minefields".<br />
<br />
* All of the remaining "Grant Ship Line" hacks have been renamed to be more thematic and clear, and the tutorial has also been updated to use the correct hack name.<br />
<br />
* The annoying "Civilian" voice group is no longer used for any of the civilian-style structures. Instead those are now just silent.<br />
** This keeps spies, engineers, combat factories, battlestations, etc, from all being incredibly annoying.<br />
** This was meant to be a bit of an easter egg feature on a few civilian craft, but right now there are none using it anymore.<br />
** Thanks to NullZwei for reminding us.<br />
<br />
* Decoy drones now use the annoyed civilian voice line. Other ships may in the future, but for now this is the only one. As has been pointed out, he's so annoying that the AI shoots him first.<br />
** Thanks to Puffin and others for suggesting.<br />
<br />
* When there are members of a "relentless AI Wave" subfaction, if they are on a planet that is allied to them, and there are at least 3 strength of enemies to them at that planet, then they now fight at that planet before running off to attack somewhere else.<br />
** This applies for things like counterattacks, and hacks against the AI, etc. They now directly try to engage your forces at the planet where you are hacking them, unless your forces are pathetically weak. Previously, the challenge was fighting them before they could all run away to go destroy your home planet.<br />
** Thanks to AxiomExotic for the idea.<br />
<br />
=== Revisions To Prior Beta Version ===<br />
<br />
* Apparently the Warbird changes went missing amidst everyone's commits last patch.<br />
** So went with a somewhat different approach this time that is fairly similar overall but is somewhat less harsh overall and hits the truly OP parts more accurately.<br />
** Still gets a 15% hull and shield cut for base hull and all following variants.<br />
** Decloaks against the AI in 1 shots instead of 5.<br />
** Hydra heads of the Warbird have their health and shots cut in half since each is "half" a Warbird.<br />
** Undid the cap nerf to the Cloaked starting fleet since this time around the cap nerfs are only to the Warbird Hydra which is absolutely deserving of the nerf.<br />
** Additionally went over and applied the same balance logic to the Ambush Carrier.<br />
** Thanks to CRCGamer for implementing!<br />
<br />
* Added a new setting for hacks: hacking_does_not_increase_difficulty_of_future_hacks_against_this_faction<br />
** This is now set to true for the ARS and DSS (but not the FRS or anything else).<br />
** When true, the overall response of a faction to being hacked does not increase from the hack in question.<br />
** Thanks to Democracy for reporting how crazy this made the late-game hacks.<br />
<br />
* The DSS has been split into two structures: the Turret Schematic Server and the Other Defensive Schematic Server.<br />
** The hacking costs of both are higher than what the DSS was in the prior build, as things were coming too cheaply to players, making the game pretty trivial.<br />
** However, the TSS is substantially more expensive than the ODSS, which makes it so that the other items are actually viable to get cost-wise.<br />
** The ODSS can also only be hacked twice.<br />
** Thanks to a variety of players for feedback on this topic.<br />
<br />
* Fixed a general bug in the game where the "did campaign start on at least this version" code was not working at all.<br />
** This made it so that things like showing the GCA basic tip was happening instead of showing the DSS/TSS tip.<br />
<br />
* The defensive_structure_cap_multiplier was set rather high, it turns out. So we're adjusting these across the board:<br />
** For those that were 0.33, they are now 0.25. (That's basically just the economic command station).<br />
** For those that were 0.66, they are now 0.48. (That's just the logi command station).<br />
** 0.7 to 0.5 (shieldwall battlestation)<br />
** 1 to 0.7 (most battlestations)<br />
** 2 to 1.33 (most citadels and mil stations)<br />
** Thanks to a variety of players for griping about how plentiful turrets were, but special thanks to Ozone Grif. This was partly due to turrets being too cheap in HaP in general, and partly due to them being too prolific in the first place.<br />
<br />
* The ship cap of all minefields has been doubled compared to what it was before (though, bear in mind, the other multipliers that are lower are still applied, so it comes out somewhere in the middle). We may need some further tuning to this.<br />
** Thanks to zeus and ArnaudB in particular on this.<br />
<br />
* If players intentionally pick the same two starting battlestations, the game now makes one of them something else at random.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Put in a fix that should cause planets that are "influenced" by a hostile faction (like those taken over by marauders) to still count as being hostile to you for purpose of hack costs.<br />
** Thanks to Eonfighter for reporting.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a cross-threading exception in removing invalid orders for ships.<br />
** Thanks to NullZwei for reporting.<br />
<br />
* When warden fleet members can't find a way to regroup and thus join the hunter fleet, it no longer logs messages to your debug log. These were silent, but cluttered things up and were there just as a preventative/testing measure.<br />
<br />
* Turned off some extra debugging that was left on when you were changing galaxy options during gameplay.<br />
<br />
* Put in some extra protections against null entries in GetFromPoolOrCreate() for entity orders. This is again a cross-threading thing.<br />
** Thanks to NullZwei for reporting.<br />
<br />
* A variety of our low-level pools now have prevention code in place for putting null data back into them. This could happen in certain cross-threading situations, and would yield random errors and memory usage problems.<br />
** Thanks to NullZwei for reporting.<br />
<br />
* Our internal TimeBasedPool class now uses ConcurrentBag<> internally, instead of Queue<>.<br />
** This allows for more flexibility with cross-threading, including hopefully fewer/no errors as well as more speed ideally.<br />
** This is heavily used by GameCommands and EntityOrders, so having this perform really well on a variety of threads at once is a pretty big deal. It has been doing a pretty solid job for a few years now, but some of the newer hex-core-and-better AMD CPUs in particular are reliably causing many more cross-threading issues these days.<br />
*** This is in no way a sleight against those AMD CPUs, incidentally; most likely it is happening because of their extra efficiency and speed allowing for subtle timing issues that were always there to come to light now that a new performance threshold has been hit. So we're just adapting to that.<br />
<br />
* Our internal LoosePool class now uses ConcurrentBag<> internally, instead of List<>.<br />
** This has all the same benefits of what we just di to TimeBasedPool, although this is probably going to affect less since the LoosePool is not used across threads nearly so much. But better safe than sorry with it.<br />
<br />
* Our internal ExternalizedPool class now uses ConcurrentBag<> internally, instead of Queue<>.<br />
** This has all the same benefits of what we just di to TimeBasedPool, although this is probably going to affect less since the LoosePool is not used across threads nearly so much. But better safe than sorry with it.<br />
<br />
* Fixed the expected release date on the DLC2 expansion from saying January to saying March.<br />
** Thanks to Mac for reporting.<br />
<br />
* Fixed some rare but possible bugs that could happen in ClearForReturningToPool().<br />
** Thanks to Kendrickorium for reporting.<br />
<br />
* Fixed a bug where any hacks that were supposed to complete more quickly on non-hostile planets would say they would, but then would count into the negative seconds remaining and take the normal amount of time.<br />
** Thanks to Ryulong and ArnaudB for reporting.<br />
<br />
=== Mod Updates ===<br />
<br />
* Updated Histiocytes to support the new galaxy settings options.<br />
<br />
* Adjusted the FRS version of the Artillery Cruiser in my More System Defenders mod to start at a higher mark level like the rest of the FRS options.<br />
<br />
* Updated the Supercharged Raiders mod by ArnaudB to work with the new cap limits.<br />
<br />
* Slotted the Laser Mine into the new proper sidebar build category. (More System Defenders)<br />
<br />
== Beta 2.740 The Big One ==<br />
(Released February 15th, 2021)<br />
<br />
=== New Hack! Transforming Fleet Leaders ===<br />
<br />
* Added a new FleetLeaderType xml class, which lets us define certain types of fleet leaders which can transform between one another.<br />
** Not all fleet leader types need to be defined or use this at all. For instance, at the moment golems and arks are completely absent from this because they stay what they are.<br />
** But for transpors, battlestations, and citadels we want to be able to have them convert from one to another and back and forth with a new hack.<br />
** With this in mind, anything that is going to be able to use that sort of hack needs to have a fleet_leader_type="Transport" (for example, with transports).<br />
*** Anything that has that type on it can be transformed AWAY to something else.<br />
**** So if you are a modder and you designed a citadel that must stay what it is, don't assign this fleet_leader_type="Citadel" to it or else it can be changed into another type.<br />
** Anything that has this type and that is a target that we can transform TO needs to have a hacking_cost_for_other_fleet_leaders_of_same_type_to_become_me set to greater than zero.<br />
*** For the things that we want to be able to transform FROM, but not TO (like there are actually seven or eight variants of basic transport), set this to 0. Out of the basic transports with identical stats, we only selected one to have a value greater than zero, so that you only see one entry for that type.<br />
*** For all the other types that are unique targets, being able to swap over to those types can have a cost that is built in based on however unique and valuable that specific type is.<br />
** Note also that the costs are relative within a category. The citadels are relatively cheap to change types on (for the moment) because they are already more rare and you already paid a lot for them. But transports are in your face from the start of the game, and upgrading one can be a big deal.<br />
** Ah! This is also really useful for the support factories. So those now have this ability, as well.<br />
** And, surprisingly, the Spire Lost Frigate is also a great candidate for this. Did you know there are actually three different forms of it?<br />
*** Now you can swap between the three forms for a really inexpensive amount of hacking points, which makes them all a lot more versatile!<br />
<br />
* Added a new button in the fleet management window, under where you would give science upgrades to a fleet. <br />
** This button only applies for fleets with fleet leaders that can be transformed, and it shows information about the range of hacking point costs it might cost to do that.<br />
** Once it's clicked, you can see details about the types that this ship would become, and actually become that type if the ship isn't crippled.<br />
** Thanks to a variety of folks for suggesting this in many forms over the years! Fluffiest, Ecthelon, CRCGamer, and definitely some others.<br />
<br />
* If a fleet leader transforms types, and that fleet leader's fleet has been upgraded, AND the amount that it costs to upgrade the old type of the fleet leader is different from the new type of the fleet leader (whew), then it will revert the upgrades on that fleet to 0 and refund you the science.<br />
** This prevents you from having a basic transport upgraded more cheaply, and then swapping it to the more-expensive-to-upgrade Cloaked Transport type and getting the higher mark level for free.<br />
** Thanks to NR SirLimbo for warning of this cheese.<br />
<br />
=== ARS Expansion And Overhaul ===<br />
<br />
* The reroll hack for ARSes has been removed. That sort of blind gambling for something good is something we want to avoid.<br />
<br />
* The base hacking cost of ARSes has moved from 7 to 4 (double on hostile worlds).<br />
** A single ARS can be hacked 3 times, now, rather than just once. The price increases by 1.5x each time that specific ARS is hacked.<br />
** At each stage, an ARS now gives 4 strikecraft and 2 frigate options rather than 4 strikecraft and 1 frigate option, and does a complete reroll of its contents after you make a choice.<br />
** This gives you more choices, but not EVERY choice, and once you have chosen the thing that best fits with your empire, you get a new slate of options.<br />
<br />
* Added a new response_strength_multiplier_per_time_hacked_same_target. We are now using this on the ARS to make it so that, as the cost increases for each of the 3 attacks you make on a single target, so too does the response in terms of enemies coming out of the structure.<br />
<br />
* Actually, the hacking intensity increase of the ARS is now 2.2x rather than 1.5x, which means that on the third time hacking a single ARS the enemy forces are truly terrifying. You definitely have to want it, when it comes to that third hack. It's possible that you will fail the hack because your hacker gets crippled, and you'll lose that last chance to get a new ship line. But it doesn't charge you hacking points in that case, it just destroys the ARS, so it's a disappointment but not save-scum worthy.<br />
<br />
=== Intra-Galactic Coordinators Removed ===<br />
<br />
* Intra-Galactic Coordinators have been removed from the game (though they remain in existing savegames).<br />
** These were funky and a bit fiddly, and there are now better ways of accomplishing more or less the same thing.<br />
** These were either going to be wildly unbalanced (turrets and frigates), or extremely redundant and not worth it (strikecraft).<br />
** It's nice to have a bit less chaff out there to sort through, particularly one with a confusing name, as your deciding how to approach your empire.<br />
<br />
=== Global Command Augmenter Out, Defense Schematic Server In ===<br />
<br />
* The Global Command Augmenter (GCA) has been sunsetted for new games. It's still in existing campaigns, but new campaigns no longer seed them and likely never will again. We have a better replacement!<br />
<br />
* The new Defense Schematic Server (DSS) has been added for the game, and is what seeds in place of GCAs in all new campaigns. It has the same icon and graphics, and uses basically the same seeding rules. However, these are owned by the AI (like an ARS) rather than being un-claimed neutral entities. These cannot be claimed, unlike a GCA.<br />
** The DSS would like to give you 6 turret lines to choose from when you hack it, and 6 "other defenses" lines. However, it will not give you more than 40% of the total options available to you based on the mods and DLC you have installed in the game for the turret category, and not more than 25% of those available in the other defenses category.<br />
** Unlike tha GCA, it also tries very hard to give you individual basic lines of turrets and defenses, rather than so commonly doubling up a line and giving you a 2x or 3x cap for a line. However, if there are very few turrets or defense types in your game, there is a chance that you might get lucky and get only a few options including some doubled ones.<br />
** Also unlike the GCA, the hacks from the GCA are NOT shared among all of the empires in multiplayer. The new lines are locked to the empire that hacked for them, and can never be traded or refunded or altered in much of any way.<br />
*** There are, however, far more options for how to granularly hack for each line of defensive structures, and they provide an even broader amount of power per empire, so there's still plenty to go around.<br />
<br />
* The "Global Command Augmentation Mulitplier" has been renamed to "Defensive Structure Cap Mulitplier."<br />
** The old commandstation_addedtocommandstation_multiplier xml tag has been removed, and now is called defensive_structure_cap_multiplier.<br />
*** Note! If you are a modder and you are creating new battlestations or citadels, normally this defaults to 1. If you want your structure to grant more or fewer turrets/etc, then you can set this to something like 0.5 to make it give half as much or 1.75 to give 175% as many, etc. You can ALSO set it to zero or less, and your battelstation or citadel will get no bonuses whatsoever.<br />
** Refresher on amounts for various structures:<br />
*** 2x on home command station, that seems fine.<br />
*** 0.5x on economic command station, that still seems high. Let's take that down to 0.33x.<br />
*** 1x on logistical command station, which again seems high. Given the insane usefulness of logi stations in general, let's set this at 0.66 instead.<br />
*** 2x on military command station, that seems fine.<br />
*** All of the battlestations are defaulting to 1x, and that's a good start.<br />
**** For the shield wall battlestation, let's have 0.75 to balance that one out a bit.<br />
*** For all the citadels, let's set this to 2x for now. Maybe some more nuance with some of them will be good at some point.<br />
** Thanks to tadrinth for the idea of applying this to things other than just command stations.<br />
<br />
* There is a second version of the DSS hack that is slightly cheaper in hacking points and which gives a triple-powerful amount of the chosen defensive line to just the hacker (which must be battlestation or citadel).<br />
** This is probably usually the inferior option to pick... except wow, this can be pretty crazy with citadels.<br />
** Thanks to tadrinth for the idea.<br />
<br />
* Added is_blocked_from_dss_grant_to_battelstations_and_citadels and is_blocked_from_dss_grant_to_commandstations, which, when set to true on a ship/structure type, will make it so that a DSS grant will not include them in the respective group. That way the DSS can provide some things for command stations only, or for battlestations/citadels only.<br />
** This will hopefully be used very sparingly, but it's handy in general as an option for certain high-value things.<br />
** When this is in use, it should show a message on the ship line that says where it won't be applied, right up at the top. This is not well tested yet.<br />
** Thanks to zeus for suggesting.<br />
<br />
==== Turret And Defenses ====<br />
<br />
* The turret counts on the starting battlestations are now a middle-ground between what they were previously and what they were last build.<br />
** Thanks to various players for giving input and suggestions on this, and to ArnaudB for making the changes.<br />
<br />
* The starting defensive fleets from the More Starting Options mod have been updated to also follow the new guidelines.<br />
** Thanks to CRCGamer for implementing that.<br />
<br />
==== Battlestations and Citadels ====<br />
<br />
* The speed of citadels has been increased from 300 to 600.<br />
** The "Speedy Citadels" save-safe mod has now been removed, since this is what it did.<br />
** Thanks to ArnaudB in particular, but also others, for suggesting.<br />
<br />
* The More Starting Options mod has been integrated into the main game itself (mostly as part of DLC1, but it varies).<br />
** Huge thanks to ArnaudB for creating this mod, and then also for allowing us to integrate this for everyone.<br />
<br />
* Added a new XmlModNamesToIgnoreNow table, which lets us basically ignore certain mods that used to exist but now are part of the game (or for other reasons).<br />
** This applies now to the "More Starting Options" mod, so that any games started with that mod on will still work, since it was not a save-safe mod (but still has content that exists in the game itself, so is safe-safe in that NEW way).<br />
<br />
* Players now get two battlestations at the start of the game, rather than just one!<br />
** The battlestations now default to Random, but the combat and support fleets continue to default to some basic easy types.<br />
** When at least one of your battlestations is set to random, then it ensures that the other one will not be set to a duplicate type of it.<br />
<br />
* Citadels now all cost 60 AIP to claim. These things are MAJOR power boosts for you, and being able to potentially even stack them on a planet is incredibly potent.<br />
** The cost of these should all always be the same to claim, since once you have one you can switch it to any other type.<br />
** 60 AIP may be judged to be too expensive in the end, but this is something we want to have as a rather extreme defensive option that gives you such high defensive bonuses that the AI just has to take notice. These things are in mamy ways more powerful than any Golem now.<br />
** Note that when viewing a citadel for capture, it will include all of the turrets and other defenses that are relevant based on your past DSS hacks.<br />
*** Worth noting that in multiplayer, this will look different for each player, which is fine. Gifting a citadel between player empires in multiplayer will also change the loadouts based on that.<br />
<br />
* The game no longer seeds any battlestations at all for you to capture. You start with two now right off the bat, and because of the new DSS mechanics they are each far more powerful.<br />
** If there's a need for more of the sort of thing that battlestations provide, then you should look for a citadel to fill that role.<br />
<br />
=== Other Hacking Updates ===<br />
<br />
* The way that rerolls work is now wholly deterministic, meaning that you can't keep reloading and trying again in order to get a new value.<br />
<br />
* When viewing the ARS tooltip for the ship, it now shows you how many hacks you have done on it out of how many times you can do it.<br />
** A bunch of other sidebar bits in the hacking menu also now show this information clearly and in the proper places.<br />
<br />
* In the event that you cancel a hack, it no longer destroys the target (or counts as a full hack attempt).<br />
** So for instance, if you decide to hack an ARS for one ship, and then change your mind, you can cancel the hack and just try again from the same list.<br />
<br />
* In the event that you fail a hack, it does the "counts as a hack attempt" full logic. So if you're about to fail, canceling will save you from that.<br />
<br />
* A new feature under the hood lets us require that a hacker be a battelstation (that also includes citadels).<br />
<br />
* Another new feature under the hood allows us to count the "number of completed hacks" against a target as being the number from any type of hack, not just a single hack type.<br />
** This is useful when there are multiple hacks that do a similar thing, and you want either option to count against a total that both have.<br />
<br />
* A bunch of other little hacking sub-features that you can see on the new hacks, frankly.<br />
<br />
==== Hacking Time/Intensity ====<br />
<br />
* The multiplier_to_global_hacking_times has been removed from AI difficulty.<br />
** This made hacks take longer on higher difficulties, giving the AI response more time to hit you.<br />
** This actually is interesting as well because it did not affect something like the superterminal at all, since that's an at-will hack that lasts as long as you want.<br />
** Overall this could lead to tedium with hacks on high difficulties, and the sole purpose was for extra difficulty.<br />
** Previously, for difficulties 5 and down it took 1x the normal amount of time, at difficulty 7 it was 1.5x, 8 1.6x, and 10 was 2x.<br />
<br />
* In place of that mechanic, we now have multiplier_to_global_hacking_event_intervals on the AI difficulty.<br />
** The overall length of time it takes to do a hack (say, 30 seconds) now stays the same. But the interval on which "things happen to you" is now multiplied by this number.<br />
** So, instead of having a longer, more drawn-out period on a high difficulty to get attacked by more enemies in response to your hack, you just get a (potentially much) more vigorous reponse in the original timespan.<br />
** We are actually making difficulties 1-4 easier by making difficulty 1 have an interval multiplier of 2, and then on down to a mult of 1 for diff 5.<br />
*** Diff 6 is 0.8 now, diff 7 is 0.7, diff 8 is 0.6, diff 9 is 0.5, and diff 10 is 0.4. That's going to be nightmarishly hard, but hopefully survivable. We can tune as needed, but at any rate folks shouldn't be bored waiting for a hack to finish!<br />
** Thanks to ArnaudB for suggesting that the timeframes not be increased on hacks on higher difficulties, since that does get boring.<br />
<br />
* Note to modders: if you were previously coding some hacks and directly used PrimaryHackResponseInterval, SecondaryHackResponseInterval, TertiaryHackResponseInterval, or BaseHackDuration, you now have to use the getter methods instead, which handle all this logic for you.<br />
<br />
* If you have gone to the trouble of capturing an AI world (or at least it no longer belongs to an enemy), then some hacks will also go faster now on that world, which also means that the overall AI response from them are substantially weaker.<br />
** The ARS and FRS hacks are the first to have this, and just like they cost half as much HaP to do on non-hostile worlds, they now also go twice as fast. Getting a third hack out of an ARS is a lot easier on a world not controlled by the enemy, since they intensity of the ships coming out of the ARS won't have nearly as much time to ramp up.<br />
<br />
=== Basic Transports ===<br />
<br />
* The Agile Transport now has 85% of the health of a normal transport, rather than 50% of the health of a normal transport.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* The ability to build custom fleets from the build sidebar, which was something very few people did (and it was generally for purposes of cheese), has been removed.<br />
<br />
* For regular transports (the most boring kind), if they sit around on a planet for 5 minutes without being crippled or leaving, they will start giving a 10% bonus (that stacks!) to any player-based metal and energy production happening at that planet.<br />
** For the awesome cloaked transports, they do not get this bonus at all.<br />
** For the agile transports, they provide only a 4% bonus.<br />
** Why have this? Well, sometimes you have extra transports sitting around, based on how you've organized your fleet, and it seems like they ought to be good for something. Rather than being an annoyance you want to delete, what if they were instead a commodity well worth protecting? So here we are.<br />
** Note that none of the officer fleets, or the combat factories or whatever else, provide this sort of bonus. They already have things to do. But this is now a mechanic that can be used in new ways in the future if we want to.<br />
** Thanks to Badger for inspiring this idea.<br />
<br />
* New ship: High Capacity Transport Flagship<br />
** Upgraded version of the basic transport which can double the ship cap of up to three strikecraft lines contained within it.<br />
** This cannot be found anywhere by chance, but for 60 HaP you can switch one of your transports over to this type at any point, even right at the start of the game.<br />
** Why take time out to add this in right at this particular juncture? Well, the FRS mechanics already encourage having some smaller fleets, but the bonuses from idle basic transports encourage giant blobs. This is another argument in favor of small fleets.<br />
*** Honestly we're fine with however people want to play, so long as there isn't one overwhelmingly obvious "best" way to play. At the moment, the best choice is probably an interesting mix of large and small fleets for different purposes.<br />
** Thanks to zeus for suggesting this new ability and new transport type!<br />
<br />
=== UI And QoL Improvements ===<br />
<br />
* Added a new Sidebar subsection to the Display section of settings.<br />
<br />
* Added a new setting to that subsection (defaults to off): Build Menu By Unit Type Before Fleet Type<br />
** Normally the game sorts the build sidebar by fleet type, then fleet, then by unit type. Enable this if you would prefer it sort by unit type first (aka grouping all turrets of a specific sort together).<br />
** Note: this is flipping the old default behavior, which was unit-type first.<br />
** Thanks to tadrinth for suggesting.<br />
<br />
* It is now possible to select "Random" for all of the starting fleet types (combat, battlestation, and support).<br />
** Thanks to cml and others for suggesting.<br />
<br />
* Fixed a minor issue where on player home planets it was likely for a few types of the structures to be seeded on top of one another. They now try hard not to do that.<br />
<br />
* Ships that produce metal or energy now properly include whatever bonuses they have from their local planet in what they show in their tooltip. Previously, that was not shown for any of the various kinds of bonuses that can cause this.<br />
<br />
* The way that the fleet-wide bonuses are calculated is now based on JUST the ship line counts that are non-flagship style.<br />
** This is more what people were expecting anyhow, and with the ability to switch flagship types we were running into some trouble.<br />
** With that in mind, all of the FRS ships have had their lines lowered by 1<br />
<br />
* Made a couple of minor adjustments that makes it so that ships move a bit more directly between positions, potentially when they are coming to a stop (easing into place less, and more just doing a hard stop).<br />
** There's a chance that on certain machines this may cause a bit of visual jitter as ships move. If that happens, we'll walk this back or make it optional. But for now this seems to make ship movement on 1x speed more smooth. If you play on a simulation speed of 1.5x or 2x or higher, the movement is incredibly smooth, and we'd like that for folks that play on the slower (aka normal) speeds.<br />
<br />
* Hacking a superterminal previously just filled the chat log with spam of the AIP reductions. We now are only reducing AIP every 3 seconds instead, and thus having 1/3 as many messages.<br />
** We also are now putting a timestamp next to every AIP change message in general, so that when there are multiple in a long cycling run like this you can tell something is happening.<br />
<br />
* The hacking section of the 'how to play' section has gotten a major overhaul, with a lot of more up to date information in there (from the new beta builds) as well as with a big lore dump explanation on what hacking points even are.<br />
** Thanks to Leif for asking about this.<br />
<br />
* The vicious raider AI type has been updated to note its wave budget bonus in its description.<br />
** Thanks to ArnaudB for inspiring this change.<br />
<br />
* Various player tips and journal entries that talk about GCAs still work for older savegames, while newer savegames it advises about DSSes instead.<br />
<br />
* A few places have recently referred to the player as "Admiral." These have been corrected to now refer to the player as "Commander," as is the case in all prior direct addresses.<br />
<br />
* Updated the "about science points" section of the retrieve science screen to no longer refer to the removed ability to hack to gain science from neutral planets.<br />
<br />
=== Balance Adjustments ===<br />
<br />
* Players now start with 100 hacking points, rather than zero. This is for much the same reason that they start with 15,000 science: let's get the game started, and let them make some interesting decisions right away.<br />
<br />
* Revised Warbird Frigate balance:<br />
** Roughly 15% hull and shields cut. Also carries over to the Ripper and Hydra variant of the Warbird.<br />
** Paralysis duration on shots lowered from 4 to 3 seconds.<br />
** Shots per volley reduced from 16 to 10 but gains 1 extra shot per mark level to the full 16 again at mark 7.<br />
** Additionally ship cap reduced from 6 to 5 in most fleets and then additionally adjusted the cap from 6 to 5 in the cloaked starting fleet as well.<br />
** Thanks to Mac for raising the issue of how OP these are, and to CRCGamer for crunching the numbers and making the changes.<br />
<br />
*Outguard updates<br />
** Updated Outguard to be "Expatriate" -- changed preexisting hull tech accordingly. <br />
** Also, buff to "outguard (merc) flagship stats, as this was always a mediocre flagship at best.<br />
** Thanks to zeus for updating for us!<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a general bug where if flagships ever transformed, they would form a whole new fleet instead.<br />
<br />
* Maybe made the Miffed and Angry achievements less likely to trip erroneously.<br />
** Thanks to Mac for reporting.<br />
<br />
* Fixed weapons with restrictions based on whether or not the target must be mobile or must be static (i.e. the Botnet Golem) being able to circumvent the attack restrictions if the player orders so.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Put in 2 more restrictions for weapons to ignore targets:<br />
** If the target is invulnerable by any means, skip it.<br />
** If any damage modifier has a multiplier of 0 (artificially used to NOT make something attackable) and that multiplier applies, skip it.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Fixed a bug in the weapon attack-ignore code that was leading to not attacking any unit as long as any other unit was providing invulnerability, even though the first unit should've been vulnerable already (i.e. with AI Eyes).<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Fixed an issue where if you had multiple local IP addresses and view the networking tab, it could cause an endless string of errors.<br />
** Thanks to athros for reporting.<br />
<br />
* Several static working lists on the Fleet object have been made ThreadStatic, so that if they are used by multiple threads they will not clash or cause any problems.<br />
** We had several reports of strange errors, thanks to Leif and Rifi for reporting.<br />
<br />
* Fixed a bug where player melee ships were often going back to the same point over and over again when there were no enemies present, leading to what seemed like an instant dance. <br />
** This will mean that melee ships get caught out of position more after a fight, but that's fine.<br />
<br />
* Fixed a bug in the prior version that was causing the Subvert Superterminal hack to show up as blank, and then throw errors if you hovered over it.<br />
** Thanks to Edicitsep and poljik2 for reporting.<br />
<br />
* Fixed the reprogram hack cost of OMDs to be 24 instead of 5.<br />
** Thanks to tadrinth and CRCGamer for reporting.<br />
<br />
* Fixed an issue in the hacking log where it was not showing the ship type you had hacked for properly.<br />
<br />
* Fixed an issue where certain hacking errors just silently went to the log rather than popping up and showing you the error visibly.<br />
<br />
* Removed the reinforcement point tag from the AI Plasma Eye to match the AI Ion Eye. The reasoning behind eyes not being reinforcement points still applies because of garrisoned units disappearing if still attached when the eye swaps to an alerted version.<br />
** Thanks to CRCGamer for catching and fixing!<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed Drones from the AMU_DroneBase... Not actually being drones.<br />
*** As they now count as Strike Craft adjusted the health and damage values from the Drones within Extended Ship Variants to compensate.<br />
** Fixed and ajdusted all manner of things related to hacking that broke through the recent changes in Vanilla AIW2.<br />
** Hacks that are done by Battlestations or Citadels will now, if but one is selected, honor that selection or if none are selected will use the closest one as the actual hacker again.<br />
** Hacks that are done by Battlestations or Citadels will now display the current actual hacker if any are found.<br />
** Hack Text Snippets, as they rarely change, have been made much more efficient for the Garbage Collector, hopefully improving performance a bit.<br />
** Shifted the additional shot speeds from Kaizers Marauders to AMU, and added one more EXTREMELY slow shot speed type.<br />
<br />
* Kaizers Marauders:<br />
** Hopefully put in a fix for an error in GetDangerOfPathAndTargetIgnoreNegligible(). If not, next time it appears there will be more debug data.<br />
*** Thanks to Leif for reporting.<br />
** Fixed the broken hacks.<br />
<br />
* Micro Mod Collection:<br />
** Tripled the amount of Hacking Points in Distribution Nodes in light of the recent HaP "inflation" as Vanilla DNs now grant much more too, added to that the starter Hacking Points.<br />
<br />
* Extended Ship Variants:<br />
** As the Vanguard is now a vastly better ship due to damage amplification the Vex Guard was a bit overpowered. Reduced its damage amplification to 5 (down from inherited 30).<br />
** All the transport and mobile factory variants can now be transformed into each other.<br />
** As the Agile variant has been buffed in Vanilla in return the radar dampening effect that ESV granted to it has been removed. It does retain the speed buff on entering a new planet, and the 21gx engine power.<br />
** Reduced the strength (and thus threat level) of the Target Painter variant by 20% as enemies were targeting it a bit too often.<br />
** Shortened the name of the Vanilla Rejuvinator support starter fleet so it doesn't have to break line any more once (due to the multitude of ESV support starter fleets) the scroll bar appears.<br />
<br />
* Extended Ship Variants:<br />
** Implemented the "resource-bonus-if-idle" mechanic for the modded transport centerpieces:<br />
*** The Engineering Transport has an improved bonus (15%) and gets it sooner (after 4 minutes).<br />
*** The Tugboat Transport only gets the same 4% bonus that the Agile Transport has.<br />
*** All other transports have no bonus.<br />
<br />
* Extended Ship Variants:<br />
** Converted the Tugboat Drones into Drone Projectiles and made the Tugboat Transport Flagship launch them.<br />
*** This was necessary due to the swap-centerpiece mechanic, as it was causing the original fleet to get "lost" without a flagship, literally costing the player the entire fleet.<br />
*** This is only a temporary solution, as this "cheats" the player out of the buff when no Tugboat Drones have been present since loading the game. 90% of the time that won't be a problem, but it still is inconsistent.<br />
<br />
* AMU + Extended Ship Variants:<br />
** Created a simple Executor Fake Faction-script in AMU that only activates itself if Extended Ship Variants is installed.<br />
** It will scan through all player-owned fleets with a Tugboat Transport as flagship and, if it doesn't have a fleet membership group for the Tugboat Drones, will add one.<br />
** Thus, at worst 1 second after unpausing the Tugboat Transports will gain their previous speed boost of 700 for all ships in it.<br />
** Inversely the script will remove the fleet membership if no more Tugboat Drones are alive AND the flagship is any other than a Tugboat Transport, thus also removing the speed buff.<br />
<br />
* Updated AIShieldGenerators mod to work with the hacking time/intensity changes in Beta 2.735<br />
<br />
* More System Defenders 1.22 - FRS Revision & Ark Hacks (by CRCGamer)<br />
** Most recent changes:<br />
** Revisions to the Augmented Artillery Cruiser available in FRS<br />
*** Cap reduced from 3 to 2<br />
*** Shield bonus boosted from 1.25x to 1.5x<br />
*** Boost only works with 5 lines or less<br />
*** AIP cost reduced from 30 to 10<br />
** Stormfront Ark given the same self-hacks for shield boosts as various vanilla ark choices<br />
<br />
== Beta 2.734 Bugfixes ==<br />
(Released February 12th, 2021)<br />
<br />
* The AI Shield Generators mod by cml has been updated to work with the new hacking mechanics.<br />
** Thanks, cml!<br />
<br />
* The way the fleet bonus limits are written is now more brief, and if they are hit the entire fleet bonus text is shown in a different color. It's way easier to see what's going on at a glance.<br />
<br />
* Fixed a bug in the prior version that was causing fleet-wide limits to sometimes not work because it thought it had more ship lines than it really did.<br />
** This may not have affected any players, but it affects the player potluck cheat, and could in theory affect some real fleet someday.<br />
<br />
* Fixed a bug with the fleet-wide limiters in the prior beta build, where it would only turn on if you had exactly the number you were supposed to or MORE.<br />
** This was backwards from what the UI actually told you, for extra confusion.<br />
<br />
* Fixed a bug with some of the caching of hull and shield values (for performance reasons) that often caused various things like FRS ships and hull/shield hacks to not apply properly to ships in various circumstances.<br />
** Thanks to CRCGamer for reporting the hack-related side of these.<br />
<br />
* The FRS fleet-wide bonus for move speed does NOT apply to the flagship, and that was both working correctly and also stated correctly on the interface.<br />
** However, the other fleet-wide bonuses (shields, hull, attack power) DO apply to the flagship, and the interface was reporting that incorrectly. On those it now explicitly says that they work with flagships.<br />
** Thanks to Jordan K for reporting the inconsistency.<br />
<br />
* Turbo Raiders now work on any fleet with 6 or fewer ship lines, since flagships are counted in the total line count, but this is the one kind of bonus that doesn't actually help flagships.<br />
** Thanks to ArnaudB for inspiring this change.<br />
<br />
* Fixed an issue with the EarlyOfficers where we were seeding one per human empire rather than 1 overall.<br />
** Also fixed a bug where extra officer fleets in general (not just the early sort) could seed because of some random noise from things above them. On a standard single-player game, you should have about 4 on the map.<br />
** Thanks to CRCGamer and ArnaudB for reporting.<br />
<br />
* Fixed a bug that could happen when you did a hack from a pop-out window, and then exited to the main menu and re-entered to do any other hack from a popout menu.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed an issue in the last couple of versions that could lead to an infinite loop of "multiple hackers present" messages when you opened the hacking sub--menu for certain hacks.<br />
** Thanks to Strategic Sage, Firewoven, and Leif for reporting.<br />
<br />
* The starting defensive fleets were indeed a bit over-tuned and have now been nerfed.<br />
** In the starting fleet, for instance, you mostly got about 60 of things that you got 30 of in the actual command station, and 30 of things you would get 15 or 16 of elsewhere. We've toned this down to half values.<br />
*** Similarly, you had 30 tractor beams rather than something more normal like 15.<br />
** In the fleets with minefields, we also cut those numbers in half, because 70 was way too many -- 45 seems better in most cases.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Fixed another issue that was causing turret counts to be drawn 5x too high when viewed in places like the lobby and looking at a starting fleet. Essentially some code that was in several places needed to be moved to a central consistent place.<br />
** Thanks to ArnaudB and Daw11 for reporting.<br />
<br />
* One last fix to misleading tooltips, with GCAs reporting about 5x more turrets than they were actually going to grant you. Now they actually give you the proper numbers on things.<br />
** Thanks to CRCGamer and Lictuel for reporting.<br />
<br />
== Beta 2.733 Arks, Reprogramming, And FRS ==<br />
(Released February 11th, 2021)<br />
<br />
* In general, passive attrition from ships is now boosted by boost hacks against their ship, as well as from fleet-wide bonuses.<br />
** Previously, neither of those boosted attrition.<br />
<br />
* Attrition is now better color-coded in tooltips, and it now only shows the full explanation if you are on the full tooltip. Instead it just shows a more concise "ATTRITIONER: Amount/s" for lower-detail tooltips.<br />
<br />
* Fixed a minor issue in tooltips where the DPS per weapon was not shown with commas, making large numbers harder to read than they should have been.<br />
<br />
* Updated the scouting tutorial to mention spy units and how those work, since that's relevant.<br />
** Thanks to Puffin for reminding us.<br />
<br />
* If the mark level of a drone would naturally drop to be lower than the centerpiece of its fleet, then it now marks up to match the centerpiece of its fleet.<br />
** This is similar to how it worked in the past.<br />
<br />
* Under the hood, there is a new CustomBaseMark on units, which can be set to a value at some time. Their mark level will then not drop below that.<br />
** For units that are reprogrammed, we now set this, so that you get the mark level of whatever the unit was when you captured it (it can still go higher based on techs, but it won't go lower).<br />
** Additionally, for ships fired from a drone-gun, they will now use this for the mark level of the firing ship (for example, makeshift turrets). This keeps behavior how it used to be prior to the new tech respec code.<br />
** Thanks to DEMOCRACY_DEMOCRACY for reporting.<br />
<br />
* The achievement "FOR SCIENCE!" used to be related to hacking ARS or TVs to convert them into science, but that's no longer a thing.<br />
** Now it is: "Retrieve spent science so that you can re-spec part of your fleet in response to a changing situation."<br />
<br />
* On the galaxy map filters, a few quality of life adjustments:<br />
** Normal is now shown with a golden text color, and is at the very top of the list, so you can easily scroll to it.<br />
** Deepstrike Danger and Threat are both shown in purple, as they are both unusually useful as well as being about dangers.<br />
** Strength and Spy Network are both shown in blue, as they are also unusually useful and about reading the topography of the map.<br />
** Capturables are shown in light green, as they are very useful and one of the things that is most goal-oriented.<br />
** Thanks to gaz and themouthofsauron for suggestions in this area.<br />
<br />
* Fixed some exceptions that could happen because of cross-threading in EmitOnAOEParticles.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Silenced a couple of knockback errors that were harmless but that could happen in particular in multiplayer (but also in single-player) if things died in just the wrong order.<br />
** Thanks to Tydorius for reporting.<br />
<br />
=== Hacking Updates ===<br />
<br />
* The "Double Ship Line Cap" hack now only works on "basic strikecraft" ship lines, which means nothing that starts at a mark level higher than 1. The tooltip explains this, now.<br />
<br />
* The sabotage hack now gets 1.25x more expensive to use for each mark level above 4 of a target.<br />
** So if something costs 10 to hack at mark 4 and down, at mark 5 it will cost 12.5. At mark 6 it will cost 15.6, and at mark 7 it will cost 19.5.<br />
** This keeps the bulk of the galaxy in one similar cost spectrum, but then for the really intense planets does make those more costly to do.<br />
<br />
* In multiplayer, hacks that increase in cost for every attempt now use the hacking history of all players, not just whoever is doing the hack.<br />
** Also new? If you failed the hack, it now doesn't count that against you, even in single-player.<br />
** Thanks to Arides for reporting.<br />
<br />
* The maximum amount of time a subvert-superterminal hack can last is now capped at 20 in-game minutes.<br />
** It seems like it was maybe capped at 3 in-game minutes before, but it's hard to tell from the code. It was supposed to be indefinite.<br />
** Our goal was for people to be able to push it for as long as they can hold out, though, so unless this winds up being unbalanced this might be better. Feedback welcome.<br />
<br />
* Fully fixed it up so that now if you are unable to do a hack in general, but it has a pop-out for sub-options, you can still get the sub-options and see their details while at the same time seeing why the hack is invalid on each one.<br />
** This is most common when you don't actually have a hacker present, but this makes it so that you can easily peruse distant planets and look at the various options inside for instance an ARS or whatever.<br />
<br />
* Fixed a number of places where the number of ships you will be getting was misrepresented -- either too high or too low.<br />
** There was an ApplyFleetCapMultiplier() that has been removed, as it was redundant with the newer GetResultingCapFromSquadCapMultiplierList().<br />
** In places where both were used, it was reporting too high. In places where just the former, it was showing too low and now uses the latter.<br />
<br />
* Both the FRS and ARS now show the total strength of the lines that you would be getting in their options area.<br />
** They also show the mark level as a roman numeral and a color and not just a color alone. This is a lot more clear at a glance for this screen.<br />
<br />
* A large number of hacks just said "Grant Ship Line," which was vague and annoying, particularly when there were a lot of structures of the same sort on a planet.<br />
** The FRS now says "Steal Experimental Ship Line" and has a much more specific and informative description.<br />
** The ARS now says "Steal AI Ship Line" and has more lore flavor in its description.<br />
** Others will be coming soon in terms of having better names and descriptions.<br />
<br />
==== New Hacks ====<br />
<br />
* Two new hacks!<br />
** Increase Shields<br />
*** Increase the shield durability for one of your units at this planet (works for both personal shields an bubble forcefields).<br />
*** In terms of the interface and so on, works just like Increase Hull Health.<br />
** Increase Weapon Power<br />
*** Increase the attack power for all weapons on one of your units at this planet.<br />
*** In terms of the interface and so on, works just like Increase Hull Health.<br />
<br />
* Most (but not all) Arks now have the Increase Shields hack, similar to how all the golems that players can capture have the Increase Hull Durability hack.<br />
** Rorqual Hegira: cost 40 HaP, can do 1 time, gives 1.5x boost to the bubble forcefield.<br />
** Gyrn, the Voidhome: cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
** Orchid: cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
** Ark One: cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
** Great A'Thomek (DLC1): cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
** Sol Ater (DLC1): cost 20 HaP, can do 2 times at increasing cost, gives 2x boost to personal shields.<br />
<br />
* The remaining Arks now have the Increase Weapon Power hack, since that's better suited for them.<br />
** Thanatos: cost 24 HaP, can do 2 times at increasing cost, gives 2x boost to attack from all weapons.<br />
** Belle Prime (DLC1): cost 24 HaP, can do 2 times at increasing cost, gives 2x boost to attack from all weapons.<br />
** Nodorian Tortoid (DLC1): cost 24 HaP, can do 2 times at increasing cost, gives 2x boost to attack from all weapons AND the passive attrition damage.<br />
** Grand Salvage (DLC1): cost 24 HaP, can do 2 times at increasing cost, gives 2x boost to attack from all weapons.<br />
<br />
* New hack! Reprogram An Enemy<br />
** Hack into and turn one of a few enemy structures on this planet to become yours! Not many enemy units are vulnerable to capture in this way, but there are a few. If the structure would normally increase AI Progress on death, capturing it this way does not cause that increase. Hack runs very quickly, due to the likelihood that the target is trying to kill your hacker.<br />
** This works much like the sabotage hack in terms of how you select targets and all that sort of thing, but instead of destroying them you get to keep them.<br />
** Both ion cannons and mass drivers are the first ones to now support this.<br />
*** They now have proper costs that rise as their mark levels go up, and you can hack even mark 7 ones, unlike before (it's just bloody expensive).<br />
<br />
* AI Fortresses and Superfortresses can now both be reprogrammed (and the latter can also be sabotaged).<br />
** However, they are ludicrously expensive to do that with, so it may not be something you really do much.<br />
** These may need some metal/energy cost balance. Feedback welcome.<br />
<br />
* Magnifiers can also now be reprogrammed, for a more middling cost.<br />
** So can Black Hole Machines, for an even more reasonable cost.<br />
** These may need some metal/energy cost balance. Feedback welcome.<br />
<br />
==== Removed Hacks ====<br />
<br />
* The generically-named "Hack Ion Cannon" and "Hack Mass Driver" hacks have been retired.<br />
** They both took over all of the ships of a certain sort of their respective planets, but only up to mark 6 planets, and the whole thing was a bit janky. Let's make the whole thing more robust and able to be used with other kinds of units, too.<br />
** See above for the better replacement version.<br />
<br />
* The hack to convert an ARS to science has been removed.<br />
** This is another of those cases of the battle between what you design and what you "play it as you find it."<br />
<br />
* The "Neutral Planet Science Extraction" hack has been removed.<br />
** The only reason to use this was to avoid aggro'ing neighboring enemies. But... well, please do meet the neighbors if you want to mine the planet for science and hacking points!<br />
<br />
* The "Covert Science Extraction" hack has also been removed.<br />
** This is something that was just a straight up trade of hacking points for science points, while avoiding an AIP increase.<br />
** This is a bad combo with things like the new more powerful distribution nodes, and leads to some strange incentives when there.<br />
<br />
==== Technical Details ====<br />
<br />
* In general, the way that the code for how the costs for hacks work has been completely redone. It was super confusing before, and may have had some errors.<br />
** One thing that was happening for sure is that the "Weaken Turrets" hack was not actually charging you more for higher-level planets, for example.<br />
** Hacks in general were also charging you the full amount if you canceled them, for some reason.<br />
** If you canceled a hack, it also said you spent hacking points that you did not (in the log). Except for those times where it 100% did charge you for nothing.<br />
** It appears you may have been double-charged sometimes, or also got a result for free at other times. What a mess. All clean now.<br />
*** Why was this such a mess? Well, it was the work of about 6 programmers over 5 years, with about 10 different ways of doing things.<br />
<br />
* Added a new "Invincible Ohmu" ship.<br />
** Literally invincible crazy-firepower ship that is only brought into the game via cheats. Great for testing hacks, since it can't be killed.<br />
** Spawn it with the cheat "cmd:ohmu" (this is now in the wiki cheats page).<br />
<br />
=== Balance Updates ===<br />
<br />
* Updated the Human Resistance Fighters so that you get 3-4 frigates per hack from them, rather than just one. They were way too weak with just one, and not a good deal for hacking points.<br />
** Thanks to CRCGamer for finding and also fixing!<br />
<br />
* Updated the frigates on the starting fleet from 4 to 6 for mugger and sniper frigates (it didn't make sense anymore that they had that low count.)<br />
** Also fixed the description of Consumer starting fleet<br />
** Thanks to ArnaudB for finding and fixing!<br />
<br />
==== FRS Rebalance ====<br />
<br />
* Major rebalance to the ships you can hack for from the FRS!<br />
** For a long time, many of them have been either too expensive to be useful (in terms of AIP costs), or have been too useful to pass up (because they benefit an entire giant fleet of 40 ship lines).<br />
** We want these to always be useful and exciting, and to encourage different styles of play. So, with that in mind, the general changes:<br />
*** First, these will cost a lot less AIP, so that they are actually viable to take even on lower-AIP games.<br />
*** Second, these will start at a high mark level (like the experimental fabricators in AIWC), so you can choose to just use them as an exciting high-mark combat fleet line.<br />
*** Third, if they have a fleet-wide bonus (a fleet supercharge ability), then that will only apply to fleets with a smaller number of lines, now. So if you want a small buffed strike force, you can create that, but you can't just throw these in a giant blob fleet and still get the effect.<br />
** The descriptions for all of the ships that are possible also now give recommendations for how to use these to maximum effect.<br />
** The specific changes are:<br />
*** Turbo Raider:<br />
**** Starts at mk5, only supercharges fleets with 5 or fewer lines, only costs 20 AIP instead of 40.<br />
*** Ultima Fusion Bomber:<br />
**** Starts at mk5, only supercharges fleets with 5 or fewer lines, only costs 10 AIP instead of 80.<br />
*** Ireful MLRS Corvette:<br />
**** Starts at mk6, only supercharges fleets with 7 or fewer lines, only costs 10 AIP instead of 30. Notably awesome with officers and frigates.<br />
*** Tutelar Pulsar Tank:<br />
**** Starts at mk5, only supercharges fleets with 4 or fewer lines, only costs 15 AIP instead of 40. Now gives a hull bonus of 2.5x instead of 1.5x. Notably incredible with officers.<br />
*** Encircling Spider:<br />
**** Starts at mk6, only supercharges fleets with 5 or fewer lines, only costs 12 AIP instead of 50. Notably awesome with officers and frigates.<br />
*** Inciting Parasite:<br />
**** Starts at mk6, only supercharges fleets with 6 or fewer lines, only costs 16 AIP instead of 60.<br />
<br />
* The hack to re-roll FRS contents has been removed. You still just get two choices with them.<br />
** These are specialty high-powered ships, and you get what you get. If you don't want what is there, then skip the FRS.<br />
** Overall we are working on removing most of the "re-roll" mechanisms, since those are gamble-y and don't feel great to use. Instead giving you more options (as appropriate -- unlike here in the case of FRS), and/or the ability to just skip things.<br />
<br />
* FRS hacking balance updates:<br />
** The FRS now costs 10 HaP instead of 15, and has a response to the hack that is 3x stronger than an ARS.<br />
** Additionally, if the FRS is in territory that is hostile to you, then the hacking cost is doubled (so in an old-style typical fashion, the cost is now 20, but if you take the planet it's now 10).<br />
** The FRS ships had absolutely INSANE quantities (like almost 400 turbo raiders). This has been toned down substantially, to more like a third or so of what it was. That was way overkill.<br />
<br />
* ARS hacking balance updates:<br />
** The ARS now costs 7 HaP on non-hostile planets, rather than 15, and 14 on hostile planets.<br />
<br />
== Beta 2.732 Recon, Golem Buffs, And Sabotage ==<br />
(Released February 10th, 2021)<br />
<br />
* The ranges of turrets no longer increase with mark level for human players. This messes with placement in several ways, doesn't work well with re-speccing science down, and in general adds very little for most players while adding some substantial headache for a subset of empire designer players.<br />
** However, all of the human turrets are now (from mark 1 on) at 1.3x of whatever their old mark 1 levels were.<br />
** Thanks to Strategic Sage, tadrinth, zeus, and ArnaudB for the discussion that led to this.<br />
<br />
* Fixed a tooltip bug where the RECON hops watched by command stations was not actually showing for player units (that includes fallen spire stuff, too). Now that's properly shown for player units.<br />
** This certainly made it difficult to know that there was a benefit of this sort from logistical command stations (and now military as well!).<br />
<br />
* Fixed an issue in the prior build where if you opened the in-game galaxy options without first opening the lobby galaxy options, you'd get endless errors until you closed that screen.<br />
** Thanks to Eonfighter for reporting.<br />
<br />
* Distribution nodes now grant 80 HaP instead of 20, making them WAY more valuable.<br />
** Depending on how much you start doing with hacking, these may be some MVP targets now.<br />
<br />
* The cheat for metal can now be done without an argument for how much, and it then gives you 10 million metal instead.<br />
<br />
=== Hacking Updates ===<br />
<br />
* The "Watch Planet" hack now costs 5 HaP instead of 10 HaP.<br />
** This is something that is devalued a lot when you consider the addition of spies in the last build, so this is mostly for more distant targets.<br />
** This hack's description now talks about the alternatives of recon abilities from logistical and military command stations, as well as spies, so that when someone sees this hack they have a good sense of what they can do with it.<br />
<br />
* Added a new hack_completes_instantly="true" xml feature for various hacks to make them complete instantly, even when the game is paused, rather than them taking even one second.<br />
** This skips any sort of AI responses that there would be to a hack, too, so it's mainly for things that already had not response.<br />
** This is now used for the various scouting/exploration hacks, and will be used for some other upcoming hacks.<br />
** This makes the exploration hacks way more responsive-feeling, particularly when the game is paused and you want to examine things without unpausing and re-pausing over and over again.<br />
<br />
* When you are in the middle of a hack and your target dies or hacker gets crippled or whatever, it now notes that the hack failed in a chat message.<br />
<br />
* If a hack fails or is canceled, it now shows up in a much better way in the hacking history, making it a lot more clear in failure states in particular.<br />
<br />
* When hacks finish successfully, it now gives a message in a consistent way, after it has probably already given a message about more detailed results.<br />
<br />
* Even if you can't do a hack, it now lets you actually see into the list of options when you click the hack button.<br />
<br />
* For instant hacks, if they require a hacker is present, they no longer care which hacker it is. That never matters, unlike hacks against structures that are done over time.<br />
** This reduces some interface fiddliness with hacking your own units to upgrade them in various ways.<br />
<br />
=== New Hacks ===<br />
<br />
* New hack!<br />
** You can now hack your own logistical command stations to increase their recon range by +2 for a cost of 60 HaP.<br />
** You can do this a second time for a cost of 150 to make them incredibly all-seeing.<br />
** This actually can scout planets for you, if the things in the new recon range are not scouted yet. This is super duper powerful... but also expensive in HaP.<br />
<br />
* New hack!<br />
** You can now hack your own military command stations to increase their recon range by +1 for a cost of 40 HaP.<br />
** You can do that up to 3 times, for an added cost of 1.5x each time.<br />
** This is using the exact same hack as the logistical command station, but using all the new hacking tools to make it so that it is custom per unit!<br />
<br />
* New hack! It is now possible to increase the hull durability of certain ships by hacking them.<br />
** At the moment, this is a feature mainly for golems. This gives them far more durability than before (on average about 2x), for on average around 20 hacking points.<br />
** This makes the golems feel a lot more like the golems in AI War Classic, but it's a costly investment to do so. You can hack them multiple times and really crank it up, but this gets even more super expensive.<br />
<br />
=== Updated Hacks ===<br />
<br />
* The sabotage hack now allows us to have a varied cost depending on what you are hacking. Normally the cost is 11 HaP for most targets (down from 15 previously).<br />
** Troop Accelerators are only 7 HaP.<br />
** Black Hole Machines, Alarm Posts, Magnifiers, and Raid Engines are 16 HaP (hey, you're dodging 5 AIP from them).<br />
*** But the ones from the Zenith Trader are only 7 HaP now.<br />
** Scourge Fortresses are all now 18 HaP.<br />
** The AI Spire Fortress is now 19 HaP.<br />
** Wormhole Borer is now 25.<br />
** In general, there may be some new targets that folks want us to add for sabotage. Things that were previously not worth it (need low HaP to be worth it) or too powerful (need higher HaP to not make sabotage way too effective).<br />
** You can ALSO now sabotage warp gates, and thus get out of their 5 AIP cost (and/or not have to gate-raid) for 14 HaP.<br />
*** This gives you some new options for controlling where waves can come into your planets, as well as allowing you to do it faster.<br />
*** To some extent, this can let you take more planets for the same amount of AIP if you do this enough, which presents interesting options; but you'll forgo a lot of the extra HaP from that if you do so, which has its own downsides.<br />
** Bear in mind that these numbers may require tuning up or down in general, but in general the relative values seem nicely-spread.<br />
<br />
* The sabotage hack's tooltips and text in general have been updated, and a lot of behind-the-scenes code bits for it.<br />
** The sabotage hack also now uses the thing where it pops up a list of options for you to hack, with info for each one. It does this instead of making you park really close to the thing you want to target.<br />
** It's worth noting that even when there is one option, it makes you choose it from the sub-list. This is because it gives you extra tooltip information that you can't get any other way, and it keeps the experience consistent so that you don't "click to see options" and accidentally trigger it if there's only one target.<br />
** In the hacking sidebar, if there is a variable amount of hacking points that something can cost depending on the options you chose, as in this case, it now shows the range.<br />
<br />
==== Removed Hacks ====<br />
<br />
* The ability to re-roll tech vault contents via a hack has been removed.<br />
** This might be a bit controversial, but we're giving you waaay more options now in each tech vault, and there is overall a tension in the game between "customize" and "play it as you find it."<br />
*** The re-rolling, even if it includes a deterministic seed (which this now does), still encourages a form of gambling with hacking points, and/or save scumming. Neither of those things are something we want to encourage, and they're both at odds with the idea of "play it as you find it" without actually furthering the goal of "design your empire."<br />
** So essentially, this is on the other side of the spectrum from the ability to refund your techs to give you more control over building your empire. This sort of re-roll gives you too much power to adjust what you find, and in a gamble-y sort of way, and that's not great. Hopefully the increase in options at each tech vault are now sufficient that you can find something of interest, and if not... that's part of the decision-making of choosing which targets to capture or hack, and which to ignore.<br />
<br />
* The "Watch Planet (local)" hack, which only cost two HaP, has been removed.<br />
** This was something that let you watch certain planets for a fraction of the cost, but only until the AI re-took the planet, etc.<br />
** This niche is now filled by the recon abilities of command stations, and by Spy units.<br />
** Having this as an option is ultimately something that is confusing and a bit of extra clutter when you consider the current options around.<br />
<br />
==== Removed Galaxy Options ====<br />
<br />
* The "Scout Adjacent Only" option from the galaxy options has been removed.<br />
** This was ludicrously masochistic and not something that we felt like anyone was likely using in the first place. This was something that we added a few years ago when we revamped scouting, but at the moment it's just detritus.<br />
<br />
* The "Hops for planets adjacent to yours are watched" option from the galaxy options has been removed.<br />
** This was a semi-cheaty workaround for players who wanted more situational awareness than the game used to give them.<br />
** The same sort of functionality is now provided in-game via spies and command station buffs, and is done so in a non-cheaty fashion. This should satisfy the players who want this style, and be more discoverable as well.<br />
<br />
==== Technical Details ====<br />
<br />
* Added display_name_and_description_insert_target_ship_name as a feature for hacks.<br />
** When true, this allows us to put {Target} in the description and name and have it show the name of the unit being hacked.<br />
*** There are a number of hacks that are now going to be used on a wide variety of ships/structures, so this lets us do that with them actually being identifiable.<br />
** There is a semi-similar feature for hacking event logs already, but not something for hacks yet-to-be-done that also works in event logs.<br />
<br />
* There's a bunch of new code on fleet memberships for logging how many times one of those has been hacked in a fleet, and in general tracking some upgrades on that level.<br />
** This is the basis of a framework for hacking your own ships -- but always by fleet membership line as a whole -- and it's useful because it can survive command station destruction and reconstruction, and type changes, etc.<br />
** This is also, structurally, very very similar to what we will be doing for ship loadouts in the future for spire ships and certain other things. So this plays into that in terms of being useful as a guide for a lot of future features.<br />
<br />
* Added a new Hacking_HackSelfUnit_Base abstract class, which forms a new basis for hacking our own ships.<br />
** This does not HAVE to be used as the underlying class for handling hacks against our own ships, but it has a lot of convenient helper methods that will make each of those other hacks a lot more brief to code and easier to know are correct.<br />
** Some of the more generalized stuff has also been integrated into the BaseHackingImplementation that basically every hack inherits from, so that is useful also. This is a pretty major extension of hacking, particularly in the ability to tune hacks via xml and also differentiate a given hack for multiple target types.<br />
<br />
* Also added a new hack_data sub-node for units in general, which can let us define in xml a lot of dials about how a given unit responds to a specific hack.<br />
** This can be things like extra cost increases, or even custom data used by a given hack.<br />
*** There is override_cost_in_hacking_points, and cost_in_hacking_points_multiplier_per_times_same_unit_hacked, as some basic items that allow for overrides.<br />
*** max_times_single_unit_can_be_hacked is in there for controlling how many times a unit can be hacked in general by this one hack.<br />
*** You can have arbirary key/value data as custom_hack_data child nodes.<br />
** This information DOES propagate to child units via the copy_from attribute. It is possible to do partial overrides of that info in the children.<br />
<br />
* only_for_hostile has been removed from hacks, and there is a new only_for_target_type instead.<br />
** This can be Any (the default), AlliedUnits, AlliesAndMyUnits, MyUnits, NeutralUnits, EnemyUnits, or EnemyOrNeutralUnits.<br />
<br />
* unit_tag_target has been removed from hacks, because we are directly assigning hacks already and this is redundant and confusing.<br />
<br />
* Added a new Hacking_SelfUnitWithSubSelection_Base, which has a ton of things set up for us to be able to self-target various numbers of ships for certain hacks on planets. Useful when various things can self-upgrade.<br />
<br />
== Beta 2.730 Spies, Early Officers, And Randomness Options ==<br />
(Released February 9th, 2021)<br />
<br />
* Fixed a couple of ways in which savegames could fail to load because of removed hacks in the prior build.<br />
** Thanks to Sigma7, Arides, and Isiel for reporting.<br />
<br />
* Added a new "EarlyOfficers" tag to the following Arks: Ark One, Orchid Ark, Rorqual Hegira Ark, Black Widow Golem, and in DLC1 Sol Ater Ark.<br />
** These have also had their max seeded per galaxy reduced from 2 to 1 (Sol Ater and Rorqual was already 1).<br />
** Their spawn likelihood in general has also been reduced to 1/20th of what it was before in most cases, compared to other Arks and Golems (for the usual ways of spawning that exist so far.<br />
** There is now a single EarlyOfficers ship spawned within 1-4 hops of one of the player homeworlds in each game. This is in addition to the other usual golems and arks that already seed.<br />
*** This essentially gives one empire in each game a way to get an officer fleet early, and one which is likely to be particularly helpful in the early game and maybe less helpful later.<br />
** Thanks to various players on discord for suggesting we have an early officer like this, and to CRCGamer and zeusalmighty428 for helping us come up with the list.<br />
<br />
* Like strikecraft, engineers no longer have personal shields and instead have that added directly to their hull health.<br />
<br />
* Rather than costing 2 hacking points per line you retrieve science form, it now costs 5. This is still extremely cheap, but should hopefully make this mechanic in general feel a bit more balanced. <br />
** Yes we want you to re-spec when you need to, and to invest science early and then rework your empire as you find new things (because you do not have the ability to see through the fog of war in the preferred way to play), but we don't want wanton and constant re-speccing, or for people to feel like this is some sort of cheat. This is a part of game flow, and doesn't take away from "play it as you find it." The ships are what you find, the science is what you design.<br />
** Thanks to folks on discord for their general feelings.<br />
<br />
=== Spies ===<br />
<br />
* Added a new civilian unit: Spy<br />
** Provides visibility on an enemy planet with a very low chance of being detected. Able to cross through wormholes, unlike the rest of a command fleet.<br />
** Has a high amount of cloaking, a very high albedo so it is hard to decloak, is fast, and has decent health. Costs a lot of metal (12k) and uses a lot of energy (2k) for the fact that it has no weapons or other tools.<br />
** Logistical command stations get four of these, and military command stations get two. Home and economic command stations get none.<br />
** It's worth noting that you can get the same effect by hacking planets to watch them with spy nanites, but that uses up finite hacking points.<br />
** Thanks to zdrgn for suggesting.<br />
<br />
* Logistical Command Stations now watch planets at 2 hops out, rather than 1. Military command stations now watch planets at 1 hop out.<br />
<br />
* Lesser Spy Cradle now watches at 5 hops out rather than just 3.<br />
** Greater Spy Cradle now watches at 8 hops rather than 4.<br />
** The latter of these (both of these are DLC1) can now basically see almost the entire map, hopefully making it more worthwhile.<br />
<br />
* On planets, there is a new GameSecondLastWatchedByCommandStation that we can use to tell the last time a planet was watched by a command station's power, or a spy cradle, or similar (many fallen spire ships have range-1 spy devices).<br />
<br />
* New galaxy map display mode: Spy Network<br />
** Shows which planets have spies on them (and how many), or which have spy nanites, which ones are viewed by recon structures, and which ones are visible for other reasons. Shows the same icons as the Normal view.<br />
** You can use this to see easily where you have visibility and why, and make sure you don't have extra spies in place in pointless places where you already have recon view, or where multiple spies are accidentally on the same planet (maybe from different players, even).<br />
<br />
=== More Randomization Options In MapGen ===<br />
<br />
* Two new additions to the Roguelike Additions section of mapgen:<br />
** Planets To Randomize: Marks 2-6<br />
*** Range from 0 to 300, new default of 6 (was previously the equivalent of 0).<br />
** Planets To Randomize: Marks 1-4<br />
*** Range from 0 to 300, new default of 2 (was previously the equivalent of 0).<br />
** General description:<br />
*** Normally there's a pretty sensible distribution of planets and mark levels, but this can cause a feeling of sameness in a lot of galaxies. <br />
*** If you're ready to spice things up, and willing to have some potentially very challenging map designs, then this feature will go in and randomly swap the mark levels of planets in the ranges specified.<br />
*** It will make however many swaps you ask for, up to 300 per category, and will overlap itself as it does the swaps without any hesitation. It will not swap any homeworlds, or what ships are on these planets.<br />
** This actually helps us get back some of the feeling of AIWC, where you could occasionally have a mark 4 (equivalent of mark 6) planet right next to your starting world.<br />
** Thanks to Sombre and others for requesting features for this sort of randomization.<br />
<br />
* Added a three new Roguelike options to the Map Gen section of game options in the lobby: Extra Allowed Distance For Adajent-Seeded Items (range 0-99, default 0)<br />
** Certain things that you can capture are seeded on adjacent planets to players if at all possible, to give them something early to capture. If you would like to expand that limitation so that it needs to be within 2 planets, or 3 planets, or... 99 planets... you can do so. <br />
** The more you expand this, the harder the game MAY be, as things will be absolutely random in distribution. These items will tend to still be required to be at least 2 away from any AI homeworld, though.<br />
** This will also be applied to things that are intended to be seeded two hops out, so if you give +1 here, it will seed those within 3 hops.<br />
** Thanks to Sombre and others for requesting features for this sort of randomization.<br />
<br />
* Added a three new Roguelike options to the Map Gen section of game options in the lobby: Extra Allowed Distance For Middle-Distance Items (range 0-99, default 0)<br />
** Certain things that you can capture are seeded on adjacent planets that are usually on the nearer half of the galaxy; generally within 6-8 hops of player homeworlds, but at least 3 hops out.<br />
** By increasing this count, you allow them to be seeded farther away (but they may still seed close, it's the nature of random).<br />
** Thanks to Sombre and others for requesting features for this sort of randomization.<br />
<br />
* Added a three new Roguelike options to the Map Gen section of game options in the lobby: Reduced Distance Restriction For Any Items Items (range 0-6, default 0)<br />
Various things that you can capture or that give some other benefit are normally seeded a minimum of something like 3 or even 5 hops from human planets (when the map allows for that). <br />
** This allows for you to relax those restrictions, which can make for surprise early-game boons. A Zenith Power Generator on your doorstep, and a SuperTerminal right next to it? A Golem really close by? Who knows!<br />
** It's worth noting that this only increases the restriction, but doesn't shift them all closer for sure. Most of the time if this is increased all the way to 6, that will just mean 'anywhere in the galaxy' for things that are meant to be late-game otherwise.<br />
** This can make parts of the game easier, but it's ultimately going to be very random.<br />
** Thanks to Sombre and others for requesting features for this sort of randomization.<br />
<br />
=== Tech Vault Balance ===<br />
<br />
* Tech Vaults no longer grant hull techs as one of their four options. They now grant only three options: two weapons, and then a third special one. The third special one is very likely to be quite valuable, still, but the hull one was always going to be the obvious pick.<br />
** Thanks to Strategic Sage, Lictuel, and others for suggesting.<br />
<br />
* The game no longer seeds "however many human empires there are" (plus 1 if difficulty of the highest AI < 5) of tech vaults within a few hops of the player starting zones.<br />
** These tech vaults (it's just one in a normal single-player game against a difficulty 5+ AI) are simply lost to you.<br />
<br />
* There was previously another 3 + "however human human empires there are" (plus another 1 if difficulty of the highest AI < 5) of tech vaults that were seeded in the "middle distance," aka randomly within 3-8 hops of player homeworlds if at all possible.<br />
** This has now been changed so that the number is based on a new "Base Tech Vaults To Seed" galaxy option, which you can adjust from 0 to 3, but which now defaults to 1.<br />
** For multiplayer, if the "Seed Extra Tech Vaults In Multiplayer" is on, then it will seed 1 extra tech vault per human empire beyond the first.<br />
** It no longer gives extra tech vaults for really low AI difficulties.<br />
** Thanks to Sombre for requesting more customization options, and others in general for registering the OP-ness of tech vaults in large volumes.<br />
<br />
=== Galaxy Options Categories and Subcategories ===<br />
<br />
* The galaxy options now also support full categories and subcategories, like the settings have for a week or two.<br />
** The destroyables, capturables, and galaxy design sections have been condensed into a new Map Generation section, with various subsections.<br />
** There is a new Allies section, which organizes a number of settings more clearly for you to be able to modify those.<br />
** In general a number of galaxy options moved around, but are easier to find now. It's also easier for mods to add well-organized options.<br />
<br />
* The category buttons on the galaxy options screens are now a bit less tall, and closer together, so that more can be shown. Relevant if you have a lot of mods.<br />
<br />
* Civilian Industries has been updated to include a galaxy option setting category, since that is now required to be explicitly created.<br />
<br />
* Basic galaxy option categories are now in place for AMU, although NR SirLimbo can rearrange those to his liking in the future.<br />
<br />
== Beta 2.729 Tech Vaults, Bugfixes, And Major AMU Updates ==<br />
(Released February 8th, 2021)<br />
<br />
=== Tech Vaults ===<br />
<br />
* TLDR of the below changes in the detailed notes:<br />
** Tech Vaults now give you an option of 4 different techs to choose from. Two weapons, one hull, and one special.<br />
*** These options may differ between players in multiplayer, in terms of what each player sees, and that's okay. This is meant to be custom to the player now.<br />
** Because you get so many more options now, and because we don't want to generally translate hacking points into science points, you can no longer convert a tech vault into science points.<br />
** The rest is mostly a bunch of improvements to make hacks-with-options possible for modders to add, and easier for us devs to add.<br />
<br />
* It is no longer possible to save a game before a tech vault reroll-hack and then reroll-hack it and then reload the save and reroll-hack to get different results. It now gives you consistent results every time you reroll-hack for a given tech vault, but each time you reroll-hack in a sequential fashion (aka without reloading the save and getting your HaP back) it will give you a fresh set of stuff.<br />
** Thanks to tadrinth for reporting.<br />
<br />
==== Hacking Improvements Under The Hood ====<br />
<br />
* The List<TechUpgrade> TechsGranted has been removed from ships, as it is now redundant and we are handling things more flexibly.<br />
<br />
* A new in HackingSeed has been added to ships/structures, which will let us give consistent random results (including doing rerolls as needed) without ever having to fear that save-scumming for infinite non-deterministic random reroll will be used.<br />
<br />
* TechUpgrades now support arbitrary tags, like ships/structures do. This is useful for various kinds of arbitrary filtering we might want to do.<br />
** Especially useful for mods that have custom techs and want to make something like a tech-vault that works only for specific subgroups. But really, this has a variety of functions.<br />
** All of the weapon techs now have the tag Weapon.<br />
** The hull techs all have the tag Hull, and then also have either HullStandard, HullTurret, or HullOtherFaction.<br />
** The civilian techs have the tag Civilian, and command station techs have the tag Command, adn defense has the tag Defense.<br />
** The turret hull tech, and the command stations and mobile fort all now have the tag SpecialBonus.<br />
<br />
* Added GetFactionOrNull_Safe() to GameEntity_Base, since we use this sort of thing a lot.<br />
** Also added GetFleetOrNull_Safe() to GameEntity_Squad, for the same reason.<br />
<br />
* On TechUpgradeTable, there is a new SortTechList() method, which lets us sort any list of techs in the same order that it would be in the game sidebar.<br />
** Useful after techs have been chosen from a pool in some fashion.<br />
<br />
* Added a new HackingUtils class.<br />
** There is a static GetDeterministicRandomGeneratorForHackTarget_Threadsafe() on there, where you can pass in a squad that is to be the target of a hack, and it will give you a random number generator that gives you consistent results.<br />
*** The nice thing is that this is also CONTEXTUALLY deterministic, so for instance if there were 5 options before and 1 of them is no longer valid because you already got it all or something, it will give you a somewhat revised set of 5. This is a lot more flexible than in the past, while at the same time not falling prey to save-scumming.<br />
*** This works with the HackingSeed if that has been set to be above 0, or if that has never been set then it uses the PrimaryKeyID of the hacking target.<br />
** Added a new GetListOfTechsValidForFactionFromTag() method, which gets the list of techs from a tag that the faction can currently acquire (has not already maxed them out, etc).<br />
** Added a new StartListOfTechsForTechVaultStyleGranter_ByTag(), which lets us fill a list partially from one tag.<br />
** And added a new AddToListOfTechsForTechVaultStyleGranter_ByTag(), which lets us add to a list from another tag.<br />
<br />
* Hacking_GrantTech has been made abstract, and there is now a Hacking_GrantTech_TechVault implementation for the tech vault for that. Any other hacks that mods or similar want to make out of this can be based on the same new underlying class.<br />
<br />
* The tech vault is now set up so that it will give you options from 2 weapon techs, 1 standard hull type, and 1 special bonus type.<br />
** If there are no weapon types or standard hull types that you can still upgrade (WOW), then it gives you more of whatever the lower categories are.<br />
<br />
* It is no longer possible to hack Tech Vaults to turn them into science. This is basically a way of converting hacking points into science, and that's something that we don't really want to let people have: in multiplayer it is unbalanced, and in single-player... well, it's less unbalanced, but still not great.<br />
** Now that tech vaults give you far more potentially-valuable items, and those items work alongside refunds to techs if you want to, there should always be something worth getting from them -- or if not, they can just be ignored like any other capturable that doesn't fit with a specific campaign.<br />
<br />
* IHackingImplementation now has a WriteAnySpecialDisplayCodeForHackedShipTooltip method that can optionally be filled.<br />
** This is a major new addition that allows any arbitrary hack to write information to the tooltip of ships that can succumb to this hack.<br />
** It literally can write whatever you want, and it even includes what tooltip detail level players are looking at it from.<br />
<br />
* IHackingImplementation now has a GetDoesHackRequireASinglularChoiceFromASubmenu that allows for any hack to specify that it wants give the player an arbitrary list of things to choose one from.<br />
** Then also added AddAllButtonsForSingularChoiceInSubMenu, which allows us to create buttons on the fly as needed for filling the sub-panel.<br />
** HackingUtils now has a CalculateNextBoundsForSingleHackingOption() method, which is helpful for anyone to be able to populate buttons of the correct size from AddAllButtonsForSingularChoiceInSubMenu.<br />
<br />
* Renamed GetClosestHacker to GetPreferredHacker (since that is more accurate now) and moved it to HackingUtils. Did this with obsolete wrappers to not break existing mods.<br />
** Also moved CalculateHackerForHack, CalculateCanDoThisHack, and TryDoHack to HackingUtils. This makes so much more sense in terms of how we need to access this sort of thing, especially now.<br />
<br />
* Fixed it so that when you make a choice from a hacking sub-options menu (as with the ARS in the past, but now also with tech vaults, etc), then it closes the popout choices versus leaving it hanging open.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a bug where the game was thinking there were 1 too many Human Empires for calculating the amount of hacking points that could be gathered per planet.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Put in various fixes for Integer Text Boxes in Galaxy Settings:<br />
** The values now correctly appear in both the actual text boxes and the labels when viewing the settings.<br />
** The settings correctly alter when using Game Commands to change them.<br />
*** Most of this was due to Integer Text Boxes being a "hybrid" between an integer and a string input.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Fixed a number of exceptions that could happen if you were viewing the details of a command-station-style fleet and the command station dies while you are looking at it.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Fixed a seemingly-rare cross-threading exception that could happen in LongRangePlanningData_GameEntity_Squad. This is something that has probably been possible to hit for years, but we only saw our first report of it now, so it does seem quite rare.<br />
** Thanks to Tydorius for reporting.<br />
<br />
* Fixed a few other possible nullref exceptions, at least one of which was hit, in LongRangePlanningData_GameEntity_Squad. It looks like these are more likely to be hit on the latest ultra-powerful CPUs with 8 cores and amazing multithreading, etc.<br />
** Thanks to Tydorius for reporting.<br />
<br />
* Fixed starter fleets showing the wrong number of strike craft. They now correctly apply the 40% boost at mark 1 to their cap that was introduced in recent balance changes.<br />
** Thanks to NR SirLimbo for finding and fixing!<br />
<br />
* Fixed a long-standing issue where a negative knockback (= pull) would always pull a ship onto the pull's source, unless the pull was so powerful it would pull the target over the source, in which case it would instead do so of limiting it.<br />
** This only bug if the target had but a single pull in this movement instance.<br />
** It might become a slight nerf the Crusher Turret, but very minor if at all.<br />
** Thanks AGAIN to NR SirLimbo for finding and fixing!<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed AMU throwing an error when starting a new game due to the Hacking Points gatherable per planet being changed.<br />
** Improved FakeFactionExecutor Executors:<br />
*** Actually created the mechanic for Executors of the ExecutorFakeFaction to not cause the entire thread to fail. This was falsely claimed during a previous release, but now actually happens.<br />
*** Executors now also get an ArcenCharacterBuffer passed into their Execute() function to write data into that is dumped on exceptions.<br />
*** Executors also reset when the ExecutorFakeFaction is created multiple times (for example when loading multiple saves in the same game session) instead of potentially accumulating endlessly.<br />
**** Thanks to ArnaudB for wondering why he'd get 11x 3 AIP reduction per 20 minutes...<br />
** Cleaned up AMU's exception logging to be much more clear and better formatted.<br />
** Implemented a great amount of further game settings. In total there are now 43 settings in the Galaxy Settings, most of which can be altered ingame. A few examples:<br />
*** Wormhole Invasion Duration<br />
*** Shark AI plot AIP or strength<br />
*** Multiplayer Hacking Point Scaling<br />
*** Repair Delay After Being Crippled<br />
*** Repair Cost For Hull/Shield/Forcefield/Engine<br />
*** Recloaking Time<br />
*** Maximum Paralysis/Weapon Delay/Engine Stun Time<br />
*** Flagship Speed Multiplier While Hacking<br />
*** Max Ship Lines Per Mobile Centerpiece<br />
*** Brownout Duration<br />
*** ... and many more.<br />
** Created the Severe Brownout mechanic:<br />
*** Essentially, while browning out and still in the red with power any ship or structure the player affected owns may become paralyzed at any time for a random duration of 1-20 seconds.<br />
*** The worse the brownout (based on energy produced and consumed) the worse this gets. However, once the energy balance is positive again this stops even while the brownout is still turning off forcefields.<br />
*** This will also stall until the actual brownout happens, so the "grace period" and "allowed power debt" rules from normal brownouts still apply.<br />
* Extended Ship Variants<br />
** Fixed the Rescue Beacon being auto-demoted in mark by the game due to having no techs. It now counts as a drone frigate, which means it always shares its centerpiece's rank. In addition its health now scales like that of a frigate.<br />
*** Thanks to crawlers for reporting this.<br />
<br />
== Beta 2.728 Full Multiplayer Beta ==<br />
(Released February 5th, 2021)<br />
<br />
* You can give nicknames to (pretty much) any faction, now. Not sub-factions like the warden or whatever, but if you have multiple AIs you can name them, and if you have multiple traders or devourers you can give each one a name, too.<br />
** Thanks to Vic for suggesting.<br />
<br />
* The way that the "closest hacker" is chosen is now completely redone.<br />
** For purposes of previews of hacks, it just chooses a random valid hacker if there are multiple, but it prefers ones that are selected to ones that are not.<br />
** For purposes of actually doing a hack, if you have multiple hackers selected (or no hackers selected and multiple viable ones here), then it will thow up an error window asking you to select one.<br />
** For the distant hacks that are done by your king unit, those don't involve this.<br />
** This whole thing simplifies a lot about hacking, and honestly in most cases you probably won't run into the error. In the cases where you do, just hitting the fleet hotkey or clicking the flagship in question takes care of things.<br />
*** We were thinking about making menus to make you select things, but that was going to get a lot more fiddly what with other hacking menu options being a thing. Instead this handles the edge cases without even getting in your way in cases where there is just one hacker, or one selected hacker, around.<br />
** In the event that you have a normal flagship and a support flagship both selected, it will choose the normal flagship without bugging you, incidentally.<br />
<br />
=== Multiplayer ===<br />
<br />
* The central Balance_HackingPerPlanet, with its balance_hacking_per_planet, has been removed.<br />
** There is now a balance_hacking_per_planet_per_number_of_human_empires, which fills a list of Balance_HackingPerPlanet_PerNumberOfHumanEmpires.<br />
** Instead of this always being 30, it is now 20 with 2 human empires, and 15 with 3+ human empires.<br />
** This was another of those lingering balance issues with multi-faction multiplayer. You wind up taking many more planets in that scenario, so you should still have a good amount of HaP... but not SO much as before.<br />
<br />
* New hotkey: Open Faction Window Without Pausing<br />
** Pressing this button will pop open the 'View /Edit Factions' window without pausing the game. This is extremely useful for in multiplayer, where you may wish to use the controls in there to set up rules for how you interact with other players, gift them metal, or to even switch which faction you are controlling.<br />
** Defaults to F2.<br />
** There is now a tooltip in the escape menu that explains what you can do in the factions window, and which also mentions this tooltip.<br />
<br />
* As with AI War 1, if you hit your metal cap in multiplayer, the metal will automatically spill over to all other human empires.<br />
** This is done in a very simplistic fashion: if there are two other empires, they each get half of whatever your overage would have been (normally your overage is just wasted, recall). If there are three, they each get a third, etc.<br />
** If one of the other empires is ALSO at their metal cap, it does not reallocate their portion of your overage to those not at-cap. Their portion is just tossed away as wasteage.<br />
<br />
* On the player faction screen, there is now a subsection for "Players Controlling." It then has detailed tooltips about what that section is for.<br />
<br />
* In the in-game factions window only, the non-editable settings for a player faction are now shown further down below and have their own subsection shown with an explanation of that. These are basically just for reference, so moving them out of our way is a good idea since this screen is going to be doing more now.<br />
<br />
* When you first open the in-game factions window, it now automatically opens to your faction. This makes it vastly easier to manage your settings related to your faction in multiplayer.<br />
<br />
* Fixed up a couple of edge cases in how other player faction names could appear a bit wrong in some cases in multiplayer. And in general made uncontrolled factions show better names.<br />
<br />
==== Gifting Resources Between Empires ====<br />
<br />
* There is a new "Multiple Human Empires" section of the player faction window that appears when there are actually multiple human empires (in other words, in solo play it doesn't appear, and purely shared-faction multiplayer it doesn't appear, and a human empire and a champion doesn't see it, etc).<br />
** The first line item under this is a dropdown of a gift type, and a gift recipient, and an amount. Any player can actually set up gifting from any human faction to any other in here, but by default you're seeing it for your own faction.<br />
<br />
* The first style of gifting now fully works: one-time metal gifts.<br />
** This lets one faction give a lump sum amount to another faction.<br />
** If the giver tries to give too much, it will just give whatever they have on hand and a message to that effect is shown.<br />
** If the recipient cannot store as much as the giver is trying to give, it will be reduced to the amount they can store, and a message to that effect is shown.<br />
<br />
* It is now possible for empires in multiplayer to gift hacking points between one another.<br />
** This works just like the metal one, essentially, except that there's no max cap on how many HaP a player can store.<br />
** The tooltip notes that science is specialized to each empire and so never can be gifted. That's actually pretty critical for balance, since all the players are getting a copy of the science, so that's not something that will change in the future.<br />
** However, we can definitely see some situations in large multiplayer games where each empire is too poor in HaP to do some hack, but pooled together they can totally do it. Artificially limiting things so that people can't share HaP doesn't seem warranted in light of this. Most everything that you could hack for (fleets, doubled ship lines, new ship lines, etc) can be gifted between players after being hacked-for already, anyhow.<br />
<br />
* You can now set up an ongoing gift of up to 25,000 metal per second from one player empire to another.<br />
** Once this is set up, on the faction screen you can see the record of it, and clear it if you want. You can also just overwrite it with a new gift if you prefer.<br />
** As the tooltip here explains, the gifting is done AFTER all of your other expenses for metal within your own empire, so gifting will never slow down or impede your own direct expenses; gifting will only give whatever it can out of the total you set, after your expenses.<br />
** The math on this all seems to be correct, and seems to show up properly in the metal flows history for both the giver and the recipient, but this is pretty complicated and so if we're actually off in terms of the numbers we show on the UI for the flows, that's probably a display thing. It's hard to be certain if those data points in the flows are at a scale of 1 per second, or 1 per tenth of a second. If the latter, then we're showing the flows from gifting as being 10x too high compared to all the other numbers, but the actual underlying math for how the flows work is correct either way.<br />
** This feature turned out to be... remarkably more robust than we had really been planning on creating. We never had anything remotely so powerful in the first AI War. Gifting metal harvesters or similar back and forth was a huge pain, and there was always a risk to your own production on top of it. This solution is far more user friendly in every respect!<br />
<br />
* The last form of gifting between player empires is another ongoing one: this time it's energy.<br />
** Energy is something that constantly flows and is consumed, so this is very easy to make sure is consistent on the UI. It doesn't have a "per time" element.<br />
** You can send up to 2 million energy from one empire to another, and the setup is just like you would do for ongoing metal flows.<br />
** Also the same as the metal flows, it will ONLY give the energy that you can actually afford. So if you've set yourself up to give 100k to an ally, and your extra energy drops to 50k because you either built a bunch of new stuff or lost an energy producer, then your gifting will drop to 50k during that period. You don't ever have to worry about your energy going negative at all or risking a brownout because of gifting out.<br />
** Energy really wasn't on the list of things that we were going to make giftable in multiplayer for this game, but it turns out it is incredibly useful, and remembering how things were with the first game and trying to share economies in various ways, this is again far more straightforward and safe. The fact that you don't have to take down your gifting rules if your economy tanks is really useful.<br />
<br />
=== Human Resistance Fighters ===<br />
<br />
* Added a new hull tech type, right under Alien: Expatriate.<br />
** Description: Expatriate hulls are unlikely to be something you encounter at all unless you specifically hack certain factions for them. The ships that benefit may be very similar to your own, but there is a difference. Most humans who are not trapped on a planet are already a part of your war effort, but some groups have refused to fully join for various reasons. Collectively, these are the Expatriates.<br />
<br />
* All of the human resistance fighter ships now solely get levels from the Expatriate tech, and not from any other hull or weapon tech types.<br />
** When it comes to any other human-style factions that you can hack to get ships from, we need to make that same adjustment; for all the alien ones, so far we seem to have hit all of them with the Alien tech.<br />
<br />
* The Human Resistance Fighter version of the Assault Frigate is now called the Assault Frigate Defender.<br />
<br />
* The Nucleophilic Defender, Concussive Defender, and Tesla Defender now all start at Mark 2 rather than Mark 1, to be like the rest of the Human Resistance Fighter units.<br />
** These are overall more powerful in the main, true, but shorting them a mark level was confusing at best.<br />
** Thanks to GreatYng for reporting.<br />
<br />
=== Improvements To The Prior Build ===<br />
<br />
* The new popup for science refunds now says 'item' or 'items' depending on whether you have 1 or > 1 things to refund. Also some additional colour has been added to the text<br />
<br />
* The Yes/No order of buttons on most of the confirmation popups has been swapped to be No/Yes, which is now consistent with... all the other interfaces in the game.<br />
** Thanks to Badger for noting that we'd inverted this!<br />
<br />
* The arcen thread manager now still checks for auto-killing threads even if the game is paused, and it spaces out its timing based on realtime and not game time. This probably will have zero effect on anything, but it's more correct.<br />
<br />
* There is a new DoOnPerSecondWhilePausedNonSimUpdates_OnMainThread, which developers and modders can use to do things once-per-second while the game is paused.<br />
** We are now using this to make sure that the totals for the science strength amounts on the tech sidebar update properly even when the game is paused.<br />
** Thanks to Daw11 for reporting how this was not changing unless you unpaused.<br />
<br />
* Added a few new names to the "Standard" planet name list.<br />
<br />
* EntitySimLogic has a new DoPerFrameWhilePaused method that gets called every frame only while the game is paused.<br />
** This lets us do some various per-fleet calculations, such as what the intended mark levels of things are, even when the game is paused, so that things can react to mark level increases and decreases properly without having to unpause.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Fixed an issue where refunding techs was not reducing the mark level of ships until the next time you unlocked a tech, or saved and reloaded, because of some caching happening at the faction level.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* In the fairly-rare cases where a player-controllable ship has a starting mark level higher than 1, we now state what that starting mark level is right next to where the tech upgrades are. Otherwise it seems like a very perplexing bug, because there seems to be no good reason for the ship to be at that higher mark level.<br />
** This mainly applies to ships that you get from Human Resistance Fighters at the moment, but it's something that could come into play with any kind of ship if we wanted it to, since the mechanic does exist and be applied however we want.<br />
<br />
* Fixed several windows, including the science refund, fleet member swap, and fleet gifting screens, so that when you hit the escape key it closes them rather than opening the escape menu.<br />
** This is nice for the sake of consistency, but it also prevents players from existing back out to the main menu while these screens are still open.<br />
** Thanks to Badger for reporting.<br />
<br />
== Beta 2.727 Tech Refunds And Balance Tuning ==<br />
(Released February 4th, 2021)<br />
<br />
* Added to the engineering tech description: Once engineers reach mark 3, they also become cloaked, which is incredibly super-duper useful if you are using engineers in dangerous areas.<br />
** Thanks to Paradox Song for... ahem... reminding Chris this was even a thing.<br />
<br />
* Fixed an issue in the prior build where the AI and other variant MLRS/Fusion turret renames were not carried over. Now all the AI, Ghost, Marauder, etc, turrets all have the proper names.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed a couple of stupid typos that had broken counterattacks for the last while. They were counting down to zero but not actually launching any units. This was unrelated to any wave changes, but rather was just a matter of some typos in some code that we were making cross-thread-exception-safe.<br />
** Thanks to ussdefiant and CRCGamer for reporting.<br />
<br />
* prevents_all_weapons_fire_on_planet has been renamed to creates_ceasefire_on_planet<br />
** Also added a new blocks_ceasefire_on_planet.<br />
** Ceasefire blockages override any and all ceasefires. They basically cut through no matter how many ceasefire-creators there are -- a single ceaasefire-blocker wins over however many ships are trying to create a ceasefire.<br />
** The following ships now have the ability to block ceasefires: Ravenous Shadow, Devourer Golem, Flenser, Planetcracker, and Mothership.<br />
** Thanks to Chthonic_One and Ovalcircle for requesting that the devourer still be able to eat the Trader. This will also lead to some interesting fun with DLC2 later.<br />
<br />
* The game now detects a variety of statuses that should prevent you from swapping ship lines to/from fleets, and now prevents members of those fleets from showing up in swap lists. On the fleet in question, it shows a message explaining what is happening any why you can't do swaps.<br />
** If the flagship is crippled, you can no longer swap fleet members out from it.<br />
** If the flagship has not yet been fully claimed, you can also no longer swap fleet members out from it! That was a problem with items still in the process of being claimed (and even let you bypass AIP costs of golems while looting their ship lines for other fleets).<br />
** Thanks to ArnaudB for reporting.<br />
* XML tags added for additional flexibility to KDL_VanillaRatesOfFire.xml and KDL_VanillaEntries.xml (on-death effects)<br />
<br />
* Added three new window prefabs for various future purposes:<br />
** ModalScrollingContentsOKCancel, ModalDropdownWindow, and ModalTinyTextWindow.<br />
** On their own, these do nothing, but they pave the groundwork for a variety of future functions. Most directly we're going to use them for some hacking game flow options, but in the more distant future they can be used by us or modders for anything, since they're pretty freeform.<br />
<br />
=== Multiplayer: Gifting Fleets/Planets ===<br />
<br />
* In multi-empire multiplayer games, human players can now gift fleets from one to another.<br />
** This works for all kinds of fleets, even those that have not been fully claimed, or which are crippled, etc. Mobile fleets, starting fleets, lone wolves, support fleets, entire planet fleets, whatever.<br />
** The one exception on type of fleet you can't gift is your home planet's command fleet (with your home command station, etc).<br />
** And the one other exception in terms of fleet status that you can't gift is a fleet with a dead centerpiece. This is almost always a planet you used to own but your command station is dead.<br />
** The button for this is directly in the fleet management window, and only appears if there are multiple human empires. If there are only humans sharing one empire, or humans who have an empire and others who have a champion, then this button does not appear.<br />
** This is one of the very last features needed for multi-faction multiplayer to leave alpha status and go into beta status. It's not THE last feature, but it's definitely the most complicated to code. We weren't planning on doing this today, but when working the the ship line swap feature restrictions we suddenly had a clear picture of how this would work, so just knocked it on out.<br />
<br />
=== More Tech Tweaks ===<br />
<br />
* Stingray has been moved out of the Technologist/Exotic tech, and into the Fusion/Breakers tech.<br />
** These hit bubble forcefields, which is a better fit for that tech than the exotic one.<br />
<br />
* Vanguard has been moved out of the Ambush/Opportunist tech, and into Technologist/Exotic.<br />
** This isn't actually a ship that does ambush attacks. It's actually RESISTANT to ambushes.<br />
<br />
* The Pulsar Tank has been moved out of Fusion/Breakers tech and into Ambush/Opportunist, because it gets a bonus when coming out of wormholes, which is an ambush mechanic.<br />
<br />
* The Opportunist tech has been renamed back to Ambush, because that's clear enough.<br />
** The description of the tech has been updated a bit to include the bonus of the pulsar tech in its mentions, too.<br />
<br />
* The Fusion/Breakers tech has been renamed AGAIN (this is why we do a beta), this time to Piercing.<br />
** The new description is: Piercing ships are those like bombers or stingrays, which focus on shields in some fashion. Fusion-style piercer ships (bombers) are able to bypass personal shields of targets and hit hulls directly. Their overall theme is smashing large or shielded targets. The other piercer ships are largely about taking down bubble-forcefields, which bombers get no bonus against.<br />
<br />
* Thanks to Puffin and zeus for discussions on this, and in particular to Puffin for the better slotting of some of these units.<br />
<br />
* The Anti-Shield Pulsar Tank is now a ship that uses Ambush and Piercer techs, rather than Piercer and Heavy.<br />
** We already had some precedents of a variant ship that switched its weapon tech, but now this switches the variants to use the original weapon tech and the new-thematic weapon tech, rather than a hull+weapon tech combo. This helps identify them as outlier variants, which should be a good thing.<br />
** For the sake of consistency, especially since strange variant ship combos are likely to be on the rise in future DLCs and mods, the Stalker now uses Exploitative and Subterfuge weapon techs, rather than having the medium hull tech. (The base Eyebot the stalker is based on uses Subterfuge and Medium).<br />
** Paralyser, similarly, now uses Subterfuge and Piercing rather than Subterfuge and Light hull. This is a variant of the Stingray that also causes paralysis.<br />
** If there are other ship cross-combos that seem like they should have two weapon techs, please let us know and remind us. The hope is that this will make it really clear that this is a crossover unit that is part of two categories rather than just one.<br />
** Thanks to Puffin, zeus, and CRCGamer for reporting on these.<br />
<br />
* Parasitic Fusion Bomber now uses Exotic and Piercing techs, rather than Piercing and Medium.<br />
** Parasitic Pike Corvette now uses Exotic and Disruptive techs, rather than Disruptive and Medium.<br />
** Mugger now uses Exotic and Piercing techs, rather than Piercing and Heavy.<br />
** Thanks to CRCGamer and cml for bringing up these ships.<br />
<br />
* Exploitative has been returned to the name Disruptive, since that is clear enough especially with the tech description now.<br />
** Same with Close Quarters being renamed back to Melee.<br />
** Thanks to cml and others for weighing in on this.<br />
<br />
* The fourth tutorial has been updated to use the (current) proper names of the techs you need to upgrade.<br />
** Thanks to Puffin for reminding us.<br />
<br />
* Generalist/Mainline tech has been renamed to Core.<br />
** New description: Core ships tend to be all-rounders that are for the 'line of battle' or for screening purposes. Conventional armaments of ballistics and simple directed energy weapons aren't particularly flashy but they get the job done. Ships using these systems are great at supporting or becoming the backbone of effective fleets.<br />
** Thanks to Chthonic_One, CRCGamer, Metrekec, and cml for the discussion and wording this time.<br />
<br />
* Moved the Tackle Drone Launcher Frigate from Exotic to Disruptive.<br />
<br />
* Moved Sentinel Gunboats and Veteran Sentinel Gunboats from Exotic to Core.<br />
<br />
* Moved 'Ranger' Sentinel Gunboats from Exotic to Subterfuge.<br />
** May add new thing for these. Need to see if possible.<br />
<br />
* 'Nanoswarm' Auto-Bombs benefit from both Exotic and Melee, rather than Heavy and Melee.<br />
<br />
* 'Bounty Hunter' Raid Frigates benefit from both Ambush and Raid, rather than Light and Raid.<br />
<br />
* 'Fusion Saw' Metabolizing Gangsaws benefit from both Piercing and Melee, rather than Heavy and Melee.<br />
<br />
* 'Barnacle' Metabolizing Gangsaw now benefits from both Subterfuge and Melee, rather than Heavy and Melee.<br />
<br />
* 'Aggressor' Agravic Pod now benefits from both Ambush and Disruptive, rather than Ambush and Medium.<br />
<br />
==== New Ship: Ambush Carrier Frigate ====<br />
<br />
* Add the 'Ambush Carrier Frigate', to give Ambush tech a bit of a boost, as well as its first Frigate type.<br />
** Thanks to CRCGamer for contributing from his mod in order to help round this out!<br />
<br />
==== Balance Tweaks ====<br />
<br />
* Vanguards and Vanguard Hydras now have an acid effect.<br />
** Their base damage is reduced, so their total output is the same with the acid accounted for.<br />
<br />
* Acid effects can now scale with Mark level.<br />
** damage_amplification_flat_added_per_mark="10" as an example.<br />
** This scaling is applied to Acid Turrets and both Vanguard types.<br />
<br />
* Logistical command stations normally give a 3.5x speed boost to all allied ships on their planet. They previously gave an addition 0.5x speed boost to ships per added mark level (so mark 3 was 4.5x speed boost). Now they give a full 1.0x per mark level (so mark 3 is a 5.5x boost).<br />
** Additionally, the description of the command station and of the tech for logistical command stations now make mention of this speed boosting effect directly.<br />
** Thanks to ArnaudB for suggesting.<br />
<br />
* Hacked Dark Specters now give you 4 ships rather than 1.<br />
** Thanks to CRCGamer for pointing out how overly harsh it previously was.<br />
<br />
* The three types of Dyson ships that you can hack for now all use the alien hull tech rather than light or medium. They already had no weapon tech.<br />
** They also now have a max mark 7 level of 7 rather than 4.<br />
** And lastly, the Bulwark now grants you 4 ships rather than 1.<br />
** Thanks to CRCGamer for bringing this up.<br />
<br />
* Grenade Launcher Corvette is now Medium hull instead of Heavy, armor reduced from 110 to 70, speed increased from 600 to 800, damage increased 20%, range increased from 4,200 before lobby range slider, to 6,500 before lobby range slider.<br />
<br />
* 'Molotov' Grenade Launcher Corvette is now Light hull instead of Medium, armor reduced from 70 to 50, speed increased from 1,000 to 1,600, same damage and range increases as the Grenade Launcher Corvette, greatly increased its engine-stun and weapon-jam effects, including increasing the available "range" to work up to engine below 14, and armor below 70.<br />
<br />
* MLRS Corvette is now Medium hull instead of Heavy, armor increased from 50 to 70, speed increased from 600 to 800. <br />
<br />
* 'Harasser' MLRS Corvette speed increased from 1,000 to 1,600.<br />
<br />
* Viral Shredder speed increased from 700 to 1,000, damage increased 50%, slightly increased replication rate on top of this.<br />
<br />
* Vampire Claw and 'Absorber' Vampire Claw health increased 33%.<br />
<br />
* 'Absorber' Vampire Claw is now Medium hull instead of Heavy, is now the same speed as a normal Vampire Claw.<br />
<br />
* Swapped the health of the Pulsar Tank and 'Punk' Pulsar Tank around.<br />
<br />
* Pulsar Punk is now Medium hull instead of Heavy, armor reduced from 120 to 70, speed increased from 500 to 800, now has temporary speed bonus upon entering a planet like Raiders.<br />
<br />
* Replaced the Ion Disruptor Frigates weapon. It is now closer to the base Siege Frigate, with 66% of the total damage, hitting up to 20 targets. Has an inverted knock-back effect, pulling enemies together for other area attacks. Still has some paralysis effect. No longer has any targeting restrictions.<br />
<br />
* Siege Frigate and its two variants (Devastators, Ion Disruptors) now benefit from Medium hull rather than Light. Armor increased from 40 to 70.<br />
<br />
==== Astro Trains ====<br />
<br />
* Shifted Astro Train project requirements:<br />
** Dire Guardian from intensity 7 to 6.<br />
** Hunter Killer from intensity 8 to 7.<br />
** Fenrir from intensity 5 to 8.<br />
** Shellshocker from intensity 6 to 8.<br />
** Custodian from intensity 7 to 9.<br />
<br />
* Altered descriptions of the prototypes to be prototype variants of the Extragalactic units, rather than Guardians.<br />
** Fun fact: Some of the Extragalactics are based on the prototypes, originally as kind of a...working concept to be used, but worked well enough.<br />
** They are notably weaker than their children now, and thus are getting upgrades and a kind of revamping into being the...prototypes of the thing *ABOVE* their equivalent, which makes more sense than the AI building prototypes of things it has already started making a bunch of.<br />
** This has the exception of the Custodian, which is being rethemed as a smaller, more easily distributed Thunderchild, due to being otherwise too high a tier to use.<br />
** The prototypes were all generally themed on some kind of boss, excluding Umbra which is just based on an interesting word, and Shellshocker which has no base. Their upgrades generally attempt to go further into the theme.<br />
<br />
* Swapped models of prototypes to their equivalent Extragalactic.<br />
<br />
* All of the Prototypes (excluding Custodian, which was already granted directly to the Warden) are now granted directly to the Hunter Fleet.<br />
** Thanks to ArnaudB for mentioning something that led to this.<br />
<br />
* Fenrir prototype now has 15 Million health, up from 6. Beam weapon retooled from single target high damage beam, into a focused 'fan' beam, with no target limit and a faster fire rate, but lower damage. Now has a 'Flak Battery' weapon.<br />
** Drones are currently the same.<br />
<br />
* Reanimator prototype now has 30 Million health, up from 6. Now has a 'Reanimation Blast' weapon. Drones damage increased 400%.<br />
<br />
* Removed the drones from the Umbra prototype - no models for it. Bit strange with a majorly cloaked unit regardless, it being possibly revealed but still spawning super cloaked drones.<br />
<br />
* Fixed Umbra prototype decloaking in a single salvo.<br />
<br />
* Umbra prototype now has the 'Fires Through Forcefields' mechanic. Now has the same weapon of the Poltergeist. Now has 15 Million health, up from 6.<br />
<br />
* Shellshocker prototype now has 30 Million health, up from 6. Has the same damage output as the Wyrm, but spread out among more shots. Now does more engine-stun and weapon jam (immediately hits its cap).<br />
<br />
* Custodian now has the attack and speed bonuses from the Thunderchild, as well as its tesla weapon (but weaker). Health increased from 7 Million to 45.<br />
<br />
* Warspite and Warspite Artillery now have 15 Million health, up from 9 and 2.5 respectively. Artillery component now has AoE on its weapon, with no target limit. 'Hidden' component overall damage condensed into fewer shots, then overall DPS increased over that.<br />
<br />
* Ravenous Shadow now has 60 Million health, up from 39.5. Now has the same damage as the Devourer Golem, a slight bit of Vampirism, a minor speed increase, and a small range increase.<br />
<br />
=== Tech Refunds ===<br />
<br />
* The tech history no longer has a note at the top of it that says it is a WIP.<br />
<br />
* It is now possible, under the hood, for us to refund techs and fleet upgrades and give back the science. These now properly show up in the tech history, including the total science spent.<br />
<br />
* When you gift a fleet to another player in multiplayer, any science upgrades that were applied to it are refunded to you.<br />
<br />
* Player ships are now the appropriate mark level of whatever their techs and fleet upgrades say they should be.<br />
** Previously, they were whatever they were set to be only if that was higher. But now that we can refund science, and transfer ships between fleets, that sort of logic no longer works.<br />
** This should be perfectly fine unless there is some faction (in a mod maybe?) that is granting a player a ship that is supposed to be randomly at a higher mark despite not having the techs to back it up (and not based on a min_mark_level on the ship). In that sort of scenario, the saves will now drop the ship down to the level it was supposed to be based on its min mark level and whatever tech and fleet upgrades there are.<br />
*** We're not actually aware of any such cases, so probably it's all fine. But it's an edge case that could theoretically affect a mod or an old faction.<br />
** What this also means is that when you swap fleet lines between players, or gift fleets, you'll potentially see mark levels either rise or fall based on the techs and upgrades of the recipient. Science and hacking points are both resources that aren't giftable between players.<br />
<br />
* Added a new AlternativeHeightToUseInAutoSizing that were are now able to use to make non-uniform button heights where needed in lists of buttons on places like the left hand sidebar.<br />
** Also added a new ExtraSpaceBeforeInAutoSizing and a new ExtraSpaceAfterInAutoSizing, which allows us to put uneven gaps between items in a list.<br />
<br />
* The tech sidebar tab now has extra spacing between groups of techs, to help visually differentiate them. The overall spacing between other items is also slightly smaller.<br />
<br />
* The tech sidebar tab now also has an extra button all the way at the bottom, which is shorter than the rest, and which says "Retrieve Spent Science."<br />
<br />
* At the top of the new "tech refunds" screen, there is an "Explanation, Please" button that you can click for a detailed lore report from engineering. This is a pretty lengthy narrative lore dump!<br />
** Thanks to cml for requesting that we explain the mechanic. Having lore details in place throughout the game, particularly as they relate to gameplay, is always a goal of ours. Often it's hard to find enough space to write out a full explanation if it's not in the wiki or the lengthy tips section, but this button provides a really easy access point for this one.<br />
<br />
* On the retrieve spent science window, you now see a list of all of the techs that you have actually invested science into, with how much science goes along with each.<br />
** You can click on these to toggle them to be refunded, or leave them as "keep as-is."<br />
** The tooltips for these have been adapted to show just how much ship cap you are about to lose, and how much strength you will lose.<br />
<br />
* Fixed a longstanding issue with upgrade tooltips not showing certain numbers because the ship caps were not explicitly set, and so it was using negative numbers rather than the number of ships you actually had.<br />
<br />
* Added a new custom_hacking_display_string_instead_of_name, custom_hacking_display_string_includes_related_string, and custom_hacking_display_string_includes_related_int on hacking types.<br />
** This allows us to do custom entries that read differently from normal.<br />
** An example usage is Retrieved {RelatedInt} Science From {RelatedString}.<br />
<br />
* The retrieve science window now:<br />
** Includes all the fleets you've invested into.<br />
** Shows those fleets by type, and with colors for each type for easy reading.<br />
*** This also includes tooltips for them, and the ability to C-click them, and oh man there's so much UI depth in every aspect of this, good grief.<br />
** Shows the total accumulated science you will get back in the top bar.<br />
** Shows the total cost of hacking points you will spend on the Ok button.<br />
** Gives you a confirmation popup, or various appropriate error popups if you've made no choices yet or can't afford the choice you made.<br />
** The confirmation popup explains that there is now way to get back spent hacking points, as they are gone forever.<br />
** It sends out a series of gamecommands to actually execute the science retrieval in for each chosen entry.<br />
** The cost right now is a linear 2 HaP per line of stuff refunded, regardless of how many times a line was upgraded. If we later need to do more, we can, and if we need something like a cooldown period on refunds we can also do that. But the hope is that there are compelling-enough places to spend HaP that this is a self-limiting problem inherently.<br />
** And finally, the hacking log now also includes the full details of the hacking points spent in this way, even though they are not traditional hacks.<br />
** We also made a new hack that we load from xml to get the costs and display info for this, and a new Hacking_NullHackHandler that anyone can link against for odd cases like this where a hack is handled manually but needs to be logged like any other hack.<br />
<br />
==== TLDR ====<br />
<br />
* Thanks to Badger for inspiring the addition of re-speccing in general, because with all these tech changes in this build we really don't want to irrevocably break people's games. The ability to re-spec is needed from that angle alone.<br />
** But beyond that, this is actually a really major thing that we realized is missing in this game in general, leading to players hoarding science throughout the game, or feeling "hosed by the RNG" later if they are playing on a high level and did not get lucky, or feeling like they need to reveal the map early and plan their entire game out from moment one.<br />
** The flow that we'd rather have is people spending in the moment, and having to manage AIP and HaP as their long-term irreversible costs. The ability to fiddle with your fleet composition, and what is stronger or weaker, is kind of at the core of a lot of the fleets system in general. And since you can't possibly know everything that might be available to you out there in the fog of war, it's only natural to want to be able to rework your empire's design as it grows from the early game into the midgame and late game.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Each player faction can now set a starting amount for metal, science and hacking. By default these are exactly the same as in Vanilla right now, though they can be set higher and lower.<br />
*** Note that setting higher-than-normal amounts will result in achievements becoming locked due to cheating.<br />
*** Setting negative starting AIP (= starting AIP reduction) or triggering negative AIP (NOT merely setting it so) per interval (= AIP reduction over time) will now also disable achievements.<br />
** Updated AMU's description and scource code.<br />
** Fixed a nasty bug with Fireteams based on the SmartFireteamedFactionImplementationBase inside FireteamMaintenance()<br />
*** When "attacking" planets the Fireteams now check whether or not they outnumber the enemies at the target by at least 1.5:1 before declaring the order unnecessary and resetting the targeting.<br />
**** This effectively stopped Marauders from helping out planets they owned but were under attack, no idea how that ever worked...<br />
**** For this purpose created IsOutnumberedOn(Planet planet, FInt outnumberedBy), which does what it says.<br />
*** Fireteam targeting will no longer wrongfully use the lurk planet as current target for individual ship movement. This is another case of no idea how that ever worked...<br />
*** If fireteams already have arrived on the lurk planet or are ready to attack, the target is adjacent and Marauders are not outnumbered there the individual ships now should immediately attack it. This is to save time, especially when defending, with Fireteams not waiting to gather up before the attack.<br />
*** Thanks to ussdefiant60 for a save that demonstrated the bugs, and leading to the adjustments.<br />
* AMU, Kaizers Marauders<br />
** Rejigged a lot of logic on how the GlobalImportantRollupHolder and External Data are loaded, so that even at the very first sim step the data already is there in its entirety.<br />
*** For this purpose created an abstract InitializeExternalData() method in SmartFactionImplementationBase that is automatically called by OnDeterministicThreadOnly_DoInitialLogic(), which itself is automatically called by DoOnLocalStartNonSimUpdates_OnMainThread(), which automatically calls GlobalImportantRollupHolder.Initialize().<br />
*** SmartFireteamedFactionImplementationBase will additionally call the new abstract LoadFireteamValues() can be used to set min and max base fireteam sizes, but does not demand doing so.<br />
**** The effect of this is that the initiailzation of data is now mostly handled at the moment the galaxy is created and no longer when the game is unpaused. The initial lag spike when a save is loaded for the first time, or when a new game is started thus no longer happens then, but during loading of the factions - whenever that may be.<br />
**** End result: Better handling of data, less lag after unpausing, potential new bugs.<br />
<br />
* AMU now fully supports DeterministicExecutors for launching simple scripts of any kind on game session start and mapgen.<br />
** They have already been secured against individual errors, even if one of the executors in the middle errors out the others will at least attempt to run through properly.<br />
** Planetary science and hacking points are now re-set on game session start. This fixes the amounts getting stuck on wrong numbers when restarting the game, loading saves or creating new games with other settings.<br />
<br />
* More System Defenders 1.21 by CRCGamer - Escorts & Vanguards<br />
** Most recent changes:<br />
** Ambush Carrier removed after donation to base game. Mod still enables station-keeping and AI guardian variants however.<br />
*** Note from devs: special thank you to CRCGamer for this! This helps round out a base-game tech that otherwise had too few things in it.<br />
** Escort Carrier and AI guardian variant reworked. Now has a parasitic main weapon and deploys Vanguard drones instead.<br />
** Because of the recent tech swaps of certain strikecraft in the base game the previously used Stingray drones are now deprecated.<br />
** Because of the more significant combat effectiveness of the Escort Carrier with said changes ARS and random Fleet counts normalized from 9 to 6.<br />
** To offset the overall reduced ship count the durability of the Escort Carrier is raised by about ~20%. Metal cost raised from 65K to 75K.<br />
<br />
* AMU:<br />
** All Factions basing their Stage 0-3 and LRP threads off the SmartFactionImplementation will now gracefully handle ThreadAbortedExceptions instead of throwing errors.<br />
<br />
=== Pathfinding Performance ===<br />
<br />
* FindPath() is being retired and replaced by FindPathFreshOrFromCache().<br />
** This latter returns a new, cached, PathBetweenPlanetsForFaction objeect rather than just a list of planets.<br />
** If a programmer alters that list of planets after they get the object, they need to be stoned lightly because it will break all sorts of things.<br />
** The idea here is that we are calculating paths way too frequently, often thousands of times in a single second, and most of the paths we are calculating are the same during that span.<br />
*** This is very true for things like checking the danger of a path (for some of the pathfinding variants), as well as for fireteams in general, as well as for ships that are undergoing fleet movement orders of certain sorts.<br />
** This overall change should lead to a dramatic improvement in performance in a number of areas of the game, but mostly in the background AI processing for factions.<br />
** The old FindPath() method is still there, so existing mods will still work, but it's been marked as obsolete so that mods will need to update to the newer, more efficient methods before they can be properly compiled/updated by the mod author for a new version.<br />
** Also added a new PathfindingCacheForFactionOnContextObject that gets cached on ArcenSimContext, so that we can have thread-safe separate caches per context per faction (main sim, long term planning, whatever).<br />
** In our innermost calculations for finding paths, we are also now reusing lists better, and we are using the [ThreadStatic] attribute for the first time in this program. This turns out to be extremely useful, and we just recently learned about it: https://docs.microsoft.com/en-us/dotnet/api/system.threadstaticattribute<br />
** Additionally, even if the number of paths generated was the same (it's very much not), we're also now saving a lot of transient GC allocations, which is nice.<br />
** Note to modders: if you were using FindPath, generally you are now using FindPathFreshOrFromCache(). This gives back a PathBetweenPlanetsForFaction object with a PathToReadOnly on there, and you should ONLY read from it, not ever alter it. <br />
*** It is also possible for it to give back a null PathBetweenPlanetsForFaction object, so you do have to check for that now (that generally means an invalid pathing attempt, or already at the target, etc, and is there for efficiency's sake.)<br />
** Another note to modders: if you were getting a pathfinder directly and then trying to call FindPath on the pathfinder... that's really something to be avoided, now, because it won't cache at all.<br />
*** To work around that, you can call InnerFindPath_RawSinglePathfinder() and pass in the info as well as the pathfinder of your choice, and you'll get back either a populated PathBetweenPlanetsForFaction or null, all of it cached properly and thus more efficient.<br />
*** There's nothing that will FORCE you to use pathfinders this way -- you just can switch to passing in a list of planets to be filled rather than just getting one in return -- but unless you are absolutely positive that this pathfinding call gets called less frequently than once every few seconds, you really should use the cached versions.<br />
** In the escape menu, at the bottom of the performance section, we can all now see the number of path recalcs, and the number of paths from cache.<br />
*** For reference, in a fairly large savegame with a fair number of late-game factions (5 hours in, near the end), running the game for about 20 seconds leads to 1200 path recalculations, and 4500 path pulls from cache. Each pathing call is pretty intense, and this is not remotely the most expensive scenario we have around, so this is a huge potential boost in performance, especially for older CPUs.<br />
**** In the case of certain other savegames that we saw logs of, where the Hunter fleet thread was getting terminated for taking more than 30 seconds (yikes!) to do its work, it will be interesting to see what these numbers are like and if that is no longer a long-running thread. Either way, these performance improvements are worth it. But if not, then we can use that specific savegame to do some testing and tune things different ways for the hunter specifically. <br />
** Thanks to Lightjolly for the report.<br />
<br />
* Fixed some bugs with outguard using the wrong variable to do things like check if they are able to get to a planet from where they are now. No idea how impactful the bug was, but it's fixed now.<br />
** Fixed another exception that could happen in the fallen spire if it was unable to path to a king unit, or had a path shorter than 1 hop to a king planet. Not sure anyone ever hit that, either, but it was also busted.<br />
<br />
== Beta 2.726 Tech Tuning ==<br />
(Released January 30th, 2021)<br />
<br />
* MLRS Turret has been renamed to Fusion Turret.<br />
** This was in the Fusion tech already, while MLRS Corvettes are in Splash.<br />
** To make this fit better, the range of the fusion turret has been increased a small bit, the damage doubled, shot count halved from 10 to 5, and it now does 80% damage through personal shields.<br />
** New description: Built for hitting small groups of ships or structures, ideally those that are large and shielded. Strikes past personal shields to do direct hull damage.<br />
** Thanks to Chthonic One for suggesting.<br />
<br />
* Problem is, in DLC1 we already had a Fusion Turret, but that was not actually firing through shields, which is what fusion damage is. So that was already kind of mis-named.<br />
** This turret is now called the Dispersion Turret (after its Disperser Bolt weapon).<br />
** This turret already does a lot more damage to ships with personal shields, but does not cut through them at all.<br />
<br />
* Revised some of the code around getting the tooltip text for ships/structures to use bitwise flags rather than a simple enum. This lets us make more complicated requests to it for various purposes.<br />
** When you are going to hack something to get a ship line, and that hack would cost you AIP (as with an FRS), the tooltip for each option now shows you the AIP cost that you would incur.<br />
** Previously, the only way to see this AIP cost was on the tooltip for the structure you would be hacking!<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* The warning notification at the top of the screen for the devourer golem(s) now actually shows the text "devourer golem" directly on it.<br />
<br />
=== More Tech Name Tweaks ===<br />
<br />
* After discussion on our new naming_and_balance section on our discord (https://discord.gg/snQBW4g9Gr), the following further changes are being made to tech names:<br />
** Atomic/Fusion tech is being renamed again, this time to Breakers.<br />
*** Reasoning: the name fusion was not liked because it implied all were fusion weapons, which they were not. The name atomic was a bit on the unclear end for various reasons, and just felt thematically off. Breakers as a concept actually describes what these ships do.<br />
*** Revised description: Breaker ships tend to be very powerful for whatever their size is, but can be expensive. Many of the tanks and bombers are in this category. Many, but definitely not all, breaker ships are able to bypass personal shields of targets and hit hulls directly. Their overall theme is smashing large or shielded targets.<br />
** Disruptive/Contravention is being renamed to Exploitative (only downside is that this seems pretty similar visually to Exotic).<br />
*** Reasoning: both of the old names were a bit on the odd or generic side. These ships overall are about countering other ships, but another way to look at it is that they are built around exploiting weakness of other ships in unusual ways.<br />
*** Revised description: Exploitative ships vary a lot, but all counter something. Some counter very low-armor ships, others counter very high-armor targets. Others use weapon jamming or tractor beams to prevent enemies from acting. They are all about exploiting unusual weaknesses.<br />
** The Raid/Blitz tech has been renamed back to Raid.<br />
*** Reasoning: this is clear, visually distinct as a word in the list of other techs, and does not have any unfortunate historical connotations.<br />
** The Generalist tech has been renamed to Mainline.<br />
*** Revised description: Mainline ships tend to be all-rounders that are for the 'line of battle' or for screening purposes. These tend to be an excellent backbone for a powerful fleet, anchoring it with solid firepower and reasonable defenses.<br />
*** Reasoning: these are either screening ships or "ship of the line" or "wall of battle" or "line of battle" ships. We could have just gone with "Line" instead of "Mainline," but then talking about "ship lines" would become an Abbott and Costello sketch. Generalist was so vague and boring that it was hard for anyone to follow.<br />
** Splash/Area of Effect ships have been returned to the name Splash.<br />
*** Reasoning: splash is clear enough, visually distinct, and single-word. Area of Effect is too long for many places it would be shown, and the acroynm AOE is potentially confusing.<br />
*** Revised description: Splash ships are usually meant for crowd control, or hitting lots of targets in either a focused beam or area of effect. This might be shrapnel damage in an area that shreds low-armor targets, or it might be massive electrical discharges with various effects.<br />
** Mobile Orbital Fortifications have been renamed to Mobile Fort, because the other name fit in no windows.<br />
** Thanks to Captain, Tim_Fragmagnet, Rifi, cml, tadrinth, CRCGamer, CRZgatecrusher, Zdrgn, Ozone, Isiel, DEMOCRACY? DEMOCRACY!, and -NR-SirLimbo for weighing in on this round. We expect there might be a few more rounds in the short term as people get a feel for this.<br />
<br />
* Techs are now sorted by their display name instead of their "internal name" so that we're sure that they are always alphabetical when name changes happen in a subcategory of them.<br />
<br />
=== Mod Updates ===<br />
<br />
* CRZgatecrusher's "The Reprocessers" mod updated to make targeting homeworlds super unlikely)<br />
<br />
* More System Defenders v1.20 by CRCGamer now included:<br />
** Most recent changes:<br />
*** Station-Keeping ships have had their techs remapped to match the changes with base station keeping ships of being Station-Keeping mono-tech.<br />
*** Artillery Cruisers can be found in the wild rarely. You are allowed a pair of them at economic and military commands (so swaps don't suddenly eat 900K metal)<br />
*** Flypaper Frigates are only found in the wild and are no longer provided immediately due to the nature of station-keeping ships being mono-tech.<br />
*** The Gorgon frigates have been removed from the economic command as a default and moved to military. They can still be found in the wild to unlock for all.<br />
*** Cruise Missile Battery paralysis weapon timer reduced to 17 seconds from 30 to match AI version. Frankly the uptime on the CC was too poor.<br />
*** Augmented Artillery Cruiser AIP cost from FRS reduced to 30 from 50 since most fleet ships now don't use shields (and they buff shields).<br />
*** Several ships AOE radius improved by 100-200 to more reliably hit full target allotment.<br />
<br />
== Beta 2.725 Techs, Metal, Energy And Ceasefires ==<br />
(Released January 29th, 2021)<br />
<br />
* Fixed a divide by zero exception that could happen in Helper_SendExoGalacticAttack_SingleExoTarget() when no units were actually being deployed.<br />
** Thanks to ussdefiant60 for reporting.<br />
<br />
* If an exception happens when checking for whether an order is valid or not on a multiplayer client, it will just assume the order is invalid and get on with things without throwing an exception. If it happens on a host or in single-player, it will now give a bit more information before doing the same.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
=== Limiting Coprocessors ===<br />
<br />
* Coprocessors are a form of AIP reduction that reward you for destroying all of them, but penalize you in the short term if you only do some of them.<br />
** These give a bit too much power in terms of AIP reduction in average games with only a single AI. The original balance of these was really more based around AIWC, where there were always two AIs.<br />
** Starting with new games in this build, Coprocessors will only seed if there are at least two AI factions that are hostile to the first player (and, continuing with rules from the last while, also only seed if there are 3 or fewer human empires in a multiplayer game).<br />
<br />
=== Metal Storage Improvements ===<br />
<br />
* Added a new added_metal_storage_per_mark_level, which lets us give more metal storage to higher-mark versions of ships that give you metal storage.<br />
<br />
* Home command stations continue to give 2.5m base metal storage, but now give 500k extra metal storage per mark they are upgraded.<br />
** All other command station types used to give a flat 300k metal storage, but that's no longer the case.<br />
** Economic now gives 300k, plus 100k extra per mark level.<br />
** Logistical now gives 600k of storage, plus 300k extra per mark level.<br />
** Military now gives only 50k of storage, and another 50k per mark level.<br />
** The spire mining facility in DLC1 continues to grant its base 1m extra metal storage, but now also gives an extra 100k per mark level upgraded.<br />
** Also!? The added metal storage amounts are now actually shown in tooltips for the first time.<br />
<br />
=== Brownout Refinements ===<br />
<br />
* The mechanics of brownouts has been made a lot more flexible, to avoid some of the "temporary accidental" situations that people were running into.<br />
** Previously, brownouts would start immediately as soon as you had a negative energy balance, and they would last for 60 seconds after power was restored.<br />
** Now you can run up to a -50k energy deficit with no ill effects.<br />
** Additionally, you have to run below -50k energy for at least 10 seconds straight before a brownout begins.<br />
** THAT said, it now will last for 2 minutes rather than 1 minute after you restore power to at least -50k.<br />
** We may need to explore more warnings to players during the 10-second period if they have gotten into the situation of being about-to-brownout, but it may not be an issue since most things that "put people over by a little" will still put them over by less than 50k. So that would prevent further building, and let people realize they need to build more energy.<br />
*** In the event of a sudden dramatic energy loss, such as a command station, it's very likely that a brownout is unavoidable without deleting a ton of turrets and such, and we don't really want to give people a warning too much with this case. We're trying to avoid fluctuations causing forcefield outages, not an early warning system for players to pause and delete stuff after they lose a command station. Some will use it that way, which is probably fine, but let's see how this does.<br />
<br />
=== Ceasefire Mechanics ===<br />
<br />
* Added a new ability for ships: prevents_all_weapons_fire_on_planet="true"<br />
** CEASEFIRE: Prevents all units from firing weapons while it is on a planet with them.<br />
** This ability has been granted to the Zenith Trader.<br />
** Expect to see some more of this with a new unit in DLC2, as well!<br />
** Thanks to Leif, Tim_Fragmagnet, StarKelp, Chthonic_One, Kendrickorium, and Isiel for the discussion that led to this.<br />
<br />
* A notification at the top of the screen is shown if a planet is under a ceasefire, and either 1) you have ships there, or; 2) you or another human player own the planet.<br />
<br />
=== Tech And Metal/Energy Income Updates ===<br />
<br />
* There is now a description field on techs, which lets us give explanations about them.<br />
<br />
* The Metal Generation tech has had its per-unlock cost reduced from 4k for each of three levels to instead 3k for each of three levels.<br />
** It also now has the following description:<br />
*** Early on, consider directly upgrading your home command station fleet (from the fleet sidebar tab) for stronger gains. The metal generation tech is more effective when you have a lot of planets.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Previously, Metal Harvesters gave 60 metal per second at mark 1, plus 30 per mark as they went up in levels.<br />
** They now give 75 and 50, respectively.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Command: Economic tech new description:<br />
** Useful when you have a lot of this kind of command station. Alternatively, consider investing directly in the fleet of each planet (fleet sidebar), since that also upgrades metal harvesters and turrets located there. This tech improves ALL of your economic command stations, primarily with more metal and energy and a bit of extra sturdines.<br />
** Costs adjusted down from 4k each for the first 3 mark levels, to 3k each instead. Fourth mark level remains 4k.<br />
** Thanks to zeus for helping figure out what to say here.<br />
<br />
* Command: Military tech new description:<br />
** Useful when you have a lot of this kind of command station. Alternatively, consider investing directly in the fleet of each planet (fleet sidebar), since that also upgrades metal harvesters and turrets located there. This tech improves ALL of your military command stations, primarily with more attack strength and hull health.<br />
** Costs left alone for now.<br />
** Thanks to zeus for helping figure out what to say here.<br />
<br />
* Command: Logistical tech new description:<br />
** Useful when you have a lot of this kind of command station. Alternatively, consider investing directly in the fleet of each planet (fleet sidebar), since that also upgrades metal harvesters and turrets located there. This tech improves ALL of your logistical command stations, with a mix of economic and military benefits.<br />
** Costs cut in half to 1.5k science for the first two marks, and left the same at 3k for the next two after that.<br />
** Thanks to zeus for helping figure out what to say here.<br />
<br />
* Metal generated by economic command stations moved from 250 base and +100 per mark to being 250 base and +200 per mark.<br />
** Energy generated by economic command moved from 400k base and +100k per mark to being 400k base and +200k per mark.<br />
<br />
* Metal generated by military command stations moved from 20 base and +20 per mark to being 60 base and +40 per mark.<br />
** Energy generated by military command stations adjusted up from 20k base and +5k per mark level to 40k base and +20k per mark level.<br />
<br />
* Metal generated by logistical command stations moved from 60 base and +20 per mark to being 120 base and +80 per mark.<br />
** Energy generated by logistical command stations adjusted up from 200k base and +50k per mark level to 250k base and +100k per mark level.<br />
<br />
* Science and hacking points of logistical command stations is now 10 per second rather than 2 per second like the other command stations.<br />
** You still get the same amount, but you get it faster now. This makes logistical a better choice for a place you don't plan to keep long.<br />
<br />
* The "Citadels" tech has been renamed Mobile Orbital Fortifications, and now applies to Battlestations again (not just Citadels).<br />
** Thanks to "Z" for suggesting the name, and ArnaudB and loads of other people for suggesting that battlestations get this again.<br />
** New description: Upgrades any battlestations or citadels you may have or acquire. These structures allow you to build extra defensive turrets, mines, etc on either your own planets or as a 'beachhead' on enemy planets.<br />
<br />
* The "Forcefields" tech has been given the following description:<br />
** Upgrades all bubble forcefields that you are able to build at your various command stations. Also improves mobile bubble forcefield generators (Forcefield Frigates, etc).<br />
** Thanks to Z for suggesting.<br />
<br />
* New Minefields tech description:<br />
** Minefields are constructed by either command stations, battlestations, or citadels. They are not super common, so you may only want to invest once you are sure you are going to have them.<br />
<br />
* The "Sentries" tech has been renamed to "Station-Keepers"<br />
** The Station-Keeping Assault Frigate and the Station-Keeping Watchman Frigate both now benefit from the Station-Keepers tech instead of other random techs. The Sentry Frigate already used this tech.<br />
** Alien station-keepers that you can capture for now do not use this tech. For station-keepers added in mods, they may or may not use this tech (that's up to the modder). But our intent would usually be that they do at least partially.<br />
** New description for this tech: Station-Keepers are typically mobile frigates that are bound to the gravity well of a particular planet. They are there to help defend a command station as part of its fleet.<br />
<br />
* Renamed the "Metal Generation" tech to "Orbital Mining," since it is not remotely the only way to get metal.<br />
** Added this to its description: This upgrades the efficiency of a few structures on your home planet, and of all the metal harvesters you build on every planet, but that's all.<br />
** Thanks to Z for ideas on this.<br />
<br />
* New description for Engineering: Upgrades the effectiveness and durability of the engineers that you can build from command station or from certain mobile factories.<br />
** Thanks to Z for ideas on this.<br />
<br />
* The Ambush weapon tech has been renamed to Opportunist.<br />
** New description: Opportunist ships are largely characterized by temporal exploits. Things like 'Bonus damage to units that have been on planet X seconds.' Overall these ships take advantage of the environment in some way. They also include things like sniper units that use the speed of enemies against them.<br />
** Thanks to ArnaudB, Z, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Concussion weapon tech has been renamed to Artillery.<br />
** New description: Artillery ships generally fire concussive shaped charges, generally over medium-to-long distances. Most of the units are siege-oriented, and they often specialize in killing low-armor targets. A number of them also employ knockback, which can keep smaller enemies from returning fire.<br />
** Thanks to ArnaudB, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Disruptive weapon tech has been renamed to Contravention.<br />
** New descripion: Contravention ships vary a lot, but all counter something. Some counter very low-armor ships, others counter very high-armor targets. Others use weapon jamming or tractor beams to prevent enemies from acting.<br />
** Thanks to ArnaudB, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Fusion weapon tech has been renamed to Atomic.<br />
** New descripion: Atomic ships tend to be very powerful for whatever their size is. Many of the tanks and bombers are in this category. Many, but definitely not all, atomic ships are able to bypass personal shields of targets and hit hulls directly.<br />
** Thanks to ArnaudB, Z, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Generalist weapon tech is keeping its name, and has this new unhappy description:<br />
** Generalist ships tend to be all-rounders that are not overly good at any particular task. These tend to be an excellent backbone for a powerful fleet, anchoring it with solid firepower and reasonable defenses.<br />
<br />
* The Melee weapon tech has been renamed to Close Quarters.<br />
** New descripion: Close Quarters ships include all of the melee-ranged ships that are focused on very quickly reaching targets and either exploding them or slicing into them. But it also includes a variety of very short-range dangerous turrets and other units that focus on point defense.<br />
** Thanks to Ath, Z, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Raid weapon tech has been renamed to Blitz.<br />
** New descripion: Blitz ships usually trade hull integrity for speed and attack power. These are not the units you want to use in a stand-up fight, but they're great for raiding and for hit-and-run attacks. When it comes to turrets, most of them are cheap and lightly defended for their size, but quick to build and pack a punch.<br />
** Thanks to ArnaudB, Z, Zeus, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Splash weapon tech has been renamed to Area Of Effect.<br />
** New descripion: Area Of Effect ships are usually meant for crowd control, or hitting lots of targets in some fashion. This might be shrapnel damage in an area that shreds low-armor targets, or it might be massive electrical discharges with various effects.<br />
** Thanks to Z for the discussion that hashed this out.<br />
<br />
* The Subterfuge weapon tech now has this description:<br />
** New descripion: Subterfuge ships are often cloaked, but not always. Many of them apply debuffs, such as temporarily disabling engines. A few are giant-killers, focusing devastating blows on big targets.<br />
** Thanks to ArnaudB, Ath, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Technologist weapon tech has been renamed to Exotic.<br />
** New descripion: But they include gems like parasites (for taking over enemy ships) and stingrays (for specially targeting bubble forcefields). Overall these involve a lot of electronic warfare.<br />
** Thanks to ArnaudB, Z, Ath, and Kahuna for the discussion that hashed this out.<br />
<br />
* The Light hull tech now has this description:<br />
** Light ships come in all sizes and capabilities, but tend to have low amounts of armor. This isn't a problem except when up against enemies that use weaponry that specifically targets that low armor.<br />
<br />
* The Medium hull tech now has this description:<br />
** Medium ships come in all sizes and capabilities, but tend to have midlevel amounts of armor. There are fewer of these, but they are less likely to be the target of bonuses against either high or low armor ratings.<br />
** Additionally, its cost has gone down from 7k and 10k to 5k and 8k.<br />
<br />
* The Heavy hull tech now has this description:<br />
** Heavy ships come in all sizes and capabilities, but tend to have large to VERY large amounts of armor. High amounts of armor does not confer any natural bonuses, but tends to coincide with high amounts of hull health. There are some specialist high-armor-killer units out there, but beyond that fewer ships get bonuses against them.<br />
<br />
* The Turret hull tech now has this description:<br />
** Turrets are guns that nobody bothered to strap an engine to. They're typically built by your command stations, battlestations, or citadels. Usually in friendly territory, but you can also use them in offensive beachheads.<br />
<br />
=== Mod Updates ===<br />
<br />
* Made Kaizers Marauders compatible with Vanilla, no longer requiring DLC 1, and removed its requirement:<br />
** The CostBasedShipSpawner inside AMU now no longer throws an error but quietly remarks in the debug log if there's no ships for a tag (such as for example spire-raiders).<br />
** Fixed an exception inside the Kaizers Marauders Stage 2 logic where it was always trying to read the starting spire debris even though without DLC 1 the setting does not exist.<br />
<br />
* AMU Prototypes:<br />
** Created multiple generalized GameEntity prototypes within AMU for: Strike Craft, Frigates, Other large non-stackable ships, Drones, Drone Projectiles, Small/Med/Big turrets.<br />
** Both Kaizers Marauders and Extended Ship Variants now use these. This will do very little (hopefully) but now makes a good attempt at "sorting out" targeting and protection priorities, collision priorities, drones not aggroing Guard Posts, Drone Projectiles not being swappable and a few other little things.<br />
** It will also speed up any further mod development and cut down on redundant work (including modding upkeep if things change or balance is adjusted), and can do so for any other modder potentially working with AMU.<br />
<br />
* More System Defenders has been updated by CRCGamer in order to move the Station-Keepers over to that Station-Keeping tech.<br />
<br />
* "Cosmetic" mods have been a misnomer for a while, and are now called "Save Safe" mods.<br />
** Essentially these are invisible to savegames whether they are on or not, but they may change more than cosmetic items.<br />
** The file ModIsConsideredCosmetic.txt can still be used, but ModIsSaveSafe.txt is the new standard. We'll continue triggering the appropriate flag from either.<br />
** Thanks to Puppet Master for suggesting.<br />
<br />
== Beta 2.724 Mod Bonanza ==<br />
(Released January 28th, 2021)<br />
<br />
* When waves are launched, they can come from a variety of sources and target a variety of other factions. In the prior build, it was trying to throw all of these into the relentless wave ai faction, but that's not actually correct.<br />
** In the case of something like the AI Reserves launching a wave, they should own their own ships that they launch at (presumably) you. Fixed.<br />
*** Thanks to zdrgn for reporting the exception that this was causing.<br />
** Additionally, when an AI actually IS launching a wave, but it's targeting some NPC faction (another AI in a civil war, a marauder faction, whatever), it no longer uses the AI faction or the relentless wave faction -- instead, it just feeds these new units directly into the AI's hunter fleet, targeted at that NPC faction. This makes them the most effective, and skips a few steps that could be error-prone and maybe see these ships come after you instead, etc.<br />
*** Thanks to Badger for suggesting this part.<br />
<br />
* A surprising number of areas of faction code in particular would report fatal errors into the log, but not actually to the screen. This would often lead to you not knowing there was an error, and probably having laggy performance from all the silent logging. Now we'll all know what is happening and we can fix the root problems when they come up.<br />
<br />
* In the event that the game has had some critical failures previously, it's possible that UpdateAllVisuals() will also give you some errors. Now it gives better errors, and is in general less likely to give errors in the first place.<br />
** Thanks to Kendrickorium for the report.<br />
<br />
=== Settings Menu Improvements ===<br />
<br />
* The performance section of the settings menu has been updated to have a variety of subcategories that make it easier to visually parse and find what you need.<br />
** Same for the Game section of the settings menu.<br />
<br />
* Rather than the Display category automatically entirely going to the graphics settings file, there is now a new is_stored_in_graphics_settings_file="true" that is set that causes those settings to go there.<br />
** That allows us to add other things to the display category that might not have the same relevance.<br />
<br />
* In the past, we had categories on settings that were simply defined as part of the setting. Now we explicitly define categories and even optional subcategories for settings.<br />
** The explicit categories allows us to make new categories that are empty of traditional settings, such as having expansions and mods show up as their own sections on the sidebar.<br />
** The subcategories allows us to visually organize really long sections of settings if we need to. Things like the debug window can otherwise just get plain overwhelming.<br />
<br />
* The settings menu has in general gone through a bit of a redesign:<br />
** The HUD and Tooltips categories have been made subcategories of display.<br />
** There is one overall Camera category, with the "all cameras," "main camera" and "galaxy camera" bits as subsections.<br />
** The networking tab now has a subsection for the "Your IP Address Information" so that is more clear what it is about.<br />
** Kaizer's Marauders now implements a new mod-specific subcategory of the otherwise-invisible Custom sidebar category, which lets it appear without being in a strange position. Other mods can also easily do this.<br />
<br />
* Mod descriptions can now only show 1000 characters in a tooltip. Beyond that, it cuts off with an ellipsis and gives a "read more" button over to the right of the mod's normal buttons. You can then click that for a full popup screen that lets the mod author write however much they want.<br />
** Thanks to Puppet Master for suggesting, and NR SirLimbo in particular for making it needed. ;)<br />
<br />
* The automation and audio sections of the settings menu now have subsections.<br />
** Wow this makes things so much easier to find!<br />
** Additionally, the warning triggers have been moved into the Game section under warnings, so all of that is in one place.<br />
<br />
* The display section of the settings menu has been substantially subsectioned, and its hud and tooltips sections now have more sensible subsections as well.<br />
** The show random AI types has also moved to the game section, rather than being in the HUD section.<br />
<br />
* The camera section of the settings is further split up so that you can find options in there.<br />
** A few options for the galaxy map camera that are really mostly about color grading have been moved to that new subsection of the display section.<br />
** Here again, the increase in clarity is just astounding.<br />
<br />
* Most of the networking section has been split out to be part of the debug menu, since that's really what most of that is.<br />
** The debug menu has then been broken into a ton of subsections by function, so that we can actually find things in there!<br />
<br />
* Whenever you open the settings menu, if there are more categories than can be displayed without scrollbars, it scrolls back to the top of the category list rather than leaving it wherever you last left it.<br />
<br />
* Whenever you change categories in the settings menu, it now scrolls the main content part of the window back to the top rather than leaving it wherever you last left it.<br />
<br />
=== Mod Integration Improvements And Related ===<br />
<br />
* The Expansions and Mods now each have their own category in settings, which has a count of how many of them you have enabled out of how many in total there are.<br />
*** Thanks to Isiel for suggesting.<br />
<br />
* Clarified Civilian Industry tooltip to say "No expansions required" rather than "Requires no expansions."<br />
<br />
* Mods can now declare that they have prerequisites in the form of other mods or expansions.<br />
** These are done by listing the other mods in a RequiredMods.txt file, one line at a time, or expansions in a RequiredExpansions.txt file, one at a time.<br />
** With these present, the case where a player enables a mod but not its prerequisites is now impossible (that caused all sorts of exceptions and confusion).<br />
*** In the case of expansions, the game will not enable those because of a mod's request, but it will inform the player of all the mods that could not be enabled because of what expansions were missing or disabled.<br />
*** In the case of mods, if the prerequisite mods are present and can themselves be enabled, then it will just auto-enable them for you.<br />
**** In the case of a prerequisite mode that can't be found or can't be enabled, it just tells the player about that.<br />
** This whole process allows for prerequisites up to 30 deep, which would be an insane amount, and beyond that it won't auto-enable things for you because it assumes (probably correctly) that somebody set up circular references (two mods that both depend on each other in order to turn on). In the case of circular references, those can still be enabled manually.<br />
** An example use case of this is that if you enable Kaizer's Marauders but not AMU, it used to error out mysteriously with very funky errors. Now it instead will just turn on AMU.<br />
** Another example use case is that if you don't have DLC1 installed or enabled, but you turn on Spire Railgun Shop, then it would do another set of funky and unclear errors. Now it just turns Spire Railgun Shop off and tells you why.<br />
<br />
* Mods that we distribute has been updated as follows:<br />
** Kaizer's Marauders now explicitly requires DLC1 and AMU.<br />
** MacrophageHistiocytesSpireIntegration now explicitly requires DLC1 and MacrophageHistiocytes.<br />
*** It's possible that this could be re-coded to just be a part of the MacrophageHistiocytes mod that turns on and off, like what happened with MoreSystemDefenders and similar, but for now this is fine.<br />
** SpireRailgunShop now explicitly requires DLC1.<br />
<br />
* Fixed a bug where we were doing the clear method of SpecialFactionData AFTER we had disabled a mod or expansion and right before a reload, which meant that they couldn't find their code and thus generated an error if they had custom code. The error was harmless but confusing, and sets a bad precedent of people ignoring errors that are not actually harmless.<br />
** Anyhow, now this all works properly, and we also have some added debugging info in place to find things like this in the future. But so far this works just fine. This was affecting both Kaizer's Marauders when they are disabled, and Civilian Industries when they were disabled.<br />
<br />
* It is now possible to designate mods as being "framework mods" by giving them a ModIsConsideredFramework.txt file.<br />
** This basically lets us get them out of the main category of mods so that players aren't scrolling past them in confusion and wondering what functionality they give (aka, no function -- they are just used by other mods, and other mods will turn them on as-needed now).<br />
<br />
* In the mods tab, there are now sub-categories for both cosmetic mods and framework mods.<br />
** We thought about having a separate tab for the cosmetic mods, but at this point that seems like it would make things more difficult rather than less.<br />
<br />
* Fixed a bug where when you hot-reloaded the mods or expansions, it would make for doubling or tripling of the music background track, and also make all the volume progressively more quiet each time. This is because of us reloading the sound root and volume mixer, and that's just incredibly fraught as a thing to do.<br />
** Normally the sound mixer and root themselves are not something that would be modded, but in the event that someone chose to do that, we no longer support hot-reloading those particular things. Whatever the sound root and mixer are at the time the game is launched are the ones that will stay until you restart the program (whether it's a mod version or our main version).<br />
** Again, we really can't think of any possible reason to create a new sound mixer or sound root, since actually doing adjusting the mix is possible without that step, so this is probably entirely moot other than fixing this bug itself.<br />
** Thanks to Tim_Fragmagnet for reporting.<br />
<br />
* If you try to load a savegame that you are missing some expansions and mods for, and you have those expansions and/or mods on your machine but just not enabled, then the game now asks if you want to enable them. It then does a hot-reload, including any prerequisite chains, and you're able to then quickly load the save after that.<br />
** This is particularly helpful for us developers, but really it's handy for anyone who plays with various configurations. Do note that this does not disable any extra expansions or mods you might have installed that the save does not.<br />
** In the event that the save is referencing a mod or expansion that you don't have on your machine, or it's referencing a mod with prerequisites that you are missing, then it will just give you the warning message and fail to load the save like it always has.<br />
** Note that this only works for single-player saves right now, not joining multiplayer games and trying to match the host.<br />
<br />
=== Three New Mods By ArnaudB ===<br />
<br />
* New cosmetic mod by ArnaudB: Raising The Floor: Multi AIs Adjustment<br />
** Fighting multiple AIs at the same time is a daunting challenge, often spoiled by the immense increase of threat once a single AI Homeworld dies, even when there are multiple others AIs around to lessen the importance of such a deed.<br />
** This mod causes the AI Overlord to reduce AIP by 200 when killed, with the total AIP gained from killing an AI Homeworld raised from 170 to 220. The reason behind this effective 20 AIP increase is to make the AIP Floor rise. <br />
** The remaining AIs 'forget' some of what you have done with the loss of one of their own, but they are less inclined to underestimate you.<br />
** The driving force behind this mod is the uninteresting dynamic forced by the current meta. With vanilla settings it's always better to clear the paths to all AI Homeworlds, then smash them in a row in a grinding match that seems to last forever.<br />
** With this change, the player is heavily incentivized to remove AIs progressively over the course of a game. The AIP floor will increase a lot, forcing a progressive heightening of the forces in the galaxy, but without the excessive and sudden all-out war that is the vanilla experience.<br />
** This has effectively no impact on games with a single AI. You do get more AIP when killing the first phase of the Overlord, but at this point you are so close to finishing the game that 25 more AIP from killing it won't do anything. You still get the AIP reduction when you win... but you have already won.<br />
** Enjoy your multi-AIs games and don't hesitate to give feedback!<br />
** (This doesn't disable achievements)<br />
<br />
* New cosmetic mod by ArnaudB: Speedy Citadels<br />
** Increase the speed of citadels to 600, the same as battlestations. You can now mix them and clean up your controls group.<br />
<br />
* New cosmetic mod by ArnaudB: Supercharge Raid<br />
** Add supercharge back to raider and their variants.<br />
<br />
=== The Reprocessers mod by CRZgatecrusher ===<br />
<br />
* New mod by CRZgatecrusher: The Reprocessers<br />
** The Reprocessers are a faction that inhabit deep space and occasionally attack places for research purposes. Comes with 4 unique phases:<br />
** Phase 1: spawn special 'bombs' and attempt to obtain metal<br />
** Phase 2: Build up attack. nothing happens in this phase as they are 'organizing' an attack<br />
** Phase 3: Launch the attack. launches an attack whose size is based on the metal obtained. the faction gains research points when it kills things<br />
** Phase 4: Attempt to research things. this is the time the faction attempts to unlock a new unit. returns to phase 1<br />
** T1 units are similar to player units to almost identical<br />
** T2 units are unique and have special features like a lifecycle or actual replication.<br />
<br />
== Beta 2.723 AI Accountant Fired, And Relentless Waves ==<br />
(Released January 26th, 2021)<br />
<br />
* Hunter fleet fireteams can now get a bit larger before making new ones.<br />
** Thanks to Badger for adjusting.<br />
<br />
=== Wave Balance ===<br />
<br />
* Wave adjustments:<br />
** The AIs are more likely to send a couple of different ship types rather than just one monolithic type when they send a wave.<br />
** The AIs are more likely to send guardians with waves.<br />
<br />
* The "wave_power_ratio" field from the AI difficulty level has been removed.<br />
** This was something that was designed to make waves actually hit hard enough to be damaging. Aka, "all waves at difficulty 8 must be at least half as strong as the defending world's power."<br />
** In practice, with really well-defended homeworlds in particular, this was making it so that those would NEVER be attacked, and the AI would be incredibly predictable in that regard, with the new stronger wave balance.<br />
** Given that waves have been so weak as to be basically nonexistent for the last year or more, anything is better than that, and basically it's preferable to have more weaker waves that might interact interestingly with the Hunter rather than occasional apocalyptic waves that come without warning and also feel unfair.<br />
** This is a mechanic that only kicked in on difficulties 6 and up, and you could really see how much more poorly the game played on difficulty 8 in the new stronger-waves style partly because of this. It was a great idea when it was first introduced, but the game meta has moved on.<br />
** HOWEVER, this underlying mechanic is still useful for reconquest waves in particular, where the AI really intends to win a given battle in order to retake a given planet. So we've kept the underlying mechanic for those specific purposes.<br />
<br />
* There is a new "Relentless AI Wave" faction for each AI, which works (for now) exactly like the Tsunami CPA faction does.<br />
** Aka, they attack mercilessly and try to push in more and more on you, and they never get donated over to the Hunter faction.<br />
** In previous versions of the game, for the last year or so at least, the waves were so small and were so ineffectual when it came to against-player waves that the Hunter was not getting fed, anyway.<br />
*** If the new version of the waves winds up feeding the Hunter, then that just makes the Hunter suddenly unbalanced in terms of how hard it is.<br />
** In the new version of the game, we want these stronger waves to be a time-limited thing. They arrive, they try to hurt you (or their other target) very badly, and then they die. They pursue you until death.<br />
*** The hunter, of course, can coordinate with these just fine. And we can refine their behavior over time as needed.<br />
** One thing that is not clear is how well this will work with multiple AIs launching waves at each other (when they are not allied).<br />
** Another thing that is not clear is how well this will work when there is an AI launching a wave against a third party faction like marauders. Reports in the prior build were that the third-party factions just got murdered pretty efficiently and then the AI forces would turn on you.<br />
*** If you have savegames that demonstrate any of these things, if you run into behaviors that seem sub-par, then that would be really helpful.<br />
** It's also possible that some of the CPA Faction Logic itself is going to turn out to be very inappropriate for the relentless waves faction, but we figured it was best to start with a known quantity that is close to what we want and then revise from there.<br />
*** One thing we did take out from the start was any concept of the relentless wave waiting for a time to strike. Since a wave arrives all together, it assumes that it is going to hit immediately.<br />
** So far so good in terms of the relentless AI wave forces spawning out of a wave and then doing what it says on the tin.<br />
<br />
=== Praetorian Guard and Warden Balance ===<br />
<br />
* The budgets for the Warden and Praetorian Guard were fine, but their CAPS have been off since 2.710. They were simply set too low for the AI to ever really field any of them.<br />
** Thanks to Puffin for discovering this!<br />
*** Basically a "cap per AIP" of 22 for the PG at difficulty 5 would mean that at 100 AIP, that means a strength cap of 2,200. In visible-to-players game units, that means... 2.2 strength. Woooow that's a poor PG.<br />
** But just increasing the numbers was not going to go well, because a high "cap per AIP" means that the game gets linearly more difficult as the AIP rises. This is part of the problem we had before. So it's time for SEVERAL new mechanisms.<br />
<br />
* On the PG, we still have praetorian_guard_strength_cap_per_aip, but now we also have praetorian_guard_base_strength_cap.<br />
** We also have a new praetorian_guard_strength_cap_per_aip_above_200, praetorian_guard_strength_cap_per_aip_above_400, and praetorian_guard_strength_cap_per_aip_above_600.<br />
** These numbers let us have the game curve the difficulty up over time in a sub-linear fashion for a while, and then gradually shift to something more than linear (not exponential, though).<br />
<br />
* New PG changes: <br />
** Diff 1: <br />
*** Was per-AIP: 3<br />
*** Now base: 2000, per-AIP: 20, per-AIP-above-200: 10, per-AIP-above-400: 15, per-AIP-above-600: 30.<br />
*** Quick note: these numbers are additive. So at 700 AIP, the formula for calculating the strength cap is as follows:<br />
**** 2000 + ( 20 * 700 ) + ( 10 * (700-200) ) + ( 15 * (700-400) ) + ( 30 * (700-600) ). Aka a total of 28500, or 28.5k of max strength. This is still pathetic, but hey it's difficulty 1. The old number was 2100, or 2.1k of strength, which is nonexistent by comparison.<br />
** Rather than show you all the numbers in this hard to read format, here's a spreadsheet that has the new numbers for the PG and for the Warden, and a comparison to the old numbers: https://docs.google.com/spreadsheets/d/1Oqhe_evrtzDOKyVBfwZq27zVZu6WJw8oaa2CZWxgZyc/edit?usp=sharing<br />
<br />
* In the difficulty tooltips for the warden and the PG, it now shows what the strength cap would be at AIP 100, 300, and 700 to give players an idea of the progression without showing them all the math directly.<br />
<br />
* Thanks to Tim_Fragmagnet, ArnaudB, Puffin, and others on Discord for reporting this.<br />
<br />
== Beta 2.722 AI Wave Balance ==<br />
(Released January 25th, 2021)<br />
<br />
* Updated the Makeshift Turret description to hopefully be more clear.<br />
<br />
* Fixed the range and damage boni from having more units on the planet (i.e. Scourge Peltians) not factoring in ships from stacks.<br />
** Thanks to NR SirLimbo for catching and fixing this one!<br />
<br />
* Prevent players from going negative on hacking points. Should a player hit 0 or fewer hacking points, all active hacks are stopped immediately and display a chat message advising of the failure. This counts as a failed hack.<br />
** Thanks to Dominus Arbitrationis for fixing.<br />
<br />
* Re-coded how the raycasts to hit planets and icons on the galaxy map works. It now does a non-allocating "hit all" raycast, rather than only hitting the first item.<br />
** In this new code path, it first tries to find a ship icon that is enabled and linked to an actual ship. If it does, then it hovers over that.<br />
*** Our suspicion is that in the past, it was hitting some of these, but they were actually disabled or not linked to a ship for some reason, and so you'd get just blankness. This should no longer be possible.<br />
** If if doesn't find any ship icon that is valid where your cursor is, then it looks for planets. Assuming that your cursor is over a planet at all, then even if there's a partially-enabled icon, that won't matter.<br />
*** Additionally, if there's a collider somehow in the way for the link between two planets, it doesn't matter since it isn't even checking for that yet, and won't do so unless it finds you are not over a planet itself. That was something that was getting in our way in the past, and while we thought we fixed all those cases, hopefully none of them will be possible as a problem now (even in edge cases).<br />
** If we still have found nothing (we're not over an icon or a planet), then it looks for the link between planets to see if you are hovering over them.<br />
*** Knock on wood, this should solve all the strange edge cases of planets not being clickable but still showing the planet name when you hover over them, etc. Those cases were increasingly rare in general, but hopefully this gets the last of them.<br />
** Thanks to Chthon and NR SirLimbo for reporting the most recent cases.<br />
<br />
=== AI Waves Work And Extra Forcefields For Player Homes ===<br />
<br />
* Wave Warnings of Short, Medium (default), and Long have been changed from 60, 180, and 300 to 60, 120, and 180.<br />
<br />
* Previously, waves could be declared on a really long interval, AND the wave itself was set to only arrive after a super long time. So it might be a 10 minute interval, and then another 10 minutes before the wave hits after it was calculated, and then give you a 5-minute warning.<br />
** This has been adjusted so that waves never have an underlying time difference of more than 3 minutes from when they are targeted and when they arrive. This makes it far more likely that the wave target is in remotely the state the AI was thinking it was when it sent the wave in the first place.<br />
<br />
* (Revised in a minute) A new wave_budget_multiplier has been added to the AI Difficulty table, and this gives a free boost to the income of waves for any AI type just by difficulty.<br />
** Please remember that we've just given the players a TON of free buffs, especially in the early game, so this is in a lot of ways us trying to compensate for that.<br />
** The other thing to bear in mind is that players have been talking about how slow it is for waves to come and bother them, and therefore how much less a factor defending against waves is in general in this game compared to classic.<br />
** For difficulties 1-2, the multiplier is 1, so no change.<br />
** Difficulty 3: 1.1x<br />
** Difficulty 3: 1.1x<br />
** Difficulty 4: 1.3x<br />
** Difficulty 5: 2x<br />
** Difficulty 6: 2.5x<br />
** Difficulty 7: 3.5x<br />
** Difficulty 8: 4.5x<br />
** Difficulty 9 and 10: 5.5x<br />
** In the grand scheme of things, these are not extreme changes; potentially we need to give even more of a boost to wave budgets to make them truly interesting.<br />
*** As it stands right now, testing on difficulty 5, an Ensemble AI gives us a 3 strength wave at 11 minutes into the game, against a planet with 5 strength in mobile forces, 22 strength in turrets, and 7 more mobile strength rampaging nearby -- plus 16k unspent science, so those strength numbers really could be 10x higher than this first test and still be woefully underpowered.<br />
*** On the plus side, the wave was at least coming after only 11 minutes, and only with a 2 minute warning, so there is some mild urgency there.<br />
*** That said, taking a moment to just spend the basic science that we had on hand from that scenario -- and bearing in mind a ton of turrets have not been bothered to be built, and there's 1.4 million metal just sitting there -- we transform our defensive forces into 82 strength of turrets, with 5 strength mobile and another 16 strength one planet away. Difficulty 5 is not supposed to be overwhelming, but this is just absolutely underwhelming to a crazy degree. 3 strength versus a "casual" force over 30x as strong. It's safe to say that waves are still not a factor at all in this.<br />
<br />
* (Revised in a minute) So, let's adjust those numbers some more:<br />
** Difficulty 1: 1x<br />
** Difficulty 2: 2x<br />
** Difficulty 3: 3x<br />
** Difficulty 4: 5x<br />
** Difficulty 5: 10x<br />
** Difficulty 6: 20x<br />
** Difficulty 7: 40x<br />
** Difficulty 8: 80x<br />
** Difficulty 9 and 10: 140x<br />
** One reason it's worth noting that wave budgets need to be inflated so much is that, unlike reinforcement budgets, they are not duplicated by planet.<br />
*** The reinforcement budget of X will be applied to something like 10-20 planets, and much more frequently over time. So in a lot of very real respects, we have always been shorting waves by a factor of 10 or more in terms of what you would think the AI gets.<br />
** Okay, testing this again on difficulty 5, at this point I'm getting a 16 strength wave hitting me at 11 minutes. I built more turrets this time, so even without upgrading a single tech, I have 33 strength waiting for them. Three quick upgrades later, still 10k science in the bank and 1.5 million spare metal again, and now I've got 73 strength in turrets waiting for them. I happened to bring my main offensive force home, which was a measly 12 strength since they had no upgrades yet, and the invaders were repulsed without me losing a single turret. But it was at least a fight that took a few moments.<br />
*** This is at difficulty 5, which is not supposed to be particularly hard, so that seems fair enough. Let's see what difficulty 8 looks like with this. That gives us... 596 strength incoming. Hilarious. I'm going to die with no question. There are multiple dials here, and clearly they just exponentially increased. 1/8th of that (the equivalent of a multiplier of 10 line difficulty 5 had) would still have been a strength of 74.5, which is... more intense than the first wave feels like it should be.<br />
<br />
* (Revised in a minute) So, let's redo those numbers from difficulty 6 on up:<br />
** Difficulty 6: 10x<br />
** Difficulty 7: 8x<br />
** Difficulty 8: 5x<br />
** Difficulty 9 and 10: 3x<br />
** Yes, the higher difficulties get less of a boost, but they also clearly needed less of one. This keeps the AI from being so ridiculously pathetic on the lower difficulties, and hopefully keeps them from being monstrous at higher.<br />
** Let's test out difficulty 8 again. This time I ran into more trouble, because the first planet I tried to attack put up a pretty good fight. I upgraded two techs twice, and so had 79 turret strength easily, and 23 mobile strength. The AI had time to reinforce its first planet, AND the hunter showed up with 20 strength, so it bled me dry for a bit before I neutralized the planet and the hunter ran off. It took much longer for the AI to decide to send a wave, but at 21 minutes and 15 seconds in, it decided to send a 69-strength wave at my homeworld. With 2 minutes of warning and my ships in shambles from my offensive efforts, this was a tough battle. Granted, I had 8.5k extra science just sitting there, but I also had the bad luck that the incoming wave was mostly bombers. I quickly knocked them down to 38 strength, but they took out my home command station while I still had 75 strength sitting around on that planet. I need more defense in depth, but beyond that I would have probably been fine.<br />
<br />
* So, let's down this just a hair more from 6 on up:<br />
** Difficulty 6: 8x<br />
** Difficulty 7: 6x<br />
** Difficulty 8: 4x<br />
** Difficulty 9 and 10: 2.5x<br />
<br />
* Also? Let's adjust some forcefield counts for players, because losing like that when you have a small planet is no fun:<br />
** Player home forcefield count: from 1x to 2x at mark 1 for players, and then +1 for each of the next two mark levels just like before.<br />
** A lot of players would not know to invest directly into their homeworld like this, but at difficulty 8 and 9 that being a needed thing seems like an okay situation.<br />
<br />
* (Discarded in a minute) What on earth is this going to do to the meta on higher marks? That's hard to say. One thing that is certain is that the general mark level increases are something that players really fear.<br />
** Given that players have almost no mark 1 ships now (most of the time), it seems like giving the AI some more buffs here might be worthwhile.<br />
** Difficulty 5: all mark level thresholds move down a mark (so 120 AIP means mark 3, not mark 2), and mark 2 now comes at 60 AIP.<br />
** Difficulty 6: all mark level thresholds move down a mark, and mark 2 now comes at 55 AIP.<br />
** Difficulty 7: all mark level thresholds move down a mark, and mark 2 now comes at 5 AIP (yes, 5 -- so there's no early-game incentive to avoid taking a planet until the first wave arrives).<br />
** Difficulty 8: all mark level thresholds move down a mark, and mark 2 now comes at 5 AIP.<br />
** Difficulty 9: all mark level thresholds move down a mark, and mark 2 now comes at 5 AIP.<br />
** Difficulty 10: all mark level thresholds move down a mark, and mark 2 now comes at 5 AIP.<br />
** Let's see how we fare on difficulty 8 NOW. Six minutes in and I am playing for real, with 5k science in reserve but 3 overlapping home shields up, 92 turret strength sitting ready to eat my enemies on that homeworld, and a hard-won first planet from the AI but still a victory. At 17 minutes in, I have a second planet and it has 27 in turret strength while my home planet now has 165 in turret strength. I have 23 mobile strength between them, and two-layer forcefields on both. At this difficulty level, strong defenses cause the AI to wait before sending a wave, so let's see how far it goes. 22 minutes in, I've just smeared a third AI world to bits and they launch a 91 strength wave at my weaker non-homeworld planet. I opt for one more tech unlock, and now I'm sitting at 36 turret defenses and 18 mobile defenses there. It won't be enough, but that's okay. I need a GCA, but I'm not going to die from this. My economic second planet manages to get them down to 42 strength before biting it, but I'm still rich as heck. The hunter fleet shows up, because it correctly sees an opening, and darn if the warden doesn't also show up. I wind up retreating with 41 strength of the enemy sitting on that planet. I'd like for them to attack my homeworld, but they aren't taking the bait. 45 minutes in, and I'm at a stalemate with them, unable to retake my second world. It's not super interesting at this point.<br />
** As I had suspected from the amount of fear that players have of the leveling-up of the AI in mark level strengths, it's just too big a jump. That means that, early stall or not, the late game is just going to be impossible on the highest difficulties with the sort of shifts that I've made in today's balance adjustments.<br />
<br />
* (Discarded) What we need for the AI mark levels that go up is a smoother balance curve, and something that has fewer scary cliffs all at one location.<br />
** To start with, we're getting rid of the concept of a "general mark level" for the AIs. Instead there is now a defensive, offensive, and wave mark level.<br />
** The "defensive" one is largely used like the older "general" one was, in cases where there is nothing else to indicate a mark level.<br />
*** The defensive mark level should grow the slowest, by far.<br />
<br />
* Actually that got insanely super complicated. Let's just put the AIP level-ups back where they were and try difficulty 8 again.<br />
** With this shift, and me playing properly, they send a 50-strength wave against my second planet, a military station this time, and I easily repel them, killing half of them. I have energy problems, but the game is moving and off to a solid start. My homeworld is so ludicrously defended that most of the AI forces won't try to attack it, so getting beyond that world and having proper defenses elsewhere that the strong AI waves don't come in and wreck is going to be the new challenge.<br />
** At high levels of play, I think that's going to be the new meta, if anything close to these balanace numbers stays: trying not to over-protect your homeworld so that you can properly defend other worlds (because of energy shortages), and in general dealing with waves that can be scary big, but ultimately just give you a fight before moving on. Late-game, it will be interesting to see the balance.<br />
** There have been comments that we need to give the AI more guardians now that the balance has shifted so much in the player's favor with the AI getting no frigates, etc -- but with the shifts to waves instead being so much more harsh, I'm inclined to keep the AI guardians where they are at (for now).<br />
** It's hard to know for certain, but it feels like the balance of power between the player and the AI is a lot more appropriate again, now that waves alone are so much stronger (and actually a factor for the first time in a long time).<br />
<br />
=== The Last Of IMDraw And Shapes Work ===<br />
<br />
* The way that range rings are drawn for ships that either already exist, or that are about to be placed by you using the build menu, now uses Shapes instead of IMDraw.<br />
** This new approach took one scene that was mid-heavy, and the old stats were that it dropped Chris from 120 fps to 70fps just to start showing the range circles (in the original AI War this was also a big performance hit for us, for different reasons). In the same scene, using the new code, the drop is from 120fps without the range circles shown, down to between 100 and 115 fps with ranges shown. The exact final framerate depends on how zoomed-in you are at the time, and thus how much of your screen the range circles individually take up (more coverage takes more processing power, but it's all still far better than the old approach).<br />
** Also the new rings look smooth and nice, rather than terrible and dated, especially when you zoom in on them.<br />
<br />
* After experimenting with changing the battle-indicator circles on the galaxy map to use shapes instead of IMDraw, we found that the performance was basically the same, but the visuals with Shapes were substantially worse. We're just going to keep on using IMDraw for purposes of these parts of the galaxy map, and the ping effects, since that works so well.<br />
<br />
* When you are in placement mode for building some structures (turrets, etc), it now uses the nicer-looking Shapes lines and circles. The performance difference is negligible, but it looks vastly cleaner and more professional, especially when you zoom in further to look at the ship you are placing.<br />
<br />
* After looking at the performance of the line drawing for IMDraw with unit orders, it really takes an extraordinary number of lines before performance starts to substantially drop. It seems unlikely that we would be able to beat that with Shapes, and it might not even be possible to match it. So for the time being we are going to leave it where it is, and consider our work on the performance-related-toIMDraw to be complete.<br />
** There are some other places where we use IMDraw to draw some circles when some debugging is turned on for shots and similar, but we also don't really care about framerate drops with a situation like that -- that's the perfect sort of situation for IMDraw.<br />
<br />
=== Mod Updates ===<br />
<br />
* Extended Ship Variants (ESV)<br />
** Shortened the description. A lot.<br />
** Removed all min/max caps from starter fleets (both mobile and support) and used the default cap XML field instead.<br />
** Gave Turbo Stingrays, Etherjets, Ensnarer Etherjets and Thiefs the ability to spawn in fleets and ARSs.<br />
** Gave the AI the ability to spawn Turbo Stingrays.<br />
<br />
== Beta 2.721 Histiocytes And Circles ==<br />
(Released January 22nd, 2021)<br />
<br />
* Updates to turret counts in the new balance -- thanks to ArnaudB for making these shifts.<br />
** Updated cap counts for starting battlestations, seeded battle/citadel and GCAs.<br />
** Adjusted counts for military station, home station for pike, ambush, beams.<br />
** 30 small - 6 large on battlestations. 20 small - 4 large on seeded battlestation/citadel. 15 small - 3 large on GCA.<br />
** Adjusted the gravity generator, tachyton and tractor as well.<br />
** Thanks to ArnaudB for putting this together!<br />
<br />
=== Mod Updates ===<br />
<br />
* ESV<br />
** Fixed the Viral Shredder variants not using the cannot_actually_be_built_builds_self_indirectly XML field, meaning that the game would fail trying to load them.<br />
<br />
* New version 1.18 version of More System Defenders mod by CRC Gamer.<br />
<br />
=== New Included Mod: Macrophage Histiocytes by StarKelp ===<br />
<br />
* Added the Macrophage Histiocytes mod.<br />
** Adds in a multitude of new features to the Macrophage faction, most of which can be enabled or disabled at will.<br />
** Histiocytes:<br />
*** Drones created by Macrophage, Telia, and Infested Mines. These mimic the stats of regular Harvesters.<br />
** Metal Generator Infestation:<br />
*** Harvesters can corrupt Metal Mines, causing them to create additional Histiocyte drones.<br />
** Dark Spire Rivalry<br />
*** Macrophage are now capable of consuming Dark Spire Vengeance Generators.<br />
*** Dark Spire take offense to this, and will wither the Telia on planets adjacent to their generators in response.<br />
** Tweaks Galore<br />
*** A number of tweaks can be found in a new Macrophage section of Galaxy Settings, which include toggling off many of the above features.<br />
*** Others include passive Telium regen, allowing Spores to also infest targets, and letting Extragalactic units wither Telium away like Dark Spire units.<br />
** Additionally included is a submod that can be activated to apply these effects to the Spire Infested Telium and Harvesters.<br />
<br />
=== Drawing Lines And Circles ===<br />
<br />
* Shapes, by Freya Holmér, has been integrated so that we can draw extremely efficient lines and circles in an HTML5-looking style.<br />
** https://acegikmo.com/shapes/docs/<br />
** Bear in mind that because of the component-based nature of this, we have to pool and alter shapes versus being able to request them drawing "on demand" as we have been doing with IMDraw in the past.<br />
<br />
* We've implemented our own ArcenShapeRoot base class, which allows us to wrapper and carefully control edits to various subcategories of shapes.<br />
** At the moment we have implemented 5 specific sub-shapes for our purposes: disc transparent, disc sized, line, rotational ring, and thickness ring.<br />
<br />
* We then have a new ArcenShapePool class, which manages pooling and initialization for each of the shape classes that we have. <br />
** This is all working for the five initial shape styles, but it's then up to other code to actually request the use of a shape, set where it should be and what it should look like, and ultimately return it to the pool when it finishes with it, etc. <br />
** Right now none of the other code does that yet (it's all still using IMDraw), but the initialization and pooling logic is fully up and going. Next step will be to convert over specific usages of IMDraw, one after the other, to use the new approach.<br />
** The performance of IMDraw is really really bad when it comes to drawing hundreds or thousands of circles, although it can draw thousands of lines without a problem. But in both cases, they wind up also looking pretty dated and unattractive.<br />
*** Folks have been noticing that on the more recent drivers from nVidia on windows, we now wind up with a 50% drop in framerate just from selecting ships and drawing the selection circles around them. Those were not causing nearly so much overhead in the past, so it seems to be something to do with the newer hardware or newer drivers or both (for us internally, drivers from 2018 were fine, but on the newer 2021 drivers the performance tanks, without hardware changes).<br />
** Anyhow, for those folks who are NOT seeing performance degradation (either they are on older drivers or their hardware is just not affected), these sets of changes will result in prettier lines and circles but probably not any performance boost since IMDraw was previously lightning fast. For those on newer hardware, it will be both prettier and faster.<br />
<br />
* The cursor that appears on the plane of gameplay has been updated to use Shapes rather than IMDraw.<br />
** Rather than two coarse thin line circles, it is now a dot in the center and a nicer lined circle around the outside.<br />
** This is both slightly more efficient (but so low in volume of draws as to not be a big deal) as well as a lot prettier. This is also the first example of us actually using the new Shapes code in actual practice.<br />
** In the cases of this one, we pull out some items from two different pools and then just hang onto them forever, since we're pretty frequently needing a cursor, after all.<br />
<br />
* The way that circles are drawn around ships that are selected, or that you hover over, is now based on Shapes instead of IMDraw. This looks incredibly more polished now, and comes with a far less substantial performance hit than before when you have a bunch of ships that are all selected at once.<br />
** There are still various other parts of the game to update with this new style, but these were the really big ones that were causing massive slowdowns for folks on newer drivers.<br />
** For Chris in a standalone build, in the "terrible framerate" test case from Daw11, the framerate was previously getting cut in half from 130fps to around 60fps or even lower on his GTX 1070 and i7-6700HQ. Now it drops from about 130fps to about 120fps. This is way more appropriate for the type of operation being undertaken.<br />
** It's also far more attractive!<br />
** Thanks to Daw11 and others for reporting.<br />
<br />
== Beta 2.720 Linux Runs ==<br />
(Released January 21st, 2021)<br />
<br />
* Fixed the game up to not have splash screens for unity on any OS.<br />
<br />
* Fixed up some internal things so that we can do new full-builds much faster.<br />
<br />
* Improved some of the visuals from the loss screen so that they will look better in this new version of unity, as there were some shaders that did not translate well used on the asteroids and a few other elements there.<br />
<br />
* Fixed an issue where the linux build would not launch at all in the prior beta, because there's a new UnityPlayer.so file that is needed. That is now included in this version and on our internal tests on Ubuntu we seem to be back in business.<br />
** Thanks to Daw11 for reporting.<br />
<br />
== Beta 2.719 Unity 2019.4, And Performance ==<br />
(Released January 20th, 2021)<br />
<br />
* '''Note: The current build has a "Made With Unity" splash screen that is not intended to stay. We have more to fix up with this in general, but it's good enough for testing on various platforms for now. There is now a current_beta branch on Steam, and a most_recent_stable_beta to go back to the prior one if this one gives you problems.'''<br />
<br />
* The xml field cannot_actually_be_built has been replaced by two fields:<br />
** cannot_actually_be_built_is_not_a_ship_line for empty slots.<br />
** cannot_actually_be_built_builds_self_indirectly for viral shredder copies and similar.<br />
** Previously there were a variety of strange things that could happen because viral shredder copies were set up identically to "empty ship lines" in this.<br />
*** It's possible that in some of the fleet sidebars and swap line popouts, viral shredder copies may show up inappropriately now. If you find any cases of that, please let us know.<br />
** One bug that was happening before was that viral shredder copies were having their fleet membership disconnected from their actual fleets, which made them not able to get in transports after that point or be selected properly with the fleet.<br />
*** For viral shredder copies in existing savegames that had this problem, they now work just fine when you load the savegame (they don't have to suicide themselves or anything like that).<br />
** Thanks to GreatYng and Crabby for reporting.<br />
<br />
* When viral shredders are transferred between fleet lines, if there are any viral shredder copies left behind, they will delete themselves.<br />
** Previously, they were instead throwing endless streams of errors.<br />
** Thanks to Chthon, Puffin, Crabby, and PetGhost for reporting.<br />
<br />
=== Unity Upgrade To 2019.4.18f1 ===<br />
<br />
'''It's worth noting that a lot of file format stuff changed here (more efficient) due to Unity's internal database formats changing, so the updates are ludicrously big. The total when all three platforms are combined is a difference of 3GB to download on Steam. On any given single platform it's probably closer to 2GB.'''<br />
<br />
* AI War 2 is being upgraded from unity build 2019.1.7f1 to 2019.4.18f1.<br />
** Overall this is an upgrade from the long-term support version of Unity from April of 2019 to the January of 2021 build.<br />
** This MAY fix the inverted scroll wheel bug on linux, finally, but we're not sure.<br />
** This does also come with some internal performance improvements to how jobs are handled on the CPU, most notably around rendering. So this hopefully will be at least a minor performance boost for folks.<br />
** We also have upgraded Amplify Shader and Shader Graph to the latest versions, so whatever automated improvements they have to the sorts of shaders that we created those can now be applied. Other shaders that we hand-coded are already probably as efficient as they can get.<br />
** We did look into "Addressables" as a potential replacement for Asset Bundles, hoping that we could get faster load times. But really all that would do is give us better asset management (which we already have in great shape) and still would be using asset bundles under the hood. So definitely not worth any development time there.<br />
** There may be some other various improvements that we are not aware of (seriously, almost two years of lengthy release notes on a weekly basis, 99% of which doesn't apply to AI War 2). Given that this is the "long term support" branch, it is unlikely that there are new bugs that were not there before, but stranger things have happened in the past.<br />
** This does also allow us to use more up to date assets and packages in general, to maximize performance on things like drawing lines and circles if that's a possibility.<br />
** DirectX11 in general might perform better now, but we'll see how that goes. If it performs better now than OpenGL on your machine, please do let us know!<br />
** Vulkan support on linux has also probably improved substantially, so let us know on that, too. That's really highly dependent on your specific drivers and hardware and OS flavor.<br />
** There are a bunch of other random things that unity fixed, like better support for multi-screen monitors on OSX, and things like that.<br />
** Looks like our build times for large asset bundles and such are also dramatically better, which lets us more easily make changes to art in the future. Seems to be at least a 400% improvement over what we've seen in the past, and honestly that is probably under-selling it. So that's a huge savings for us in time!<br />
*** Actually, yeah -- one example case with small changes, it's improved from 400 seconds to 28 seconds. This is gigantic for our ability to iterate and test on art and ui elements.<br />
<br />
* We are now using Graphics Jobs again in unity. There was a performance regression with them in 2019.1, which they fixed in 2019.3, so that is now a benefit again.<br />
** This should help to make various aspects of rendering less CPU-bound, but it will depend a lot on the machine in question.<br />
<br />
* Our gimbal sprites are now using the geometry pipeline rather than the transparent pipeline, which makes drawing them vastly more efficient in two ways.<br />
** Firstly, it avoids depth sorting on the CPU, which is time-consuming and can be a bottleneck.<br />
** Secondly, it allows for full use of GPU Instancing, so that there should be no more than a single draw call per combination of sprite dictionaries, rather than potentially having more draw calls because of non-matching dictionary groups being non-adjacent in the sorted draw list.<br />
** This can cut the draw calls in a giant many-types-of-ships battle from being hundreds to being like 6 to 10.<br />
** It looks like we made the change to use the transparent pipeline on July 15, 2020, after more than two years of it being in the geometry pipeline.<br />
** This has a massive positive impact on both the galaxy map view and the planet view.<br />
** Thanks to Lightjolly for the report that helped us find this.<br />
<br />
* We are making some adjustments to our camera stacks, and part of this is also using some new unity features:<br />
** We are now letting unity monitor CPU and GPU frame timings, and that can feed into adaptive screen resolutions for certain cameras.<br />
** The background nebula now uses adaptive screen resolutions if the framerate is poor, and it also now is set to NEVER use MSAA since that is useless on that camera.<br />
** Our UI camera is now set to use Forward rendering like all the others, rather than using Deferred.<br />
** MSAA is now off on the sprite cameras, overlay cameras, and on the effect cameras for stale intel and unexplored planet effects. MSAA is only enabled on the main camera that would be drawing actual ship geometry that would benefit from it (and the main menu camera).<br />
** Our pre-canvas LDR mapper camera is now set to not do occlusion culling, although it already was set to a culling mask of Nothing, so it's just doing image manipulation anyway. But just in case.<br />
** The main menu screen (which can be super heavy for some folks) now allows for adaptive resolution.<br />
<br />
== Beta 2.718 Tutorial And Tech Fixes==<br />
(Released January 19th, 2021)<br />
<br />
* Tutorial refinements:<br />
** Notices of new journal entries no longer appear during tutorials (in the chat log), but the journal entries do still appear in the sidebar.<br />
** For folks with DLC3 installed, they were getting a necromancer faction in the tutorial, which is now blocked from happening. Actually, they are no longer added with a default configuration just because you have DLC3 installed in general.<br />
** Discoverable factions in general are no longer added during tutorials.<br />
** The Praetorian Guard are now entirely blocked from appearing in tutorials.<br />
** Thanks to blackdog904 for reporting some of these issues that were still there.<br />
<br />
* The second tutorial now uses Raid Frigates instead of Assault Frigates so that it goes much more quickly.<br />
<br />
* Fixed an intermittent issue where the tutorials category list could be empty, leading to no tutorials appearing.<br />
** This would mainly happen if you changed the installed expansions or mods after loading the game but before looking at the tutorials, but that was not the only way it could happen.<br />
** This bug was introduced when we implemented hot-reloading of expansions and mod content a couple of months ago.<br />
** Thanks to Kolbex for reporting.<br />
<br />
* Fixed an issue where the tutorial text could wind up coloring some bits after its "step complete: proceed to next step" bits.<br />
<br />
* Fixed a bug in our new (as of a few months ago) more efficient ArcenDoubleCharacterBuffer where it sometimes would return stale text.<br />
** Essentially, we were checking to see if any text that was written in this new pass was different from the text from the old pass, and that was working perfectly.<br />
** What was NOT working was that we did not check to see if last time we wrote more than this time. So if we wrote identical text, just less, then it would keep displaying whatever was there from before. This was extremely hard to pin down, but it affected things like the chat popups and tutorial step complete messages, and various parts of the galaxy map.<br />
** The additional check to fix this is extremely inexpensive and corrects the behavior without making the ArcenDoubleCharacterBuffer any less efficient than it already was.<br />
** Thanks to a variety of folks for reporting variants on this, but in particular Kahuna, Crabby, SortYa and others.<br />
<br />
* When you're looking at a flagship that you've not captured yet, it no longer shows the text about how long it will take ships that are unloaded to wait before they can fire. That's not relevant there.<br />
<br />
* When you C-click a fleet that you do not yet own, it now shows the proper mark levels and ship caps for each ship it talks about.<br />
** Thanks to Minotaar for reporting.<br />
<br />
* Fixed another issue with the counting of ships where if there was a fleet that you could capture it would show the wrong number of ships for the current value that you're upgrading from on the tech tooltip.<br />
** Thanks to Minotaar for reporting.<br />
<br />
* When you C-click a tech, it now properly shows the ship caps and how they would increase for any ships that you could capture that are part of that tech.<br />
** This is both a fix to a regression (it was showing nothing in the last two betas) as well as a fix to a longer-term issue (prior to the beta branch, it just showed a fixed number that did not increase).<br />
** Thanks to Minotaar for reporting.<br />
<br />
* Previously the colors for the mark line counts and strength totals that you would get from upgrading a tech were kind of scrambled up. In a couple of places we had green and blue inverted (blue = ships, green = defense, but it was backwards on the actual science buttons), and it wasn't consistently applied in the tooltip.<br />
** Now this is shown consistently throughout the tooltip and the actual sidebar, and on the sidebar if it would show one but not the other, it now only shows the one that has a value (rather than showing zero for the one that has no improvement).<br />
*** In the even that it does wind up showing a zero, it will be because there is less than 1 strength granted from some line.<br />
** Thanks to Tim_Fragmagnet for reporting.<br />
<br />
=== Refinements To New Balance ===<br />
<br />
* The starting support fleets now have 16, 20, and 14 combat engineers rather than 8, 10, and 6. This brings them into line with the new starting values in the new balance of the beta branch.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
== Beta 2.717 Tuning And Optional Capture ==<br />
(Released January 18th, 2021)<br />
<br />
=== Refinements To The New Balance ===<br />
<br />
* We now have the first example of a custom MarkLevelScaleStyle that is just for a single ship or a few ships that are assigned manually (in this case it's assigned manually).<br />
** For the player home forcefields, those now actually DO get some added cap added to them (up from the start of 1) as you upgrade your fleet. They start out with a cap of 1, and for mark 2 and 3 they each get +1. Beyond mark 3, they get no more cap.<br />
** Thanks to CRCGamer, Chthon, Crabby, and others for suggesting/discussing.<br />
<br />
* The attack multiplier curve for human frigates has been nerfed HARD.<br />
** In the lower marks, you in particular really just get far less attack power, while still getting the more aggressive hull health. Frigates in general actually grow up a little slower than the average AI ship now in terms of attack power, and a lot slower than strikecraft. But they have such intense multishot that their power is pretty insane as it is.<br />
** That said, when you finally get up to mark 6 and 7, if you choose to, they actually accelerate slightly beyond what the AI would have on attack power. So their curve has been adjusted in general, but they still are overall buffed compared to prior builds before this beta branch.<br />
** Players were easily fielding 100+ strength in the first 20 minutes of the game with the prior beta build, so this is a first way to try to combat that. We want frigates to be good, but not god-tier.<br />
** Thanks to a variety of players on discord for discussing. More balance will be needed, but today was more about fixing bugs first.<br />
<br />
=== Fixes To Prior Build Regressions ===<br />
<br />
* Fixed an issue with the GCA additions to fleets not always being added into the caps of ship lines in a variety of places. It seems to properly include the results from a GCA hack in all of the tech previews now, as well as actually granting you the GCA ships at all (unlike in the prior build).<br />
** Thanks to a variety of players for reporting, including Chthon (thanks for the save!), DEMOCRACY_DEMOCRACY, Spaz, Crabby, and others on discord.<br />
<br />
* Fixed a variety of places where absolute_max_cap_when_in_fleets was being set to values that were too low for the new balance. This led to players getting fewer forcefields from logistics stations than they were supposed to, for instance, but also affected tractor beams and tachyon beams and a variety of other units. They've all been properly updated now.<br />
** Thanks to Chthon for reporting.<br />
<br />
* Fixed an issue that would let negative numbers show up in the tech upgrade tooltips for ship counts for various ship lines.<br />
** Also fixed another issue where turrets in particular would look like they were going down a few in count because of a rounding error that would happen when you had enough planets with turrets all on them.<br />
** Thanks to NRSirLimbo and others for reporting.<br />
<br />
* Added can_be_empty_or_filled_and_no_complaints to AI ship groups.<br />
** Usually used for stuff that is in one or more expansions and mods, and so defined in the base game but empty unless a certain expansion is present.<br />
** CAN be used in conjunction with if_empty_copy_items_from without problems.<br />
** Is now used on some various features that were complaining if you did not have DLC1 or DLC2 installed in the prior build.<br />
** These errors that were there when you started up the game in the prior build were alarming, but harmless.<br />
** Thanks to Chthon, CRCGamer, zeusalmighty, and others for reporting.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a couple of rare race conditions that could cause exceptions while drawing or moving shots around as you switched planets.<br />
** Thanks to samnainocard for reporting.<br />
<br />
* Fixed an exception that can happen when hitting Reset To Defaults while you were on the factions tab in the lobby. It was getting confused and asking for some nonsensical data on one frame, but then would be correct after that. At this point it just lets the one frame be wrong and correct itself after, which is how it has been prior to mid-last-year when we made some of the items more strictly verified.<br />
** Thanks Crabby for reporting.<br />
<br />
* Fixed a rare exception that could happen in GetHasSelection() if a squad died just the wrong way.<br />
** Additionally, if we ever do have an exception in there, it will now give more useful errors and disrupt the main GUI view less.<br />
** Thanks to samnainocard for reporting.<br />
<br />
=== Misc Improvements ===<br />
<br />
* In the Tech Menu hovertext for a given tech, when displaying 'New Ships for ship line' and 'Old Ships for ship line', the older value is a smaller font to make it clearer what's happening.<br />
<br />
* The intel objective for locating the AI Overlords that you have not found has been changed in a few ways:<br />
** It now just has one entry for however many you have not found, and does not specify how many there are. In some games, you don't know how many there are, and we don't want to tell you until you scout.<br />
** It is no longer linked to an actual overlord, so you can't change the priority of the objective and cause the position of the AI Overlord planet to be revealed (not that we could get this to work, for whatever reason).<br />
** The tooltip itself now states that there are one or more undiscovered AI king units, and that you'll need to find out how many.<br />
** Thanks to Tim_Fragmagnet for reporting.<br />
<br />
* The keybind for "Hold For Yellow Pings" is now X, rather than Shift+Ctrl.<br />
** This prevents issues where anything that was "just ctrl" or "just shift" was not working anymore if you held Ctrl and Shift at the same time.<br />
** Basically, when we have modifier keys that are a combo of lesser things, we don't want to trigger this, right? If you think about a word processor, as a simple example, hitting Ctrl+A should select all and not ALSO type the letter A.<br />
** There weren't really any direct issues from this, except that anyone who reflexively holds Shift down wile using place-multiple (Ctrl or Alt) would find that it failed for them. Now that will work again.<br />
** Thanks to Astilious for reporting.<br />
<br />
* Added a new is_intentionally_empty_beyond_centerpiece="true", which can be applied to fleet design templates.<br />
** When this is true, you won't get the "Fleet Design Template X never has any items added to it (centerpiece aside)! This will cause some problems." error for it being empty.<br />
** However, when this is true, if there is anything in any of the groups other than the Centerpeice slot, then it will complain about them since that's not what you indicated you wanted. Just a helpful self-check for modders and developers.<br />
** Thanks to zeus for reporting.<br />
<br />
* Added a new can_be_empty_or_filled_and_no_complaints="true" flag for fleet design templates.<br />
** This one is more for testing style fleets, which may or may not have entries in them.<br />
** This is now applied to the non-distributed Precepts of the Precursors mod, to prevent it from erroring.<br />
*** For most of the cases they are clearly test fleets, but in one case it looks like a dyson seedlings fleet was defined but just never finished being set up.<br />
<br />
* If the "for science" cheat is used without any arguments, it no longer errors out but instead just gives you 10k science.<br />
<br />
* The Poltergeist has been moved to tier 2 instead of being tier 1 in the AI Exogalactic War Front faction.<br />
** This makes it so that they are very unlikely to show up in any game that doesn't have Fallen Spire or something else truly crazy going on. The fact that these guys can shoot straight under forcefields is way overpowered and seems cheesy when it shows up out of context, but when it is properly pitted against the really overpowered forces you gather up in the Fallen Spire campaign, it fits right in.<br />
** Thanks to Arides for reporting how this doesn't fit with tier 1.<br />
<br />
* Previously, in multi-faction multiplayer if an ally was having a brownout, that was impossible to tell apart from you having one.<br />
** Now the tooltips are different for you versus your allies, so you can actually tell what is going on.<br />
<br />
* Eight various golems were actually still named "Golem Arks" from waaaay long back. Fixed.<br />
<br />
==== Capturables - Clarity and Control ====<br />
<br />
* The game now always shows if there is an AIP or metal cost to claim something, even if you are on the brief tooltips.<br />
** The colorization is also now better and more eye-catching, and on the brief tooltip it is more brief.<br />
** Thanks to Unit 744 for suggesting.<br />
<br />
* Fixed an issue that was extremely confusing, where ships that belonged to your faction now but still had not been claimed yet (because of a metal cost over time, generally) would no longer show what the AIP cost (or metal cost for that matter) were going to be.<br />
** This led to confusion about whether you had already paid the AIP cost or not, since you could look in the AIP log and see that the entry was missing.<br />
<br />
* Capturables that take a while to rebuild (like golems or arks) now can be selected like other units, but they will immediately reject any orders you give them.<br />
** You can, however, change their stances, and pause them, now.<br />
** When set into pause mode, your unclaimed ships will not actually BE claimed -- the tooltip will show that information, and it will avoid spending all that metal that your economy may or may not be able to afford, as well as potentially incurring AIP if that's related to this capturable.<br />
** Thanks to poljik2 and Crabby for suggesting.<br />
<br />
=== Mod Updates ===<br />
<br />
* AMU:<br />
** Multiple internal adjustments to work with changes to the Vanilla code again.<br />
** Fixed some rogue debug printouts that shouldn't occur unless they are turned on deliberately.<br />
** Adjusted the WarpToPlanet() method as it could have thrown missing method exceptions due to some Vanilla code changes. However, no unit should have had the requirements to trigger this function (yet).<br />
** Fixed yet another bug where Fireteams could get stuck on planets if the command station was armed, even though the planet was already conquered. The FireteamMaintenance() function now detects such planets and resets the team's objectives.<br />
** Fixed an issue with the canSpend() method from the CostBasedShipSpawner leading to an attempt at spawning infinite ships when being allowed to go into debt. This would only occur if Kaizers Marauders were set to intensity 10, and fixes them locking up the game permanently.<br />
** Updated the included source code.<br />
* KM:<br />
** Prevented Marauders from building more than one Capital if the game was loaded from a save at just the right time.<br />
** Fixed the Raid Battleship not moving towards targets and instead staying at sniper range.<br />
** Marauders allied to players or AIs will generate only half the exowar response. Playtesting for an extended period of time revealed that this got out of hand too quickly.<br />
** Marauders will "split" their Exowar budget: If there's 2 hostile AIs they will divide it by 2, if there's 3 they will divide it by 3, and so on. This will lead to lower-rank but still more Exowar units thrown at Marauders.<br />
** Fixed Marauders at very high intensities building so many forcefield generators that they would start stacking and erroring out the threads because they could no longer find valid locations. The same treatment was given to the Defense Posts because they might have the same issue in the future.<br />
** Removed the NoDrones and EmptyPlaceholder fleet design templates. They were never used anyway and relics of previous changes when fleet ships and drones were "emptied out" and removed, but were now complaining that they had no ships in them (well duh).<br />
** The Fortified Forceshield Generator now no longer can stack with bad placements or when being pushed into one another, and now also uses the new forcefield scaling.<br />
* ESV:<br />
** General balance pass, mostly about nerfing the power of FRS ships and the Melee-Frigates. The latter were just so powerful and fast that they could act as if they were better Raid Frigates. Plus more drone fleets and less drone projectiles.<br />
*** Adjusted to no longer have min/max caps and instead use flat caps similar to Vanilla, shifted shields to hull and adjusted descriptions mentioning shields for Strike Craft, Drones and Drone Projectiles.<br />
**** Excluded are Void Bombers which use special shields as a special mechanic for themselves.<br />
**** This revealed some typos which lead to inconsistent ship line counts like no or too high variance between min/max in some cases, which are now fixed as well.<br />
*** Halved the ship cap of all the FRS ship lines<br />
*** Alpha Strike Wings now correctly empower their Damage Modifier based on being on the planet for a while, instead of adding an ambush damage modifier, it always was supposed to be a Raid ship.<br />
**** Thanks to ArnaudB and probably a few others over an extended period of time for mentioning this.<br />
*** Adjusted the Suppressor and Devestator ship counts from the starter fleets from 4 to 6 to match what the player can find in the galaxy.<br />
*** Reduced the speed of the Melee Frigate ships from 2900 to 1800. They were, again, way better than Raid Frigates...<br />
*** Reduced the damage multiplier for enemies with >= 5 tx on the Wedge Frigates from 7 to 4, but it now begins applying to enemies starting at 3 tx.<br />
*** The Metabolizing Drones from the Metabolizing support fleets now have half the health, they were too durable for mere Drones.<br />
*** The Metabolizing and Acidic factories no longer use drone guns but now use actual drones. Their self-attrition is now 35% instead of 3% per second but they no longer decay as long as their parent Mobile Factory is on the same planet.<br />
<br />
* Updated More System Defenders to 1.17.<br />
** Includes a fix to loading very old savegames.<br />
** Also should properly delete some renamed files, now.<br />
<br />
== Beta 2.716 The Great Balance Curve ==<br />
(Released January 11th, 2021)<br />
<br />
* Subversion quickstart tooltip now mentions that the nanocaust invade later in the game.<br />
<br />
* Make Astro Trains level up a bit more slowly<br />
<br />
=== Mod Updates ===<br />
<br />
* Updated the mod Extended Ship Variants to match the new unit amounts so that they won't be underpowered in the new version.<br />
<br />
* Updated the mod More Starting Options to match the new unit amounts so that they won't be underpowered in the new version.<br />
<br />
* More System Defenders Dev Build 1.16 - Ships rebalancing take one.<br />
** Updated mod by CRCGamer to have wider changes for fitting into the new balance.<br />
<br />
* Updated the UtilityMethods class so that mods can more properly use it to get entities in an AI ship group and similar.<br />
<br />
* Updated the Civilian Industries raid logic.<br />
** Making use of a new function created by Chris that gets all raid ship types without potentially erroring out.<br />
** Added a max attempts per loop per raid wave, meaning it will more quickly error out and will no longer break its entire thread for the rest of the game.<br />
** Added in some more detailed debugging for if this ever occurs again in the future.<br />
*** Thanks to mashtong54 on steam for the report, and Chris for helping optimize the fix.<br />
<br />
=== Interface Updates ===<br />
<br />
* Added a new DoOnLocalStartNonSimUpdates_OnMainThread(), which lets us do some of the logic from DoPerSecondLogic_Stage3Main_OnMainThreadAndPartOfSim() prior to the game being unpaused.<br />
** We now use this in particular to make sure that the details on the tech menu are updated properly before you have unpaused the game. Aka it shows how many ship lines would be improved, and all that sort of thing.<br />
<br />
* The way that the ship caps are calculated for purposes of previews when upgrading a tech is now vastly more accurate.<br />
** When you are looking at the list of ships lines that are improved by a tech, it now shows what their ship cap changes will be, as well as what their individual strength improvements will be per ship line. Previously you could only see this if you clicked into the C-click menu (though you could see aggregate numbers for strength, by tech, and still can).<br />
** There were a LOT of edge cases where various counting things for ships were wrong, and that code has all been completely rewritten.<br />
<br />
* The strength estimates for improvements by techs have been wrong for a long time, since they were using a formulate that wound up using the old mark level's hull and shield amounts rather than the current one.<br />
** This has been corrected, and you can now accurately see what your benefits would be for each tech. Holy decision-making ability, Batman.<br />
<br />
* When a tech will benefit ship lines that you can capture AND that you already have, it now includes both. Previously, it was ignoring any capturable ship lines that were duplicative of something you already had, which was not very helpful for decision-making.<br />
<br />
* The "weak against" tooltip (hold R and hover over enemy) is now much more accurate in terms of what it lists in general, as well as also showing things that get multiple bonuses against a single unit in the proper multiplicative format. If it's two different weapons, then it may overestimate; that's a pretty rare case, if it even exists, though.<br />
** Additionally, these are now sorted from best against the target, to least strong against the target, instead of being sorted alphabetically. Anything that is the same amount good against a target is sorted alphabetically.<br />
<br />
* The weak-against view now shows how many ships you have (or could have) of each given type. This is a handy little thing that gives you a view into how many more ships you can bring to bear of a certain sort against these enemies.<br />
<br />
* In the strong against display, it now uses the max unlocked mark of the player ship lines, rather than the lowest mark. This rarely matters, but sometimes gives more accurate bonuses.<br />
<br />
* All of the other improvements that were made to the weak-against display are also now on the strong-against display (hovering over your own units with R held down).<br />
** Being able to see how many ships of each enemy type you have discovered is actually pretty cool on this screen. It shows them all with the max discovered mark level, but breaking out them by mark level would be extremely painful in terms of how much screen space it would take.<br />
<br />
=== Balance Adjustments ===<br />
<br />
* Strikecraft (in the base game and DLC1) no longer have personal shields, but all of what was shields are now in hull.<br />
** Basically, strikecraft don’t need personal shields: they don’t live long enough for regen to kick in where that’s beneficial.<br />
** Instead, all that this means is that they have a new weakness (fusion weapons) that makes fusion overpowered.<br />
<br />
* Updated Fusion Bombers, lowering their bonus and putting most of it into the weapon damage directly. <br />
** The bonus was meant to optimize targeting, should've been lower long ago, makes them less likely to get hindered by allies at all.<br />
** Thanks to Puffin for finding this!<br />
<br />
* The Dark Spire ships that you can get from the Hacks no longer upgrade from human techs. That was overpowered for those ships, as well as emphasizing those techs way too much.<br />
** The names on these are now unique, showing "Hacked Dark Wraith" and similar rather than just showing the name from the main setup.<br />
** You now get 2 rather than just one Specter, when you hack for those. They also have half the metal cost of before, and a plasma torpedo that is substantially lower power, and slightly lower range. This keeps them from just absolutely outclassing Bombards in every way.<br />
** Thanks to CRCGamer directly for the bulk of these changes, and for the inspiring the rest.<br />
<br />
==== No More Unlock Variance ====<br />
<br />
* The galaxy option "Remove Unlock Variance in Capturables" has been removed from the game.<br />
** So has actual underlying ship line variance in capturables!<br />
** For fleet lines that are pre-existing, if they have min and max, it will now just use the max. So existing mods won't be hurt.<br />
*** If you are a modder and wanting to set something more intentional, then please use the "cap" xml tag instead.<br />
** This particular style of variance added nothing to the strategic decision-making of the game, but could lead to you getting unintentionally hosed.<br />
<br />
* On GameEntityTypeData, we now keep track of a MinFleetMembershipCap and MaxFleetMembershipCap, which is the largest number ever in a fleet versus the smallest ever in a fleet.<br />
** We had a handy "quality scoring" that previously we were using for situations where there was variance in a given fleet line (that is gone, as noted), but there are multiple fleet lines that can use the same ship in different quantities.<br />
** Essentially, there are a variety of types of fleet designs, and some of them give you more or fewer of certain types of ships. We are shifting our quality scoring to look across those types of lines, since the quality of a given fleet line purpose is always now fixed instead of variant.<br />
** Confusing? Yeah... sorry about that. Overall this is not relevant except to modders and developers.<br />
<br />
* It's worth noting that there IS still variance in how many strikecraft and frigate lines there are in a given fleet, when you find them out in the wild.<br />
** The unlock variance setting already did nothing about that, and for now we're keeping that in place.<br />
<br />
* Strikecraft random ranges are no more, so here's what we've settled on based on the prior ranges.<br />
** Bear in mind that even at mark 1 these are inflated now for player ships, so this is lower than you'd actually see in the game.<br />
** Range 10-18 is now 14.<br />
** Range 5-7 is now 6.<br />
** Range 5-9 is now 7.<br />
** Range 6-10 is now 8.<br />
** Range 6-12 is now 9.<br />
** Range 7-14 is now 10.<br />
** Range 8-15 is now 11.<br />
** Range 10-15 is now 13.<br />
** Range 10-18 is now 14.<br />
** Range 12-20 is now 15.<br />
** Range 12-25 is now 19.<br />
** Range 15-25 is now 20.<br />
** Range 25-40 is now 32.<br />
** Range 30-40 is now 35.<br />
** Range 20-35 is now 28.<br />
** Range 30-60 is now 45.<br />
** Range 40-55 is now 48.<br />
** Range 40-60 is now 50.<br />
** Range 60-80 is now 70.<br />
** Anything that already had the same min and max still has that same amount.<br />
** We are going to soon do some analysis of ships based on their strength at their ship caps and make sure that things look reasonable as divided out by tech, but this is the first step.<br />
*** Previously it was pretty hard to do that sort of analysis since any given ship line could randomly be often 50% weaker than normal or 200% stronger than normal.<br />
<br />
* All of the other types of ships that had a range of default values now have a cap in the middle, also.<br />
** Again, in all cases we can now balance from there, which is nice.<br />
<br />
==== Mark Level Scaling Overhaul ====<br />
<br />
* You'll want to read this for the detailed math behind the strikecraft: https://docs.google.com/spreadsheets/d/1PxvEq3jOEPDt7RWAZXaJEatLx_unwvsH2NgMFKoguac/edit?usp=sharing<br />
<br />
* And this has the detailed math for everything else: https://docs.google.com/spreadsheets/d/1acg0Q7C0wyXz3tHEO21UMifb3EcsihGRSJB8m6yTbX8/edit?usp=sharing<br />
<br />
* The following has been removed from the Balance_MarkLevel table:<br />
** attack_multiplier<br />
** most_everything_squad_cap_multiplier_list<br />
** frigate_squad_cap_multiplier_list<br />
** hull_points_multiplier<br />
** assist_range_multiplier<br />
** shield_radius_multiplier<br />
<br />
* A new Balance_MarkLevelScaleStyle table has been added, which has most of those things.<br />
** human_squad_cap_multiplier_list replaces the two other squad cap multiplier lists.<br />
*** This is named as such to make it clear that this really only applies to human caps, since pretty much all other factions use their own style of caps unrelated to fleet lines.<br />
** Everything else is the same in terms of the content, although they are now all expressed as lists in order to make these more concise to define.<br />
** While we were at it, we also split out the multipliers for shields and hull health, because why not. Flexibility is a good thing.<br />
<br />
* GameEntity definitions now have a new, optional, mark_level_scale_style.<br />
** This allows a nonstandard MarkLevelScaleStyle to be assigned to any entity that you wish.<br />
<br />
* There is also the ability to define defaults for entire categories, like strikecraft or frigates or turrets or whatever.<br />
** In the event that any of that is missing or not defined, then it just falls back on the defaults.<br />
<br />
* The defaults are exactly what they were in the game up until now, although soon this will be applied to increasing minorities of ships.<br />
<br />
* Strikecraft caps for human fleets have been dramatically rebalanced.<br />
** Please see v3 of this sheet for all the details: https://docs.google.com/spreadsheets/d/1PxvEq3jOEPDt7RWAZXaJEatLx_unwvsH2NgMFKoguac/edit?usp=sharing<br />
** With these changes, essentially:<br />
*** You get more strikecraft in general, but the AI does not.<br />
*** You get vastly more strikecraft at mark 2 and mark 3 compared to before.<br />
*** Overall, upgrades through mark 4 are far more powerful and represent a much greater progress toward the total power of mark 7 (mark 4 for humans is now 62% as powerful as mark 7, rather than 35%, because of the increase in ship caps without changing any actual ship stats).<br />
*** Once you hit mark 5+, there are no more additional ships added to your ship line. However, the total ships you have at mark 4 is already higher than what you had at mark 7 prior to now, so this is not exactly a punishment.<br />
*** The total strength boost of a full cap of mark 7 ship now versus before, for humans, is 21%. Aka, if you fully upgrade a ship line to mark 7, it's now 21% more powerful than in prior versions of the game. This does not affect the AI in any way.<br />
*** THAT said, you are still seeing diminishing returns on the power curve as you upgrade above mark 4. Two fleet lines both upgraded to mark 4 are now very likely to be far more powerful than a single mark 7 line.<br />
** These changes make it a lot less obvious that you should specialize in any single tech, and make a wide variety of tech strategies hopefully much more viable.<br />
*** This is not the end of the story in terms of making that so, but for strikecraft this is the big item.<br />
<br />
* Frigates now get progressively more durable in higher mark levels, and also ramp up their attack power a bit faster than before.<br />
** Overall very-high-mark frigates are considerably more fearsome than before, and they are also beefier in the middle.<br />
** Since we are not adjusting the caps of frigates up a bunch like we have for player ships, this was what made sense for this case.<br />
** Detailed math is here: https://docs.google.com/spreadsheets/d/1acg0Q7C0wyXz3tHEO21UMifb3EcsihGRSJB8m6yTbX8/edit?usp=sharing<br />
<br />
==== No More Frigates For AIs ====<br />
<br />
* Added a new is_deprecated="true" flag that allows the game to automatically remove any instances of a given ship in old games, as well as hiding it from any future encylopedias in the game.<br />
** This has been applied to the AI Raid Frigate.<br />
<br />
* All of the frigates have been removed from any AI groups that were using them.<br />
** This essentially means that AIs cannot build their own frigates anymore. They might make zombies out of some, but that's about the extent of it.<br />
** This goes back to a much older design for the game, where we wanted AIs to only have Guardians, and humans to have Frigates as their own unique tech.<br />
** AIs have sometimes been using frigates excessively, particularly stacking too many of them in guard posts as if they were just strikecraft, so that's really not something we want to have happen.<br />
<br />
* AI ship groups and fleet design templates now check to see if they are empty, and throw errors if they are.<br />
** The idea is that if these are used anywhere in the game, then you'll wind up with funky empty waves or planets or fleets or whatnot. The self-check is a help there.<br />
<br />
* AI Ship Groups are sometimes intentionally left empty (usually to not have something large and scary on every planet, and use the weighting system to accomplish this).<br />
** These ship groups now have a is_intentionally_empty="true" tag on them, so that we can know that and not complain about them during automated checks.<br />
** Any ship groups that have that tag but also have ships will now be complained about, as well.<br />
** For ship groups that are essentially deprecated, but which are in existing savegames, we now have a if_empty_copy_items_from tag that lets us assign something general into it for cases where it was previously used.<br />
<br />
* Added a new is_considered_visible_part_of_the_ai_faction_for_what_can_own_purposes flag for various AI subfactions.<br />
<br />
* For any AI factions, or any factions with the above flag, any frigates that they have either directly out, or in guard posts, will be removed and a little notice is posted silently in the log when you load a savegame.<br />
** There were some truly insane numbers of frigates in guard posts in some places before, so this will be quite a nerf to some previously-unlucky savegames.<br />
** If there were frigates in an incoming wave, or something to that effect, those will still arrive and are not cleared out.<br />
** Thanks in particular to Democracy for alerting us to how crazy this could get.<br />
<br />
==== Frigate Balance ====<br />
<br />
* Frigates (in the base game and DLC1) now have a bit more hull, and about a 16% reduction in metal cost.<br />
** Previously they just evaporated too easily.<br />
** Additionally, these took too long to rebuild, and also were a poor deal in metal-to-health ratios compared to most strikecraft.<br />
<br />
* Frigates no longer go up in ship cap at all, unlike in prior versions of the game.<br />
** For station-keepers, it was annoying to have to go back and fill in more.<br />
** For absolutely every kind of frigate, a ship cap increase of 1 on a cap of 2 (as an example) is a 50% increase in metal and energy costs, which is pretty darn turbulent on your economy.<br />
** Overall with the perception being that you need to have a certain number of frigates for them to be useful at all, it's better to just start at that number and then let them get beefier as they mark up. This gives higher-mark ones more staying power, without the added expense or gaps-in-turnover during large battles.<br />
** When you pair this with the buffs to frigates from mark level stats, it's hopefully enough to make them really interesting, but one reason we're headed into a beta branch is to find out if all the numbers check out.<br />
** So, caps for frigates have been adjusted as follows:<br />
*** Previously 1, now 4.<br />
*** Previously 2, now 6.<br />
*** Previously 3, now 9.<br />
*** Previously 4, now 12.<br />
*** Forcefield frigates are the sole exception, and they get a total of 3 rather than 4.<br />
** We may need to make adjustments to some other specific frigate lines, but we'll just see how things play out.<br />
<br />
* The max cap of the Chained Dark Spire Eidolon station-keeping frigate is now 2, rather than being the 4 it would be if it was with other frigates.<br />
** Same with Tamed Macrophage, another thing you can purchase from the Zenith Trader.<br />
** Same with Scrubbed Aberration and Scrubbed Abomination.<br />
** It's worth noting that all of these are markless frigates, so they always previously had a max cap of 1 no matter what. Having a max cap of 2 might make them a bit more fun.<br />
<br />
==== Turret Balance ====<br />
<br />
* There is a new attack_range_multiplier_list that we can use on mark level scaling styles to increase the range of certain units as they mark up.<br />
** This is not something we would ever have wanted to generalize previously, but now we are able to sub-categorize and so it's nice to have.<br />
** In most all cases, we will not actually use anything other than 1.<br />
<br />
* The assist and attack range multiplier from mark levels now only applies when it's not already a sniper-level range, or if it's not melee-range.<br />
<br />
* The game now automatically checks for human and AI styles of turrets, and differentiates them.<br />
** If something is trying to use a turret as both a human and AI type, then it now complains about that.<br />
<br />
* All of the various ensnarer turrets were being used by the AI as well as being used by one specific type of human battlestation.<br />
** This was problematic, as the costs were too high for the ensnarer turrets, they did not die to remains, they had the word AI in their name, and a bunch of other things.<br />
** These have now all been split out, although if you happened to have the AI ones in a previous game, you still will now, and they will scale wrong and still behave wrong. These were already rare, though, so it should not affect too many games.<br />
<br />
* The game now has different scaling multipliers set up for human, AI, and other turret types.<br />
** Right now, the AI and other turret types just keep using the "Original" style that give them the same stats they have had prior to this new build.<br />
** The human turrets, however, are different.<br />
*** Human turrets no longer gain any ship cap as they go up in mark level.<br />
*** The more aggressive scaling from the frigates scaling is now used, for much the same reason.<br />
*** The assist range of these turrets is like the Original style, though, not like Frigates.<br />
*** And finally, there is actually an increasing attack range on the human turrets per mark level, until mark 4. This is new and not something we will do much with other units, but is great for turrets since they cannot move.<br />
** Overall with human turrets, the goal here is again to change the curve of power like we did with frigates, but to stop increasing their ship caps as you level them up.<br />
*** It's super annoying having to go back to all your planets and place new turrets every time you increase a tech that affects some of them, and now that's no longer a thing.<br />
<br />
* Because turrets no longer increase in cap as they mark up, we needed to increase the base caps for all of them that you get.<br />
** Overall we were seeing around a 260% increase from mark 1 to mark 4 in the prior build of the game, so for now we're going with that in general.<br />
** Previous cap of 5 is now 13.<br />
** Previous cap of 7 is now 18.<br />
** Previous cap of 15 is now 40.<br />
** Previous cap of 19 is now 50.<br />
** Previous cap of 20 is now 52.<br />
** Previous cap of 24 is now 62.<br />
** Previous cap of 30 is now 78.<br />
** Previous cap of 38 is now 98.<br />
** Previous cap of 40 is now 104.<br />
** Previous cap of 60 is now 156.<br />
** Previous cap of 75 is now 195.<br />
** Previous cap of 90 is now 234.<br />
** Previous cap of 180 is now 468.<br />
** Wow some of these numbers look large. Well, you certainly won't be hurting for places to spend your extra energy, anymore. <br />
*** With these numbers you can definitely set up whatever sort of coverage you want on a planet, and then how upgraded your turrets are determines how effective the coverage is.<br />
*** In the past, it was possible that you wouldn't have enough turrets to actually get full coverage on a planet until you did some upgrades. Now that isn't a problem, energy-willing.<br />
** Puffin reminds me that the multiplier_to_all_fleet_caps="0.2" means that these will actually show up as 1/5 of the values you see here, so it's not going to be such a culture shock. That makes more sense!<br />
*** This applies ONLY to turrets.<br />
<br />
==== More Balance ====<br />
<br />
* Minefield balance:<br />
** All minefields now have a bit aggressively more than 2.6x the ship cap that their average would have been before.<br />
** Any minefields with shield points now have those as hull points instead.<br />
** There is a new mark level scaling for minefields, which does the old "original style" hull scaling, but which keeps the more-aggressive style of attack scaling from frigates and turrets.<br />
** There are way more minefields in DLC2 than in the base game, and there are none in DLC1, so some of these are not visible to most folks yet.<br />
<br />
* We no longer try to automatically calculate IsNonTurretDefense.<br />
** That had been returning quite a few false positives, such as all the ensnarer turrets and a lot of other factional structures.<br />
** That probably didn't matter until now, and it's been the same calculation for the last 3-4 years, but now we're actually doing some differentiation on this and so it needed to be corrected.<br />
** is_stationary_forcefield has been added to let us identify those, and is_non_turret_defense has been added to let us identify THOSE.<br />
** Essentially there are a few forcefields which are the latter, and the former consists of the tachyon array, tractor array, and gravity generator. We're excluding minefields from that latter category.<br />
<br />
* Non-turret defenses now have their own scaling which is basically just the frigates for hull and shields, but the original style for weapons (of which they probably have none).<br />
<br />
* Stationary forcefields do their own thing, with no weapon scaling at all per mark level (again they probably have none), but then with an increasing divergence in hull and shield multipliers.<br />
** Their amount of extra shielding gets really intense in the higher marks, and it's a pretty interesting effect<br />
** Details on their calculations: https://docs.google.com/spreadsheets/d/1acg0Q7C0wyXz3tHEO21UMifb3EcsihGRSJB8m6yTbX8/edit?usp=sharing<br />
<br />
* The ship caps on the stationary forcefields and non-turret defenses both no longer increase with mark level, so they also get some extras.<br />
** Essentially for forcefields, logistical now gets 6, military 4, economic 2. Previously it was 2, 1, 1, with increases by mark level.<br />
** For the non-turret defenses, they get an approximate 2.6x-ish boost, but it's a bit varied since we already tuned it up a little. If it feels like too few or too many, please let us know!<br />
<br />
* Then added a new is_engineer="true" for those style of ships, and a new is_default_for_engineers="true" to go with them.<br />
** The overall design is that engineers no longer increase in count as the mark level goes up, but their hull points and shield points go through the roof like a forcefield does (multiplier-wise, anyhow).<br />
** Engineers already have improvements to their ability to assist built into their designs, but now their increases per mark level are doubled from what they were. This makes individual engineers FAR more powerful with even just a single mark level upgrade.<br />
** Since the caps of engineers don't increase, we also have increased the caps of them.<br />
*** Overall their numbers are generally doubled or tripled, depending on the kind of engineer and the context.<br />
<br />
==== Guardians ====<br />
<br />
* Guardians and Dire Guardians now have their own scaling, which you can see the math on here:<br />
** https://docs.google.com/spreadsheets/d/1acg0Q7C0wyXz3tHEO21UMifb3EcsihGRSJB8m6yTbX8/edit?usp=sharing<br />
** This gives them much more aggressive attack and hull and shield boosts, and even breaks the normal rule and gives them shield radius boosts.<br />
** Until now, the AI has been nerfed pretty heavily so far in this rebalance in general, and the player has been getting substantial buffs left and right.<br />
** This is the first substantial buff to the AI, and it makes guardians actually relevant again -- at the topmost levels, the guardians are about twice as dangerous.<br />
** That said, the overall growth is pretty steady and linear, just higher, which makes sense for opposing forces. The curves for enemy growth and your growth are very different, as they are meant to serve different purposes.<br />
** It's possible that too few guardians are being seeded -- if that's the case, please let us know. They shouldn't be everywhere all the time, but they should be enough of a presence to be freaky and a problem when you see them.<br />
<br />
== Version 2.715 Unload Queuing ==<br />
(Released January 11th, 2021)<br />
<br />
* Fix a typo that was causing tons of raid frigates in ARSs and flagships.<br />
** Thanks to CRCGamer for catching and Badger for fixing.<br />
<br />
* Fireteams are now less likely to abandon the AI Overlord<br />
** Thanks again to Badger.<br />
<br />
* Put in a lot of code adjustments to prevent errors in ReevaluateUnitOrders, and to make them give us better error messages if they do encounter any. Also updated some of the other methods in the same class for good measure. On MP clients, also made it so that it just ignores these errors, since they will be quickly corrected by host-sync.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* When there is a stack of n number of ships, it already does up to n*x damage per shot from that stack, where n is at most 5, but lower if the stack is smaller. This is fine.<br />
** For single-shot small ships in stacks, we were also already adding on extra shots at a rate of 1 shot extra for every 5 ships, which also is fine and leads to the same total damage output.<br />
** However, for multi-shot small ships in stacks with s number of shots, they were getting only 1 extra shot per n ships, not n*s extra shots. Fixed.<br />
** TLDR: Stacked MLRS corvettes will now fire more shots, along with anything similar to them.<br />
** Thanks to Puffin for reporting.<br />
<br />
=== More Queued Order Types ===<br />
<br />
* Something we had thought was not really going to be possible in the game, now is implemented: the queuing of some certain kinds of orders after movement, attack, traverse-wormhole, or whatever. <br />
** The new commands that are supported basically use any of the existing buttons or hotkeys as usual, but you hold shift to append them to the end of the commands you already have in place. If you have no commands queued up already, then it will just do the thing immediately.<br />
** Unload Transport<br />
*** So for instance, give a some move orders to a distant planet, and at the end of that keep holding shift and press U (or click the interface button. The transport will unload when it gets there.<br />
*** Note that Load Transport is NOT supported. This requires all of the ships to actually get loaded properly in, potentially from other planets, and the checking for that is both really complicated and also hopefully a far less common case.<br />
** Set Pursuit Mode on or off<br />
** Set Attack-Move Mode on or off<br />
** Set Stop-To-Shoot Mode on or of<br />
** So, for instance you can give some regular move orders to one side of a planet, then give a regular attack order, then have it turn on (or off) attack-move mode.<br />
*** We can't think of any use cases for turning off a mode like this at a destination, but it is possible.<br />
*** We also can't really think of any use cases for turning ON a mode like this at a destination, because ships will follow your direct move and attack orders even when in attack-move mode, which is functionally identical to the use case here. But it does exist now, in cases it's useful.<br />
** The ability to unload transports at the destination is a big deal, at any rate, since there was no way to have that happen in an automated fashion before.<br />
** Thanks to Bummeri, Admiral, Daniexpert, StarKeep, NB_FlankStrike, Asteroid, deo , and darkarchon for requesting.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* AMU:<br />
** Fixed an exception in the Auto-Juggle Energy code in conjunction with the Micro Mod Collection that happened when both types of converters were present.<br />
*** Thanks to ussdefiant60 for reporting<br />
** The description now displays that it adds the functions to adjust starting and incremental AIP or AIP reduction, as well as having the Auto-Juggle energy setting in the first place<br />
*** Thanks to Smidlee for suggesting<br />
<br />
== Version 2.714 Frigate Surge And CSGs ==<br />
(Released January 9th, 2021)<br />
<br />
* The Praetorian Guard no longer gets any mark level upgrades above the ambient of the AI during tutorials. This makes it so that the PG does not show up in force and decimate new players in Midlander.<br />
** Thanks to Matalus and smidlee for reporting.<br />
<br />
* Fixed a very strange error that we are not sure how it was not erroring for everyone, where we were calling some window management stuff from a background thread for the last month or so. Only cracking it open in the unity editor seemed to make it error. At any rate, it's corrected now, but we're not sure if it actually affected anyone.<br />
<br />
=== New Included Mod: AI Shield Generators by cml ===<br />
<br />
* This mod adds a special faction, "AI Shield Generators," to the game. This faction consists of a number of shield generators which must be destroyed before the dire guard posts on the AI Homeworld(s) can be destroyed.<br />
** Setup:<br />
*** Enable one or more "AI Shield Generators" factions.<br />
*** Set the Faction Color, Number of Shield Generators, and Number to Destroy for each AI Shield Generators faction. The first two options should be self-explanatory, while the last is explained in more detail below. It is recommended that you select a different colour for each faction so that you can distinguish between them in-game.<br />
** Gameplay:<br />
*** During the game, you will discover that a number of Shield Generator structures have been added to the map. These structures will be invulnerable to damage until you capture the planet they are on. Alternatively, there is a hack which will allow you to destroy them outright without capturing the planet.<br />
*** Each Shield Generator faction represents a network of AI Shield Generators. Destroying a number of generators equal to the Number to Destroy will cause any remaining generators in that network to self destruct.<br />
*** In games where at least one Shield Generator network is present, an AI Homeworld Shield Generator will be added to each AI Homeworld, but they will self-destruct once all of the non-homeworld shield generators have been destroyed.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* AMU<br />
** Fixed the CostBasedShipSpawner.canSpend() method instead of using the current spawn target cost always using the minimum cost contained. This lead to the ship spawner being able to go into debt even when it wasn't supposed to.<br />
** Created the CostBasedShipSpawner.canAffordAnything() method to allow a check on whether or not anything at all can be afforded.<br />
<br />
* KM<br />
** Fixed a slight debug mishap where until Kaizers Marauders were set to spawn by the true invasion time they would read that they were defeated.<br />
*** Thanks to Doc_Den for a save that lead to finding this.<br />
<br />
* More System Defenders mod by CRCGamer updated:<br />
** Notable changes are that frigates are generally less power hungry, counts found in fleets, ARS, and GCA have gone up. And I rebalanced the AI Cruise Missile Battery to be a little more threatening.<br />
<br />
=== Buffs To Player Frigates ===<br />
<br />
* Frigate energy cost rebalance (buffs):<br />
** All of the frigates with energy cost 12.5k now have an energy cost of 9k.<br />
*** This is almost all frigates.<br />
** Defensive assault frigates (station-keepers) are now 6k energy instead of 12.5k.<br />
** Watchman Frigates (station-keepers) are now 1k energy instead of 3k.<br />
** Raid Frigates are now 6.5k instead of 7.5.<br />
** Brawlers and Muggers are now 10k instead of 25k.<br />
** Thanks to CRCGamer in particular for the suggestions, and ussdefiant60 as well.<br />
<br />
* Balance adjustments to make Frigates more usable by always having a bit more of them in ship lines:<br />
** For all of these, the changes have been pretty universal.<br />
*** Ranges of 1-2 are now 2-2.<br />
*** Ranges of 3-3 are now 4-4. (This is mostly Raid and variants. Are they now too strong?)<br />
*** Ranges of 2-3 are now 3-3.<br />
*** Ranges of 2-2 are now 3-3.<br />
*** Ranges of 1-1 stayed that.<br />
** Base Game:<br />
*** Assault Frigate (no changes to its variants, where were all ranges 1-1; are these now too weak?)<br />
*** Raid Frigate<br />
*** Bounty Hunter Frigate<br />
*** Apparition Frigate<br />
*** Suppressor Frigate (range of 2-4 became 2; this is crazy powerful in general).<br />
*** Siege Frigate<br />
*** Devestator Frigate<br />
*** Ion Disruptor Frigate<br />
*** Tritium Sniper Frigate<br />
*** Ramifier Frigate<br />
*** Warbird Frigate<br />
*** Ripper Frigate<br />
*** Warbird Hydra Frigate<br />
** DLC1:<br />
*** Tesla Torpedo Frigate<br />
*** Tackle Drone Launcher Frigate<br />
<br />
* The assault frigate variants that had a range of 1-1 now have a range of 2-2. For the defensive station-keeper ones that were 2-2 for some, and 1-1 for logistical, those are now 3-3 and 2-2, respectively.<br />
** Thanks to zeus for suggesting.<br />
<br />
== Version 2.713 Marauding Again==<br />
(Released January 5th, 2021)<br />
<br />
* Changed the balance_distance_after_which_ships_will_not_chase_targets from 50k to 80k range.<br />
** This is no change to any vanilla entity because nothing had over 50k but under 80k range, but allows for modded planetary-range weapons that still do not prohibit a ship from moving towards targets if needed.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* Updated parts of AMU and Kaizers Marauders so Kaizers Marauders now work again. Mysteriously Visual Studio claimed until the 2nd update dropped that no errors existed, yet the mod would still crash... Until now.<br />
<br />
* AMU:<br />
** Fixed the ExecutorFakeFaction.instance having a false or missing self-reference.<br />
** Fixes and improvements to the CostBasedShipSpawner<br />
*** Fixed the PlanetFaction Wrapper being null instead of its content being null.<br />
*** Fixed the maxTierToUse actually being one short of the actual max tier to use. This slipped past months of Kaizers Marauders testing. It may have been that invasions already limit the amount of raiders and spawn a fixed amount, so this might've never actually mattered as much.<br />
*** Fixed the not updating its min/max spendable values if the min/max tier to use change. This also fixes the canSpend() method not taking the MinCostContained of the drawing bag with the minimum tier into account correctly.<br />
*** The CostBasedShipSpawner now has the ability to NOT spawn all ships on the same coordinates but spread them out. Sadly this cannot take ships into account that are spawned in the same cycle.<br />
**** These canges are potentially bug-heavy, but so far things seem to work out. Additional debug info will be generated if things go wrong.<br />
** Fixed the ExecutorFakeFaction being hostile to AI-allied factions, and only friendly towards AI Sentinels themselves.<br />
** GetAllPlanetsNearOwnedButNotOwned now returns not only a list of the planets, but a duo list of the planet and the hops distance. The distance is the closest distance possible to any of the sources.<br />
** Now has a definition for "Planetary" range (which is 70k base, at the default range modifier of 0.8x it becomes 56k which is slightly larger than double the gravity well, which is 52k).<br />
*** Background: Now that every weapon with 100k or higher range counts as a sniper and doesn't move towards enemies some entities in Kaizers Marauders and Devourer Chrysalis needed to have a weapon range that is planetary, but does not make them stationary snipers.<br />
** Source Code was updated.<br />
<br />
* Civilian Industries Update<br />
** Changed some references in the project to point towards the latest game dlls.<br />
** This should finally stick a nail in the Raid notifications bug.<br />
<br />
== Version 2.712 Civilian Pause ==<br />
(Released December 31st, 2020)<br />
<br />
* Under the hood, the game has always had a "toggle pause" command that basically says "whatever the state of pause is when I execute, invert it."<br />
** This was problematic in multiplayer, as several people might hit pause at the same time, or might repeatedly hit pause if there's a lag situation, and this would cause lots of confusing inversions.<br />
** Now what happens is that if it's unpaused locally, it sends a pause command. If it's paused, it sends an unpause command. This way, even if 16 people hit pause all at once, it will be 16 pause commands, 15 of which are redundant. It won't be 16 state flip-flops with a result of unpaused since it was an even number.<br />
** Hopefully this solves all of the pausing woes in multiplayer, but if not then please let us know and we can consider some more harsh methods that might subtly irritate people if we're not careful (things like "can't change pause state for a short time after it was just changed, etc"). The latter can always be a tuneable option if that's where we have to take it.<br />
** Thanks to Hecsa and Arides for reporting.<br />
<br />
* Civilian Industries updated for the latest version, and now works again!<br />
** Rebuilt to fix a reference changing from an attribute to a property.<br />
** Added some extra debug information that ClearOrders now requests.<br />
** Thanks to StarKelp for the update to his mod.<br />
<br />
== Version 2.711 Deep Memories ==<br />
(Released December 30th, 2020)<br />
<br />
'''This version is coming back out of beta faster than we had planned. People seem really happy with the new budgets, and we have too many fixes in this version and the last one for us to feel good about holding those back out of worry for any balance edge cases. If you wind up running into something like that, we apologize in advance, but it seems solid.'''<br />
<br />
=== Deepstrike Intelligence ===<br />
<br />
* Deepstrikes just got vastly more dangerous. Previously, if you put your ships into a transport then the AI ignores that for deepstrike purposes. <br />
** This led to various kinds of cheese on the part of players like just putting your ships back into the transport periodically to cancel the countdown timer of an AI Reserves attack. <br />
** We wanted to be able to retain the ability for you to fly through a bunch of planets in your transport without triggering deepstrikes, but get rid of this cheese. Until today we hadn't figured out a way to do it.<br />
** Now there is a concept of "full alert" and "residual alert" when it comes to planets that are suffering from a deepstrike from those mean players. <br />
*** Essentially, until you go about actually triggering what would always cause a deepstrike before now, nothing changes. If you have your ships in transports and move them along through enemy planets, that still works. Hooray!<br />
*** But once you have unloaded at a planet that triggers a deepstrike, it will remember that you did that for 10 minutes of gametime after you have last had unloaded ships that would trigger the alert.<br />
*** During this period of extra awareness, the AI will actually not just monitor your ships in transports, but also your ships on adjacent planets to the planet in question. Remember, a deepstrike is always deep in AI territory. So you have to retreat at least two hops away to stop them from hurling things at you. Either that, or go ahead and win quickly! Until that 10 minute period is up, even returning to be adjacent to this planet will trigger a near-immediate response. It won't reset the countdown unless you actually directly unload ships on that specific planet again, though.<br />
** As part of this, the deepstrike danger galaxy map view has been updated to reflect all of this, and have the proper details in tooltips for affected planets.<br />
** Additionally, we made some updates to the deepstrike notification in general to make it clearer what the numbers are, and when it's in absorb mode versus actively after you.<br />
** Thanks to Arides and his play group for reporting.<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in some logic that should make DoShotHitLogic errors on the client less common, as well as less damaging to the overall performance of the client. It also tells us exactly where the error is now, if it happens again, so we can truly finish the rest of it.<br />
** Thanks to Arides for reporting.<br />
<br />
* Some sort of exception in the Stage3 logic for a faction getting into an infinite loop is happening for a couple of players, but now the game will provide extra information when it logs the death of those threads.<br />
** Thanks to Isiel for reporting.<br />
<br />
* The various popup windows now have some extra lines at the bottom of them to work around the scrolling window area from incorrectly calculating very tall text sets and thus cutting off the bottom of some of them.<br />
** Thanks to Daniexpert, ParadoxSong, CRCGamer, Smidlee, Chthonic_One, and others for reporting.<br />
<br />
* Fixed another case where reconquest seeding would throw exceptions on multiplayer clients.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* When fireteams try to attack a planet but don't have a target set, it now logs an invisible warning and keeps on going rather than throwing and exception and blowing up the entire thread it is on. It also now logs which faction the fireteam belongs to.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Actually, in the two places where it is possible to have even a warning from a fireteam trying to attack a planet but having no target, both are parts of regiments of fireteams that are aimed at a planet, so we just use that planet now and correct the missing (for whatever reason) data.<br />
<br />
* In the case of a mod that is not updated and has a missing method exception during an attempt to draw a notification tooltip, it will now just not draw the tooltip. Next time the mod author compiles their code, the compiler will make them fix it, but until then it won't break games.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Greatly expanded the instrumentation on the DoFactionStepLogic method logic so that if we have an error happen in there we will know exactly where it is and what faction it is for. This doesn't actually fix anything, and the errors in there seem very rare, but it will let us fix them after someone runs into them again.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Fixed an issue where one branch of code that is used to create shots (bullets) would not properly set the origin system, even in single-player and on hosts.<br />
** This branch is not used by any actual main game code, but appears to be used by some mods. That code branch is now marked as deprecated, which will force mod authors to recompile when they start using this method, with instructions on what to do. In the meantime, any mods that are triggering this code path will just have those particular shots not appear, since they would only be a source of errors, anyhow.<br />
** Thanks to NR SirLimbo and Isiel for reporting.<br />
<br />
* Fixed another issue where if the timing was just wrong, we could create shots without a parent system, mostly in the case of multiplayer clients.<br />
<br />
* Not sure what was happening or why, and we may have fixed it two versions ago, but DoCombatStepForPlanet() now has a lot more instrumentation and will catch exceptions and report them more nicely rather than having its entire thread potentially suicide. This would probably have only been relevant for multiplayer clients, but the fix would help anyone.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Put in some extra logic to prevent the "Shot had no origin system, so discarding" spam when you are loading a savegame off disk. In those situations, it's valid to happen in general.<br />
** In the case of clients in multiplayer, it's much more rare to be valid, but still can happen, so this is also still quieted there while still trying to do connections where it can.<br />
** This sort of log spam that slows down the game right after load should be a thing of the past.<br />
<br />
* Fixed a bug where Hydral outguard minor heads were spawning hydral major heads when dying.<br />
** Added an ability to specify "None" as the type on any table-style field and have it return null. Prior to some xml upgrades it was maybe possible for it to be just set to null by having "" set, although we're not positive that would actually have worked anytime recently. At any rate, now there's a pattern that works and is also clear.<br />
** Thanks to tadrinth for reporting.<br />
<br />
* Fixed a bug from the last couple of versions where flagships would often fly off to random-seeming locations. This was them attempting to be "assisters" in a way that was unhelpful, and usually related to claiming units, which they can do from any range when needed.<br />
** This change will prevent something like a repair factory from ever wandering around the planet if you put it in pursuit mode... but we can't really think of cases where it would be desirable for one to do that. They have a long enough range that you tend to want to park them where you want to park them.<br />
** Thanks to Arides and Kahuna for reporting.<br />
<br />
=== Audio Fixes ===<br />
<br />
* Removed some old constants from the external constants xml, and in the case of the audio-alert-related ones, moved those into the settings.<br />
<br />
* New Audio tab settings:<br />
** Alert If Enemy Attackers Overpower By Ratio<br />
*** Give an audio warning only if enemy forces outnumber friendly forces on the planet by this ratio to one. So for instance, if you select the default of 5, then the enemy must outnumber your forces 5:1 (they must locally be 500% stronger than you). This prevents you from getting too many voice alerts about threats that you aren't worried about.<br />
*** Note: the old version of this in the external constants xml was still 5, but it wasn't working properly.<br />
** Min Enemy Strength Required For Major Attack Warning<br />
*** Only give audio warnings about 'major' attacks against your planets if the total enemy attacker strength is at least this. Default is 20.<br />
*** Note: the old version of this in the external constants xml was defaulting to 5 strength, instead.<br />
** Min Seconds Between Attack Alerts On Same Planet<br />
*** Do not give audio warnings about attacks on a given planet more frequently than this number of seconds. Default 300.<br />
*** Note: the old version of this in the external constants xml was still 300.<br />
** Note: the code for all of this has been completely rewritten, as the old version of the code was really unclear and often let us bypass these limiters despite them existing. So it was leading to way too many audio notifications about unimportant situations.<br />
** Thanks to Kahuna, Lord Of Nothing, and others for reporting.<br />
<br />
* More new Audio tab settings:<br />
** Min Seconds Between Attack Alerts On Home Command Station<br />
*** Do not give audio warnings about attacks on an unprotected human home command station more frequently than this. Default 30. Bear in mind you lose the game if this is lost (or if all of these are lost if you are in multiplayer).<br />
*** The old behavior was to give a warning after there had been at least 1 enemy strength on your planet, and then there was not, and then there was again.<br />
** Min Seconds Between Attack Alerts On Shielded Home Command<br />
*** Do not give audio warnings about attacks on a human home command station that is under a bubble forcefield more frequently than this. Default 60.<br />
*** The old behavior was to give a warning after there had been at least 1 enemy strength on your planet, and then there was not, and then there was again, and not differentiate between this and the warning above.<br />
** Alert If Your Shielded Home Command Overpowered By Ratio<br />
*** If your home command station is under a bubble shield and getting shot, then only give an audio warning only if enemy forces outnumber friendly forces on the planet by this ratio to one. So for instance, if you select the default of 2, then the enemy must outnumber your forces 2:1 (they must locally be 200% stronger than you AND shooting the forcefield protecting your home command station). This prevents you from getting too many voice alerts about threats that you aren't worried about.<br />
*** Note: the old values were hardcoded in, and the math was inverted so that it would give an alert any time the enemy was stronger than 1/5th of your own forces, and at least 1 strength total. This was a source of great annoyance for folks.<br />
** Thanks to Kahuna, Lord Of Nothing, and others for reporting.<br />
<br />
* At the bottom of the escape menu details screen, it now has a new section which includes things like sound playbacks that are queued, and things of that nature.<br />
** If you feel like you are having some audio issues, this will let you see if there's some sort of backlog there. Look for the lines "SFX Requests" and "SFX Delayed Requests" in particular.<br />
<br />
* The way that playback of delayed voice clips is done is now slightly more efficient, as well as hopefully slightly more correct.<br />
** It now sets a time in the future at which to play the clip, versus a countdown timer that gets reduced by the deltatime. This lets us switch back to using a struct instead of a class.<br />
** Additionally, we are now making sure that nothing can be delayed more than 10 seconds (even that is excessive). If there's a worse delay than that that happens now, it's somewhere else further down in our pipeline.<br />
** Thanks to folks for various older reports of this, like wm46.<br />
<br />
== Beta 2.710 The AIs Visit An Accountant ==<br />
(Released December 29th, 2020)<br />
<br />
'''This is on the steam beta branch! Be sure to switch to the current_beta branch if you'd like to give this a shot (which we'd appreciate). There are a ton of balance changes in this one, and more coming soon, so no way do we want to inflict this on folks without giving them the ability to test it first. The idea is a more balanced and interesting experience, really in every phase of the game at every difficulty level.'''<br />
<br />
* Forcefield guardians are now 1/100th as likely to spawn as previous, particularly when it comes to the Warden fleet. This won't help existing savegames with a bunch of them, and it's still possible for lots of forcefield guardians to show up, but it should not be very common.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
=== AI Income Balance By Difficulty And AIP ===<br />
<br />
* Removed from the ExternalConstants table:<br />
** balance_seconds_times_planets_worth_of_aip_required_to_accumulate_one_cap="50"<br />
** balance_ai_purchase_cost_per_cap_ai_income="400"<br />
** balance_strength_per_cap_general="200"<br />
*** This has been replaced by balance_base_difficulty_for_raid_traversal="10", which is the equivalent of what was being used in the code previously.<br />
*** Arguably this shouldbe 20 instead of 10 in order for this to match what the AI budgets were based on in the past, but honestly the two concepts are not actually related.<br />
<br />
* Updated the math for GetOverallAIPurchaseCostGainPerSecond()<br />
** The old logic was was effectively the following:<br />
*** EffectiveAIP / 20<br />
*** Mult by balance_ai_purchase_cost_per_cap_ai_income (400)<br />
*** Mult by ai_purchase_cost_income_multiplier for the AI Difficulty (9.5 on diff 10, 2 on diff 7, 0.8 on diff 5).<br />
*** Divide by balance_seconds_times_planets_worth_of_aip_required_to_accumulate_one_cap (50).<br />
*** Then do some other stuff that is fine, and we'll ignore that other stuff for now.<br />
** As you can see with the old logic on higher difficulties in particular, any and every AIP change upwards is incredibly painful, partially since there's no baseline income. Everything is added income completely dependent on the AIP.<br />
** There's a spreadsheet with the new logic: https://docs.google.com/spreadsheets/d/1oSsxmKXDxP28Hc-ZYXngCnqnu3mc0vXipGEdj3HqKUo/edit?usp=sharing<br />
** The new logic requires the following data changes:<br />
*** ai_purchase_cost_income_multiplier has been removed from AI difficulty levels.<br />
*** budget_base_income, budget_income_multiplier_for_AIP_Over_10, budget_income_multiplier_for_AIP_Over_50, budget_income_multiplier_for_AIP_Over_100, budget_income_multiplier_for_AIP_Over_200, budget_income_multiplier_for_AIP_Over_400, and budget_income_multiplier_for_AIP_Over_600 have all been added.<br />
** The formula for the new logic is not perfect in terms of isolating each coefficient to each range, but it does a really good job of letting us tune the ranges in general and arrive at a variety of different slopes:<br />
*** BaseIncome+((MIN(50,CurrentAIP-10))*Mult_Over_10)+(MAX(0,MIN(CurrentAIP-50,100))*Mult_Over_50)+(MAX(0,MIN(CurrentAIP-100,200))*Mult_Over_100)+(MAX(0,MIN(CurrentAIP-200,400))*Mult_Over_200)+(MAX(0,MIN(CurrentAIP-400,600))*Mult_Over_400)+(MAX(0,CurrentAIP-600)*Mult_Over_600)<br />
*** The end result is something that is substantially more income at the lower difficulties (4 and down), while still keeping them very tame. They are not so incredibly poor as before.<br />
*** At AIP 10, the general bump is at least around 300% over what it used to be, but on difficulty 5 the budget at AIP 50 is only 8% what it was. For difficulties above 5, the budgets are only about 75% of previous at AIP 50.<br />
*** Overall the budgets are higher for AIP 4 and down, and in general you can see how that works on the spreadsheet here: https://docs.google.com/spreadsheets/d/1oSsxmKXDxP28Hc-ZYXngCnqnu3mc0vXipGEdj3HqKUo/edit#gid=1751215831<br />
** Thanks to TechSY730, ArnaudB, Strategic Sage, CRCGamer, -NR-SirLimbo, Puffin, waspwasd, and others for helping with discussion and thoughts on this.<br />
<br />
==== And For Multiplayer ====<br />
<br />
* When there is more than one human empire present in a galaxy, the budgets of the AIs actually now ARE scaled up, counter what we had planned to do in the past:<br />
** At 2 human empires, the budget for each AI is 1.33x up.<br />
** At 3 human empires, the budget for each AI is 1.8x up.<br />
** At 4+ human empires, the budget for each AI is 2.4x up.<br />
<br />
* It's worth reminding that when there are multiple allied AIs, they already all get lower budgets, which happens after this increase. However, we are redoing the budget logic.<br />
** Old logic:<br />
*** On difficulty 5 and below, each AI gets one portion out of the whole of what a single AI would have. So 3 AIs each get 0.33x, 2 AIs get 0.5x, 1 AI gets 1x, etc.<br />
*** On difficulty 6 and up, if it's 2 or 3 AIs then they get 0.75 of normal for each, and if it's 4+ AIs then they each get 0.5x of normal.<br />
** New logic:<br />
*** This no longer differentiates by difficulty level, as there are already plenty of dials dealing with that.<br />
*** At 2 AIs allied to one another, the budget for each is 0.9x.<br />
*** At 3 AIs allied to one another, the budget for each is 0.8x.<br />
*** At 4+ AIs allied to one another, the budget for each is 0.7x.<br />
<br />
* If there are multiple humans versus multiple AIs, it all gets multiplied together.<br />
** So as one example, 4 humans versus 4 AIs, then those are combined and the original budget of whatever (we'll call it "100" for easy math) becomes 240 because of the humans, and then down to 70% of that because of the AIs, so 168 for each.<br />
<br />
==== All Four Difficulty Meters Expanded ====<br />
<br />
* For whatever reason, previously you could never set the Praetorian Guard Difficulty level, so it was always set to 5.<br />
** Now you can properly set it from 1 to 10 per each AI in a game. A "perfect 10" game is now 10/10/10/10, not 10/10/10.<br />
<br />
* The way that the starting budgets, and the bonus budgets, are calculated for the hunter fleets are now entirely based on the hunter themselves and not in any way on the actual AI sentinels difficulty.<br />
** Previously, the starting budgets and bonus budgets were defined as increasingly large on the higher hunter difficulties, but also were affected by the sentinels difficulty quite a lot, so a 10/10 was multiplicatively harder than a 10/7 or a 7/10.<br />
** This basically is a huge nerf to the hunters if you were playing with them AND the sentinels cranked up, or if you were playing with these on the defaults but the main AI higher. If you were playing with these higher but the main AI more in the default range, then it's about the same as it was.<br />
** It is entirely possible we are going to need to rebalance these substantially, so if there is any feedback please let us know.<br />
** On hunter difficulty 5, you wind up with about 2 strength at the start, and maybe 3 total strength after 3 minutes if you don't do anything. On hunter diff 9, it's more like 9 total strength after 3 minutes, and much more rapidly aggressive.<br />
<br />
* In the lobby, you can now see all the details of the hunter fleet difficulty levels in their tooltips.<br />
<br />
* The Warden and Praetorian Guard fleets have also gotten the same sort of upgrades, with the ability to see what their difficulty levels do, and with their difficulty levels being redefined to be independent of the main AI sentinels difficulty level.<br />
** One of the things that was really not clear unless you went wiki-diving is that the raw incomes of these two factions are based entirely on the difficulty level of the sentinels, not their own difficulty.<br />
** Their difficulty determines their starting populations, and their population caps, but that can be quickly dwarfed by the donations from others forces of the AI (particularly donation from AI sentinels converting to Hunter, or Warden becoming Praetorian when an AI Homeworld is attacked.)<br />
<br />
* The main AI types now continue to show their narrative description, but also show some hard data to go with it.<br />
<br />
==== AI Floor And Related ====<br />
<br />
* Added a new aip_absolute_floor for each AI difficulty level, with the following values:<br />
** Diff 1-4: 10.<br />
** Diff 5-6: 20.<br />
** Diff 7: 30.<br />
** Diff 8: 40.<br />
** Diff 9: 50.<br />
** Diff 10: 60.<br />
** Note that the underlying starting AIP is still always just 10. But the effective AIP will never actually BE 10 on anything higher than difficulty 4 now, which basically has two effects:<br />
*** Firstly, it gets the game moving more quickly, with the AI being a lot less anemic at the start as the difficulty levels go up. The AI is increasingly quick to recognize you as you get up there in difficulty levels.<br />
*** Secondly, it does also give you a certain amount of "free AIP that doesn't change the situation" in each difficulty level right at the start. For instance, on difficulty 10, there are now 50 AIP that you can incur -- without any reduction -- before you even START to see the AIP rise from its new starting value.<br />
**** It's worth pointing out that this is not TRULY "free" AIP, because the floor percentage is still going up no matter what, and the game is already starting you out in a harder situation now, but it is essentially "free for a while," anyway. In the long form of a campaign it is not free at all, but in terms of short-term consequences in the first 15-20 minutes of a campaign, there's no change to the AIP responsiveness levels when you take your early objectives.<br />
***** This means the early game is likely to be more difficult at higher difficulties in general, but there's also no need for strategies where you keep the AIP ultra-low (since you can't), and instead you have the flexibility of HOW to spend your first "free for now" AIP, and after that shift into thinking about how not to raise it any more if that's your strategy.<br />
** The in-game tooltips have been updated to include wording about the new absolute floors that were added, including a special note if your actual AIP is currently lower than the absolute floor.<br />
** The reason that we didn't just flat make the starting AIP higher (which would have in some ways been simpler) is that it would have been just a straight nerf to players, versus giving the higher difficulty levels this "free for now" grace period to play around in. Once you are to the mid-game on any difficulty level, this new "absolute floor" really is not likely to be a factor at all. This just gets games off the ground faster, and makes the AI progressively more dangerous in the early game on higher difficulties.<br />
** Thanks to TechSY730 for suggesting something along these lines.<br />
<br />
* With all of the changes that have been made to AI budgets, the "Absolute AIP Floor" has just been set to 10 across the board for now.<br />
** This lets us keep the option of using it more in the future, or lets mods turn it on and use it, but effectively turns it off for now.<br />
<br />
* The initial AIP that players start with is no longer 10. It is now 10 per human empire -- so if there are 3 human empires, it will start at 30.<br />
** If you are playing single-player, or shared-faction multiplayer, there is no change here.<br />
<br />
* Added a new "AIP Never Reduces Below" mechanic:<br />
** No matter the AIP Floor, no reduction will happen that would cause the AIP to shrink below this amount, or shrink while it is below this amount.<br />
** This is set to:<br />
*** Diff 1-4: 10<br />
*** Diff 5: 50<br />
*** Diff 6: 60<br />
*** Diff 7: 70<br />
*** Diff 8: 80<br />
*** Diff 9: 90<br />
*** Diff 10: 100<br />
** How is this different from the AIP Floor? Well, the AIP will actually BE whatever the floor is. <br />
*** So if the floor was set to 180, then (ouch) the AIP would be 180.<br />
*** This is instead a limiter. At difficulty 7, if you pop an early data center and get 20 reduction any time before you have 70 AIP total, it doesn't matter. It will be there waiting for you later, but it won't reduce your ongoing early progress.<br />
*** This changes the flow of the early game, preventing you from blunting the rise of AIP for a while. In some ways, this helps to make it so that you don't need to worry with data centers early, and can focus on things later.<br />
*** Of course, as with an AIP Floor, when you pass over the "never reduces below" level, then any reductions that you previously got will kick in. So for instance, if you popped a data center to save 20 AIP too early on diff 7, and then you get your total up to 90 AIP, your actual total will stick at 70 for a while. If you did 60 AIP of reduction, then it will stick at 70 for a LONG while.<br />
*** Essentially, what this prevents is advanced players denying the AI any chance to play its own early game. It allows for the same amount of flexibility in AIP reduction in the really long term, assuming you go over the very low AIP counts, and it does allow you to deny the AI at every level the ability for it to really get into its mid-game or late-game.<br />
*** If folks find this too restrictive, we can adjust it, but particularly with all of the nerfs to the AI budgets on AIP in the 100-600 range on difficulties 5+, this is something that seems to pair well with that. We definitely like the idea of low-AIP games, but even 100 AIP at the end of a game is considered ultra-low-AIP. What this does is prevent you riding the floor during the very early game in an ultra-low-AIP game, which gives the AI a bit more chance to react and build up, but still not TOO much.<br />
<br />
=== AI Reserves Balance ===<br />
<br />
* If players have controlled any of the planets that the AI Reserves thinks they are "attacking" any time within the last 10 minutes, then there is no warning from the AI Reserves prior to them spawning a wormhole and spewing forth ships.<br />
** For anyone who is using the normal AI Reserves Grace Period setting, which defaults to 60 seconds, this will mean that after the 60 seconds is up, you immediately get jumped by the AI Reserves. For anyone who has turned the AI Reserves Grace Period setting down to 0 seconds, they should get jumped immediately after losing a planet if it's too far from their other planets.<br />
** Thanks to Smidlee for suggesting.<br />
<br />
* The AI Reserves grace period has been updated as follows (and its tooltip now shows this):<br />
** If the highest-level AI is difficulty 8, it will give you half this time. If the highest-level AI is difficulty 9 or above, this grace period does not apply at all.<br />
** So when we get into very high-level play, the grace period for losing planets in hostile territory and having the AI strike back at you disappears entirely. This is how it was for all difficulty levels prior to October of this year.<br />
** Thanks to Smidlee for inspiring this change.<br />
<br />
* Previously, some of the AI Reserves timings were hardcoded in, and now they are data fields on the main AI difficulty.<br />
** ai_reserves_wormhole_spawn_interval was always 80, previously (this is how often there are new spawns after the first).<br />
** ai_reserves_initial_wormhole_spawn_delay was always 120 (this is how long before the first spawn if you're deepstriking but didn't lose a planet).<br />
** ai_reserves_wormhole_despawn_time was 180 (how long the reserves hang around after their work is done; keeps them from popping in and out).<br />
** ai_reserves_income_increase_interval was 30 (how frequently they get more budget, which is the major balance lever for making them harder.<br />
** These now are set up by difficulty as follows:<br />
*** Diff 1: 140 spawn interval, 200 initial spawn, 100 despawn, 60 income increase.<br />
*** Diff 2: 130 spawn interval, 180 initial spawn, 100 despawn, 55 income increase.<br />
*** Diff 3: 120 spawn interval, 160 initial spawn, 110 despawn, 50 income increase.<br />
*** Diff 4: 110 spawn interval, 140 initial spawn, 120 despawn, 45 income increase.<br />
*** Diff 5: 100 spawn interval, 120 initial spawn, 160 despawn, 40 income increase.<br />
*** Diff 6: 90 spawn interval, 100 initial spawn, 180 despawn, 35 income increase.<br />
*** Diff 7: 80 spawn interval, 80 initial spawn, 200 despawn, 30 income increase.<br />
*** Diff 8: 70 spawn interval, 60 initial spawn, 220 despawn, 25 income increase.<br />
*** Diff 9: 60 spawn interval, 40 initial spawn, 260 despawn, 20 income increase.<br />
*** Diff 10: 40 spawn interval, 20 initial spawn, 320 despawn, 15 income increase.<br />
** This makes it so that on most difficulties, the AI Reserves are now less threatening, but on the higher difficulties they are even more of a big deal.<br />
** It should be harder to sneak in on a high difficulty and neuter a planet before they can get you.<br />
** Thanks to Smidlee for inspiring these changes.<br />
<br />
* Grappler Guardian nerfs<br />
** Move speed from 2,900 to 1,800<br />
** Damage from 10,000 to 3,000 <br />
** AI cost from 525 to 700<br />
** Grapplers were already ridiculously strong without the changes to the reserves, but Zeus realized these would have been just miserable in the new balance by Chris.<br />
<br />
=== AI Praetorian Guard Balance ===<br />
<br />
* Added a new gets_praetorian_bonus_to_mark_level_from_ai_faction_difficulty field to factions, which is true for the AI Praetorian Guard only.<br />
** This causes the below to kick in.<br />
<br />
* Added a new added_praetorian_mark_levels_above_ambient for the AI difficulty level, which will make the Praetorian Guard a higher mark level than the "general mark level" of the AI that they are guarding by this many mark levels.<br />
** Bear in mind that they are almost always guarding Mark 7 or Mark 6 planets, so if the ambient level is only 2 or 3, then these were really wimpy compared to the rest of what they were trying to protect until now.<br />
** On difficulties 1-4, this is just 1. So if everything else is mark 2, these will at least be mark 3 helping out defend the mark 7 planet. Not a large jump.<br />
** On diffs 5-6, this is 2. So if everything else is mark 2, these will at least be mark 4 and a bit more helpful to that mark 7 planet.<br />
** On diffs 7-8. this is 3. So if everything lese is mark 2, these are a much scarier mark 5 defending that mark 7 planet.<br />
** On diff 9, this is 4. So if everything else is 2, this is 6.<br />
** On diff 10, this is 5. So unless everything else is somehow mark 1, this is always going to be mark 7 like the planet it is defending.<br />
<br />
* Added a new upgrades_ships_to_general_mark_level_if_they_are_lower for factions, which is now applied to the following factions:<br />
** AI Wardens (NOT hunter)<br />
** AI Praetorian Guard<br />
** AI Instigators and Risk Analyzers (probably never relevant)<br />
** Astro Trains (probably rarely relevant)<br />
** What this does is make the existing ships of these factions rank up if their effective general mark should be higher. This is similar to how player ships rank up when you unlock a new tech. Normal AI Sentinels and Hunter and CPA ships all just stay at the level they were created at, and any new ships would be at a higher level as needed.<br />
** This ha a particularly outsized boost on the PG, but also can be a pretty big Warden boost if you've not been engaging the warden.<br />
*** In one test-case game where there was 21 PG Strength at the AI home world an hour into the game, all mark 1, with 95 AIP the general mark level was 2 and the AI difficulty level was 9, so all of the PG ships immediately upgraded to mark 7 on load and their strength jumped to 76.<br />
*** In that same test-case game, the Warden ships were already largely mark 2, so their strength went up only maybe 25% as they upgraded the older stragglers to mark 2. Threat did not change at all.<br />
<br />
=== Updates To Included Mods ===<br />
<br />
* AMU<br />
** Removed the Marauder-related MarauderInvasionAvoidIfHostileRollup and MarauderInvasionAvoidAlwaysRollup rollups (which were used universally anyway).<br />
** Replaced them with a 3-pronged system for factions to make smarter decisions with fireteams:<br />
*** NastyCriminallyUnvervaluedStructuresToAvoidRollup contains things such as Eyes, Nasty Picks, Conquest Vengeance Generators, Nanobot Centers, etc and will NOT block attacks, but denote that attacks will NEED to be much stronger than strength indicates.<br />
*** NastyStructuresToAbsolutelyAvoidRollup contain things that should NEVER be attacked and planets with these should NEVER be settled on. Such as, for example, hostile Dyson Spheres, Dark Spire Vengeance Generators (non-destroyables that is), etc...<br />
*** NastyStructuresToAbsolutelyAvoidAllegianceIrrelevantRollup is the same as above, but they are extremely fluid in their allegiances and unreliable allies, thus they are just off the list permanently. For the moment only used the Dyson Precursors of the Precepts of the Precursors mod.<br />
** Created AnyPresentOnPlanetOnly(), as well as Friendly-only and Hostile-only variants of it in EntityRollup for very quick checks whether or not any are present at all.<br />
*** Additionally for all of these for-specific-faction-only variants were created: TotalNumberPresentOnPlanet(), GetAllPresentOnPlanet(), GetAllStrenghtPresentOnPlanet() and AnyPresentOnPlanetOnly().<br />
** Created ShouldAVoidBecauseOfNastyStuff() which now also invalidates CanGainOwnershipOfPlanet() and ShouldBeDefended() in SmartFireteamedFactionImplementationBase when present.<br />
** This will fix Factions trying to gain control of planets with, for example, hostile Dyson Spheres which will always in time erradicate the attacker, even if the current strength is enough to deal with enemies.<br />
** Created some static faction allegiances to reduce GC churn and improve run times: AbsoluteNeutral, HostileToAll, FriendlyToPlayers, AlliedToAIs.<br />
** The ExecutorFakeFaction now bears the display name of "AI Special Operations", and is always allied to all AIs (even in civil war), and allied to all AIs are allied to.<br />
*** The purpose is to have an AI-allied faction which can be modded based on ships having certain related factions to respond to, such as creating an AI response to the various, vastly more powerful Devourer Golems in the upcoming Devourer Chrysalis mod, as well as other special mechanics for the upcoming Fatal Warfare mod.<br />
*** As before scripts can be added to the ExecutorFakeFaction which can then be made to search for the various ships, structures etc and manipulate those.<br />
** AMU Stand-Alone Features have been implemented. By default these amount to no change!<br />
*** Additional starting AIP or AIP reduction can now be set freely, anywhere from -250 to 250. This will added as AIP or AIP reduction to the default 10 starting AIP.<br />
*** Auto AIP can now be set. At an interval of 1-120 minutes anywhere from -100 to +100 AIP will be added. If set to 0 the function is entirely disabled.<br />
**** Both of these are in the "Balance" tab of the Galaxy Settings menu.<br />
*** Auto Juggle Energy is a new setting with a much more complex mechanic behind it.<br />
*** To sum it up: It's a setting in the Automation Tab that attempts to keep the player's energy pool at a at least X amount energy. Can be set to 0 to disable the function. Every second the code will scan all player-owned planet fleets and try to adjust:<br />
**** If there's too little energy more Matter Converters will be built, if possible. Additionally, if the Micro Mod Collection is installed and Energy Converters exist, those will be destroyed up to the energy threshold before even starting on Matter Converters.<br />
**** If there's too much energy as many Matter Converters as possible will be destroyed. Additionally, if the Micro Mod Collection is installed and there are no more Matter Converters to destroy then as many Energy Converters as possible will be constructed.<br />
**** The code also recognizes the player trying to build something. If the player attempts to place 5 entities (by pressing the key associates with placing 5x) with 20k cost each it will automatically try to free up another 100k energy so these can all be built.<br />
***** It's also smart enough to recognize the maximum possible amount that can be built, so if only 3 more of the 20k entities can be constructed, even if the key for 5x is pressed only 60k energy will be factored in. Note that entities that cost no or negative energy will simply be left out.<br />
**** Same goes for capturing objects. If they cost energy that energy will be added to the required balance.<br />
**** The best efficiency and safety net would be to to, for example, set the required balance to a very low value (maybe 20k so that all types of Frigates can still be built) at the start and get as much bonus metal as possible, while later on when planets are at risk setting the value to slightly more what losing the most productive would cost. This actively improves the metal economy of the player while also cutting down on the risk of brownouts when more command stations fall in quick succession.<br />
**** A notification warns the player if they are spending more than 10% of their metal income converting it to energy. The notification warning level goes up from informational to full-on-red-alert when at least 50% of the total metal income is spent on conversion.<br />
** Updated the included source code.<br />
<br />
* Kaizers Marauders:<br />
** Used the above changes to no longer have Marauders invade on planets (and disfavor neighbors of planets) with NastyStructuresToAbsolutelyAvoidTags, and totally avoid planets with NastyStructuresToAbsolutelyAvoidRollup and NastyStructuresToAbsolutelyAvoidAllegianceIrrelevantRollup on them, along with heavily disfavoring their neighbors.<br />
** This in combination with the changes to Fireteam logic in SmartFireteamedFactionImplementationBase should now fix the bug where Marauders were stuck on a Planet with a DSVG, always camping there because Fireteams told them it could be conquered, but in fact they were not allowed to settle there.<br />
*** Marauders SHOULD not get stuck if between such inconquerable planets, all they'd need is the strength to path through these planets and conquer an adjacent world, but it may inhibit their expansion. This, however, would only happen if Marauders were totally boxed in, and it doesn't account for them being able to pop up anywhere in the galaxy with invasions. It SHOULD be fine. But there COULD be issues, remains to be tested.<br />
** Fixed the notifier for superstructures not telling the player what structure is about to spawn, only what it does, and instead displaying the faction name.<br />
** Removed a potential memory leak in the superstructure notifier.<br />
** Fixed another potential bug in the superstructure notifier related to cloning itself.<br />
<br />
* Fixed a mix-up in the description for the Auto Juggle Energy option description.<br />
<br />
* Fixed a typo in the Galaxy Setting for starting AIP [reduction] and adjusted it to no longer refer to the static 10 starting AIP as this now scales with AI difficulty.<br />
<br />
* AMU:<br />
** Created GetAllPlanetsNearOwnedButNotOwned() with a faction or faction type as input to get the "neighboring" territory of a faction within a set amount of hops.<br />
** More bugfixes to the Fireteam logic to prevent especially Kaizers Marauders from getting stuck on planets they have no business on.<br />
** Potentially fixed an exception in the Marauder debugging printouts in SmartFireteamedFactionImplementationBase's FireteamMaintenance() function.<br />
** The Metal Bleed notifier (from the Auto Juggle Energy function) now has an icon, the severity now accurately factors in game speed, hovering over it shows raw values of and percentages of the metal production efficiency.<br />
*** This fixes the severity increasing for no good reason the lower the game speed went, and vice-versa.<br />
** Included Source Code updated.<br />
* KM:<br />
** Yet more debugging to prevent Marauder fireteams from becoming stuck on planets they are not allowed (for good reason) to settle on.<br />
** More fixes to the Superstructure tooltip:<br />
*** The icon of the superstructure now shows.<br />
*** The planet name will now be revealed if the planet is explored, not just if the superstructure is visible to the player.<br />
*** Clicking onto it will, if the planet is explored and not just if the superstructure is visible to the player, take the player there.<br />
* ESV:<br />
** Rescue Beacons are now no longer swappable. This didn't do anything functionally, but it did most certainly cluttered the swap-ship-line UI.<br />
** Rescue Beacons and all other types of drone projectiles are now unable to target or alert guard posts.<br />
<br />
== Version 2.709 Obedient Engineers ==<br />
(Released December 23rd, 2020)<br />
<br />
* In the build sidebar, the mark level is now the first thing that is shown in the top line where it shows the name of the things being built. With long names of units, that could sometimes push the mark level underneath the text of the metal cost where it was invisible. The end being cut off is fine, but the mark level is the important thing to be seen.<br />
** We have also made the text 10% smaller on this line, because with the recently-revised font it was a bit on the large side for a lot of units.<br />
** Thanks to Corpserule for reporting.<br />
<br />
* Depending on network latency and a few other factors (particularly running the game speed at a high rate), it was possible for multiplayer clients to have a very quiet battle where ships lost health but were not showing visible or audible shots.<br />
** The game now goes to great lengths to account for this and prevent this sort of thing. This should make the "Shot had no origin system, so discarding" silent messages in the client log vastly more rare, but they are still possible to have happen. Especially at a mega high game speed and with enough lag, it's inevitable to happen, but it really should not be too common now (whereas it was almost guaranteed to happen before, at least some).<br />
** If some folks are still seeing this happen more frequently than desired, we can work on putting in yet more data encoded into the shot objects as sent from the host to the client to work around this. We made a huge number of those changes already, but there's certainly more that we could do if it is more than just an edge case now. Just let us know!<br />
** Thanks to Ozone and his play group for reporting the most severe case we'd seen.<br />
<br />
=== Bugfixes ===<br />
<br />
* The host is now able to fix capturable fleets if they wound up seeding empty for some reason. It happens automatically as a form of self check. This being empty probably was an indication of some other error that happened during mapgen, but it's hard to say for sure. At any rate, self-correction is nice, and it now does that in cases where it is needed.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* Somehow we were having some decollision move orders that were happening for certain ships that made them move in strange wrong ways even though we check to make sure that ships are on the same planet that the order was calculated for. The only real conclusion that we can draw is that this is a ship that changed planets during the middle of the calculation. We now have it compare the current planet at the start of the calculation and at the end of the calculation, and if those do not match it does not send the decollision data that it calculated.<br />
** We already have logic for stopping the logic for ships that have a wormhole order as their next command, but potentially it happens in the part-of-a-second gap between that existing and it switching planets.<br />
** Additionally, just in case, we also now have it not queue any decollisions for any ships that have been on their current planet for less than 3 seconds.<br />
*** We wound up putting this logic in several places, preventatively. Decollision orders were already cleared when a ship changes planets, so we were extra careful to make sure to find these since these are a bit latent, clearly. The three second window should be plenty to find all of them at normal game speeds, although at extra fast game speeds it might be a bit too narrow. If that ever still causes strange movement, we'll look into that.<br />
** Thanks to poljik2, Crabby, and Isiel for reporting.<br />
<br />
* When decollision move orders are invalidated, it now always does a more thorough job and removes the decollision coordinates on the entity itself. This may have been part of the very rare "move to wrong location" issue.<br />
<br />
* Fixed a number of bugs that were causing notifications to either show a random icon when nothing was set, or to show no icon at all. This affected a good portion of our icons, where the code was not really set up to actually draw the new icons we had set up for them.<br />
<br />
* Fixed a potential bug for speed group units that were calling GetTotalDistanceToFinalMoveTarget() and potentially erasing a lot of orders as invalid as they did so. Nobody reported it, but it was probably a thing.<br />
<br />
* The Extra-Strong Marauders that zeus made for Badger will no longer appear in new games. All existing Extra-Strong marauders will blow themselves up now.<br />
** Undo the balance problems for marauders with their extra strong raiders. Those stronger units will come back in the future sometime, but in a more limited way under different circumstances.<br />
** Thanks to ArnaudB for reporting.<br />
<br />
* Quieted some pointless steam errors that could happen when a multiplayer host killed their program non-gracefully.<br />
<br />
* Put in a couple of minor protections for stale text showing next to planets. We've seen it happen, but have trouble duplicating it. Is it possible that there are some very specific conditions like loading a savegame that is much earlier into the game after playing another way later in, or something like that? We've tried testing that and a few similar theories, but can't duplicate it with those. We also tried a code review, and did not see anything wrong. Hopefully it is intermittent enough to not be a true problem until someone figure out how to help us reliably replicate the issue.<br />
** Thanks to Kahuna and Crabby for reporting.<br />
<br />
==== Engineers In Particular ====<br />
<br />
* When engineers are given wormhole orders, they are now actually obedient.<br />
<br />
* When engineers are explicitly told to assist a factory, they will now do so regardless of the factory type.<br />
** Previously there was a bug that only made them work with stationary factories that way, not mobile support ones.<br />
** Thanks to Strategic Sage for reporting.<br />
<br />
* When engineers are not in Pursuit mode, they will now gang-up assist a factory within their assist range, if available.<br />
** It doesn't matter if they spread out their assistance or not, since 10 engineers assisting 1 factory while a second factory just does normal speed is equal to 5 engineers each helping those two factories.<br />
** Previously, engineers had to be in pursuit mode to automatically choose to help a factory.<br />
** Thanks to Strategic Sage, ArnaudB and Metrekec for reporting.<br />
<br />
* Fixed several bugs with engineers helping with the construction of things in general, which led them to stop building things before they were actually finished, etc.<br />
** Thanks to DEMOCRACY_DEMOCRACY for reporting.<br />
<br />
=== Balance ===<br />
<br />
* Data Centers now increase in volume on larger maps. It says the following in their tooltips:<br />
** On maps larger than 80 planets, the number of data centers selected increases by half the scale of the extra number of planets. So on 160 planets (200% planet count), it would give you 150% (9 by default) data centers.<br />
** Thanks to CRCGamer for suggesting.<br />
<br />
* Added a new is_immune_to_zombification for faction types, which is now true on the three types of zombie factions and on the "natural object" faction.<br />
** This prevents any ships in those factions from being nanocausted or zombified, though they can be [redacted] (future feature).<br />
** If not being able to play "zombie pong" is hated, then these can easily be turned off via just xml. But the goal is to not needlessly prolong battles when you have two zombifiers against one another.<br />
** Thanks to Ozone, Metrekec, Chthonic_One, CRCGamer, and Badger for weighing in on this.<br />
<br />
* After lots of feedback from folks disappointed that zombie pong was gone, we are bringing it back. The feature to disallow factions from being zombified remains, but is not being used on the zombie factions.<br />
** Thanks to Strategic Sage and many others for bringing this up.<br />
<br />
* General reductions to the Extragalactic War ship speeds. Spire ships can now catch almost all of them.<br />
** Planetcracker and Mothership speeds have been reduced from 1000 to 400. <br />
** Flenser was already at 200. It's staying there for now.<br />
** Thunderchild reduced from 800 to 500.<br />
** Jackalope reduced from 2200 to 1400.<br />
** Hunter / Annihilator reduced from 700 to 600.<br />
** Chimera from 600 to 400.<br />
** Wyrm, Wendigo, and Wendigo Drones from 2200 to 1200.<br />
** Hunter / Seeker from 1000 to 500.<br />
** Phoenix from 2200 to 1200.<br />
** Poltergeist from 1000 to 300.<br />
** Maugrim from 1000 to 300, and their drones from 1600 to 600.<br />
** Thanks to Astilious, Lord Of Nothing, Chthonic_One, CRCGamer, zeusalmighty, Ozone, and others for weighing in.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* AMU: More adjustments towards Chrysalis Devourer:<br />
** The ExtendedHackingImplementation now supports metal and science costs on launch, per second and whether or not the hack auto-cancels if the limit (on cost 0 in storage, on granting metal, since there's no limit to stored science, the metal storage limit) would be exceeded.<br />
** CheckIfHackIsDone() in ExtendedHackingImplementation now checks for the hacker's hacking points to be sufficient.<br />
** Added an auto-description feature that will provide additional info to the various factors (if a hack is done by a battlestation/citadel, if it costs metal/science, all that kind of stuff). This affects all hacks in Kaizers Marauders that use such special mechanics.<br />
** The WarpToPlanet function also accepts a location to warp to. Even if it's on the same planet the location is always used.<br />
** Created SetEntityPath as a simple means to create have a ship move somewhere.<br />
** Created FactionAllegiance.ResetAllegiance() in order to reset an allegiance without provoking a ton of GC churn and a need for comparison.<br />
** Added a variant of getMarkLevelFormated() to the AMU core and ArcenDoubleCharacterBuffer extensions that takes in a byte of the actual mark. Mark 0 refers to markless.<br />
* Kaizers Marauders were adjusted to work with these changes<br />
<br />
== Version 2.708 Mapgen For Multiplayer ==<br />
(Released December 21st, 2020)<br />
<br />
* The icon for cross planet attacks has been updated to a stylized prison cell rather than the stylized handcuffs. Now that we have different severity colors for events, this will be vastly more visible.<br />
** Thanks to Badger for suggesting.<br />
<br />
* In the medium tooltips, it now shows the "G-Speed" of ships if they have a group-move speed that is different from their normal base speed. In the full tooltip, it now shows what the original speed of the ship would have been, if there is a group move speed, since now the original is not shown up in the main stats area. This makes group move speeds easier to understand at a glance, for new folks in particular.<br />
<br />
* We had some old logic in the game for not having sniper-range-style ships chase targets, but it was set at a value of 120k or so range, and so did not handle some lower-ranged ships that still have no reason to do this sort of movement. Artillery Golems have a range of 99,200, for instance.<br />
** We have now set up a new external constant, balance_distance_after_which_ships_will_not_chase_targets, rather than having this hardcoded. And this is now set to 50k, which is just slightly less than the diameter of the gravity well. Any ship with that level of range should not be chasing its targets.<br />
** Thanks to GreatYng, Arides, ArnaudB, Isiel, CRCGamer, TechSY730, and Metrekec for reporting.<br />
<br />
=== Map Seeding Logic (Mostly Multi-Faction MP, But Also A Bit More) ===<br />
<br />
* The seeding for all of the major capturables is now fully updated to be based partly on how many human empires there are, and the tooltips in the galaxy options now also reflect that.<br />
** Additionally, when it comes to seeding "one near the player homeworld," that's now "one near each human homewold," which by itself already makes multi-human-faction multiplayer far better than it was.<br />
** Details for each category of major capturable are below, in the order of seeding:<br />
<br />
* Regular Fleets<br />
** It's now 1 adjacent to EACH human homeworld, not 1 adjacent to A human homeworld.<br />
** There is also now a second one 2 hops out from EACH human homeworld, not 2 hops out from A human homeworld.<br />
** So far, for these early capturables this means that for a 2-human-empire game it's doubled numbers, for 3-H-E games it's tripled, etc.<br />
** If there was not room to seed any of these for some reason (cramped maps with dead ends, all humans very close together, whatever), then it will seed the remainder further out in the galaxy somewhere. Ideally in the first nearer half of the galaxy if possible.<br />
** For the rest of the flagships of this type in the galaxy, mostly that is based on galaxy map size. However, it adds 2 additional flagships for each human faction beyond the first.<br />
** All of the rest of the logic is all the same, and ultimately this does not change how single-human-faction logic works at all.<br />
*** This is a general template for how the new seeding works, so we'll describe the rest of the capturable types a bit more briefly.<br />
<br />
* Global Command Augmenter<br />
** One adjacent to EACH human homeworld.<br />
** Then this is one difference that affects both single player and multiplayer:<br />
*** There is a second one that used to be seeded within 2-3 hops from A human homeworld. Now there is one that is still seeded within a distance from A human homeworld, but that distance is now 3-6 hops.<br />
*** This means that there are fewer early GCAs in multiplayer than in single-player, and additionaly in single-player that second GCA is probably substantially further off (but not always).<br />
** Then a standard extra 1 GCA per human empire beyond the first seeded wherever.<br />
<br />
* Advanced Research Station<br />
** One adjacent to EACH human homeworld.<br />
** Rest of the seeding is the same as before, but an extra 1 ARS per human empire beyond the first seeded wherever.<br />
<br />
* Tech Vault<br />
** This is pretty rare, and it used to just seed 1, period, in the first pass, 2-3 hops from you. <br />
*** Now it seeds 1 per human empire 2-3 hops from any empire. These may wind up being very much clustered around one empire more than others. It's not meant to be quite so fair as the others above.<br />
** Then for further out, it used to always just seed a flat 4. Now it seeds 3 plus the number of human empires.<br />
** As with all the other changes except for the GCA, none of this affects single-player games.<br />
<br />
* Fleet Research Station<br />
** This is another relatively rare one. It used to seed 1 within 3-8 hops of you, but now it seeds one per human empire within those 5-10 hops.<br />
*** This is another major change to how single-player games are also going to look, as it will make you travel further to get these extremely powerful goodies.<br />
** There are others seeded further away, but as with all the other notes on seeding above, all the parts that have not changed are not detailed here.<br />
*** Except... one more change with those. For the ones with them seeded "mostly anywhere," they now will have to be at least 5 hops from human planets, instead of 3.<br />
**** Again this one affects single-player balance and gives you more goodies on the far side of the galaxy for yourself. Too many of these things were close up to you. It was more obvious when looking at this in multiplayer, but it was true in general.<br />
<br />
* Fleet Capacity Extender<br />
** This one seeds two per human empire within 2-4 hops of each player homeworld.<br />
*** It used to be 2-3 hops, so this is actually one more place where it affects the balance in single-player. One of these could be one extra hop out.<br />
** Previously, the number of Fleet Capacity Extenders were multiplied by the "Advanced Research Stations To Seed" setting in galaxy options.<br />
*** We have now added a new "Fleet Capacity Extenders To Seed" setting, instead.<br />
** For the stuff further out in the galaxy, it now seeds one extra one for each human empire beyond the first.<br />
*** Instead of being a seeding zone of 3-8 from human homeworlds, the middle-distance for these are now 4-9 out. And for the "mostly anywhere" ones, the min distance from human worlds is now 5 rather than 3.<br />
*** These are both NOTABLE changes to the balance in single-player maps as well, and will give the player more goals that are further out in the galaxy.<br />
<br />
* Battlestations<br />
** This one mostly works like it does in single-player.<br />
** However, there are an additional 2 seeded at random per human empire beyond the first.<br />
<br />
* Mobile Support Fleets<br />
** This again mostly works like in single-player.<br />
** However, it now seeds one 2 hops out from each human homeworld, rather than A homeworld.<br />
** And for the more distant fleets seeded, it adds an additional 1 per extra human empire beyond the first.<br />
<br />
* Lone Wolf Flagships<br />
** Mostly the same as single-player.<br />
** It adds an additional 1 per extra human empire beyond the first.<br />
<br />
* Citadels<br />
** This one mostly works like it does in single-player.<br />
** However, there is an additional one seeded per human empire beyond the first on the nearer half of the galaxy.<br />
<br />
* Officer Fleets (Golems, etc)<br />
** This one mostly works like it does in single-player.<br />
** However, even in single-player, there is now one extra officer fleet seeded than there used to be. These felt a bit thin on the ground, so there's now one more to choose from even in single-player.<br />
** In multiplayer, there are also an additional two seeded per human empire beyond the first. They remain all pretty much on the far side of the galaxy.<br />
<br />
=== Smaller Captuables And Destructibles Balance (MP and SP) ===<br />
<br />
* Intra-Galactic Coordinator Seeding has been updated for multiplayer to be the following general amount:<br />
** 0 per type if 0 human empire factions (not possible right now, but could be a thing in the future).<br />
** 1 per type if 1 or 2 human factions.<br />
** 2 per type if 3 or 4 human factions.<br />
** 3 per type if more human factions.<br />
** We also are making it so that they can't normaly seed closer than 5 hops to a human homeworld, rather than the 3 of before. This second part also affects single-player and once again gives more goodies further away on the map.<br />
<br />
* Coprocessors are balanced a new way for multiplayer.<br />
** It's important that there always be exactly four of these if there are any, based on the pros and cons of how to hack these, but now it won't seed any at all if there are 3 or more human empires.<br />
** Given the huge amount of power that large numbers of human factions gain with all the positive capturables, some of the AIP reduction needs to be a bit more sidelined. You'll need to deal with higher-AIP AIs in general because of the extra territory you need to take to support multiple empires.<br />
<br />
* The SuperTerminal seeding is the same in MP and SP (and hey, this is way too fun to stip out), but the response now scales wtih how many human empires there are.<br />
** If there are 3 human empires, then the response of the SuperTerminal is going to be 3x as strong at all levels. So you really will have to work together to hold off this thing, it's incredibly scary but still very valuable.<br />
** The tooltip of the superterminal now mentions this.<br />
<br />
* The number of "minor capturables" used to be hardcoded at 5 per galaxy, but now it's 4 plus the number of human empires. So for single player there's no change, but there are extras of these in multi-faction MP.<br />
** However, the more players there are, the more it seeds these away from your side of the galaxy. Normally the minimum distance from your planets was 1, but now the distance is however many human empires there are.<br />
<br />
* We used to have a Destroyables setting called "Normal Data Centers," which let you customize how many data centers you would see in your galaxy, from 0 to 10, defaul 6.<br />
** This was frankly too powerful, since a lot of these can really make the AI response rather brain dead. So this setting has been removed.<br />
** It now seeds the default 6 at all times in single-player, but for each player beyond the first in multiplayer it now seeds 2 fewer, with a minimum of 1. So in a two-factiong ame there are 2 data centers, and in a 3 player game there is only one.<br />
** These also now seed further away: it used to be that the minimum distance away was 3 hops on AI difficulty 7 and down, but now that's 5, and on 8 and up 5 has become 7.<br />
*** This keeps these to the far end of the galaxy, mainly, and again gives you more reasons to be over there.<br />
<br />
* The number of distribution nodes also used to be a setting that you could control, 0-10 default 6.<br />
** This was less powerful than the data centers thing, but still pretty powerful and in multiplayer is even more of a benefit.<br />
** So that setting has been removed, in single player it always gives 6, and in multiplayer games with 2+ human factions these no longer seed at all.<br />
** With all the hacking points and science that you get in multiplayer with multiple factions as it is, trading AIP for more is almost always going to be a bad deal for you. Especially with the lowered AIP reduction opportunties.<br />
<br />
* Major Data Centers used to have a setting that would let you customize them, from 0-4, default 2.<br />
** Once again this was too powerful, so has been removed. The destroyables category of the galaxy map options is now gone.<br />
** The game now seeds 3 minus the number of human empires, min 0. For single-player this means the default of 2, for a 3 player game and up this means none of them.<br />
** In 3+ player faction game, expect for the AIP to be much higher in general, with very few chances to reduce it, but in return you have vastly more territory and more fleets and goodies in general.<br />
<br />
* Normally Zenith Power Generators and Zenith Matter Converters can be anywhere that is at least 3 hops from a starting player homeworld.<br />
** It is now 3 hops plus 1 for each human empire, so they are a bit further off in solo play and substantially more as you get more human empires at once.<br />
<br />
* The prior "Destroyables" galaxy options have been brought back, but with revised names and tooltips (old games that used these, and quick starts, will still work).<br />
** Max Normal Data Centers, Max Major Data Centers, and Max Distribution Nodes are now the options. These have the same defaults that they used to, but the max is now whatever the default used to be.<br />
** The purpose of these options is essentially to allow you to adjust things and make them harder than normal, since we had some people and quickstarts doing that sort of thing.<br />
** What we wanted to avoid was people making it easier in an unbalanced way, or us not being able to adjust the stated amount downward in multiplayer.<br />
** Thanks to Puffin and Astilious for catching this.<br />
<br />
=== Seeding Adjustments To The AI Starting Special Weapons (MP Mostly, But Also SP) ===<br />
<br />
* The way that the number of fortresses and superfortresses are calculated for the Fortress Baron AI type is now completely different.<br />
** In a single-player game the number of these is probably roughly comparable to how it was before, but with more AI factions it will now work a bit better, and the distribution will in general be a bit better.<br />
** In multiplayer games with multiple factions, there will now be increasingly more fortresses and superfortresses depending on how many human empires there are. Work together!<br />
<br />
* Same logic applies to the upcoming DLC AI type of Geneticist.<br />
** Ditto the upcoming Gladitor.<br />
** Ditto the upcoming Ragnarok.<br />
** Ditto the upcoming Spire Hammer.<br />
** Ditto the One Way Doormaster.<br />
** Ditto the Peacemaker.<br />
** Ditto the Royal type.<br />
** And lastly, ditto the Turtle type.<br />
<br />
* For all of the AIs, the BigGunNastyPick, EyeNastyPick, SupportStructureNastyPick, and WildCardNastyPick "percentages of planets we seed on" are now increased as follows:<br />
** For each player empire beyond the first, increase the percentage based on whatever level it is at right now, and loop for each player faction.<br />
*** If it was less than 15, add 2, if less than 30, add 4, if less than 50 add 8, if less than 60 add 12, if less than 70 add 14, if less than 80 then add 18, if less than 90, add one. Otherwise if already great than 90, stop adding.<br />
** As you can see, if something is already pretty common, it will become a lot more common more quickly. If it's fairly rare at the moment, it gets more common more slowly unless there are a LOT of players causing it to hit the loop crazily.<br />
** If you had something insane like 10 human factions, then it would wind up driving most planets to being incredibly fortified. With more like 4 players, it should be extra tough but not gargantuanly so. Depending on the AI types in question.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an infinite loop that would happen on multiplayer clients when certain unit types were used that build more units based on some sort of build points that they accumulate over time. Essentially the Von Neumann type ships, among a few others. Various base game units and mods use these mechanics, and it would be triggered by any of them. This is logic that should never be run on the client or else it leads to an infinite loop since it would never actually add ships on the client. Now it properly ignores that whole bit of logic on the client, just letting the host manage it instead.<br />
** Thanks to Arides, ParadoxSong, Sinzdri, and others for reporting.<br />
<br />
* Quieted another harmless error message that could show up in the debug log during the process of being disconnected forcibly from a multiplayer game.<br />
** In the process of this, also made the real cases of this error message start showing up visibly as errors and not just as silent in the logs.<br />
<br />
* Fixed several different errors that could happen in multiplayer in particular, mostly around debug code 157 for DoEntitySecondLogic with drones in multiplayer. Essentially, drones that were attritioning or going back into a transport could cause exceptions on multiplayer clients, but that should no longer be possible.<br />
** Thanks to Badger and his play group for discovering.<br />
<br />
* Fixed a variety of exceptions that could happen on multiplayer clients with factions or planetfactions being null on ships during DoEntitySecondLogic. These now exit more gracefully.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* Fixed a couple of exceptions that could happen on multiplayer clients during reconquest seeding.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* Debug logging (errors, etc) now includes the game version and the MP status (SINGLEP, HOST, or CLIENT) next to every error line. This will immediately help clear up a variety of things that can be confusing to us.<br />
<br />
* Fixed up the CalculateSpeed() method on the CPA logic to handle a couple of thins:<br />
** Firstly, we no longer base it on the CalculatedSpeed of each ship, because that can include a lot of temporary things like paralysis, or it can include things that are temporary boosts (like existing speed groups), or it can even be 0 if nothing has been calculated yet. <br />
*** It was possible in the prior code that if multiple speed groups were created in succession that included some ships that were all of one type, that the average speed would rise each time, eventually leading to truly absurdly high speeds.<br />
** Secondly, we are now using 64bit math to calculate the average speed just in an abundance of caution, since if the speed group is large enough it could otherwise overflow and theoretically cause very strange results. We doubt this was happening, but it's nice to have in place.<br />
** Lastly, when the "average speed plus a little" is fully calculated for a speed group with a CPA, it now makes sure that it is not higher than the maximum speed of any ships in the group. Previously, it was possible for a mono-type group to always get a boost of 1/9th their speed, plus 200 if the game was far enough in, plus up to 50 just for the sake of randomness. Now that will cap out at the actual speed of the ship type in question.<br />
** We're guessing that this was the cause of the hyper-fast speed groups that a few people were seeing from CPAs, but it's hard to be sure. If this fixes it, then this simply means that the code for setting the overriding speed of speed groups was not working properly in the past, which is something we may have fixed recently.<br />
** Thanks to NRSirLimbo and Crabby for reporting.<br />
<br />
* In order to avoid having existing savegames with excessive speed group speeds running around, during the load off of disk it now checks the overriding speed limit against the max speed of all the ships in the group, and if the max speed is lower it sets that as the new speed group for that speed group.<br />
** Thanks to NRSirLimbo and Crabby for reporting.<br />
<br />
* Since apparently Bombards were giving an outsized counterattack response, we've set up a counter_attack_budget_override_multiplier of 0.25 to cause it to rise only a quarter as rapidly.<br />
** Counterattacks are mostly based on the strength of the strength of a squad at its base mark level (so higher marks do not increase the counterattack strength at all), but there are some extra multipliers based on flagship types that are present, and what type of planet is there, and what the AI type is set to (different AIs can have different amounts of counterattack intensity). Hopefully it wasn't just a factor like the AI Type in question.<br />
** Thanks to Arides for reporting.<br />
<br />
* Fixed a bug in the last few game versions since we have been tracking human empires where for each time you loaded a savegame or regenerated a map or generated a new map seed, you would get another set of old empires added in that never cleared until you restarted the program. This would lead to a variety of insane things at times, including some lag on the galaxy map in particular, but also including some hacking costs that could be insanely inflated even in single-player.<br />
** Thanks to Metrekec and Isiel for reporting.<br />
<br />
== Version 2.707 Thread Tracking And Lost Planets ==<br />
(Released December 18th, 2020)<br />
<br />
* Completely reworked the way we track long-running background threads. It's no longer just the faction planning threads, but instead is ALL of the background threads, even those that are only supposed to run for part of a second at a time.<br />
** These all now will start showing on the interface as slow-running background threads after some warning interval (varies by thread), and then the main thread will forcibly kill them after a certain longer interval.<br />
*** For the short-term threads, it generally warns you after 2 seconds and kills it after 10 seconds. For the longer-term stuff, it generally warns you after 10 seconds and kills them after 30 seconds.<br />
** This provides a hopefully-foolproof way for us to find threads that are stuck in infinite loops, which is something we're aware some multiplayer clients are experiencing at the moment. The only thread it can't detect this on is the main thread itself, but if in those instances the game program would appear entirely unresponsive (white screen, nothing displays, OS is worried, etc), and that's not what we're having reports of.<br />
*** If you are having one of these slow background threads happen and it's causing an issue in multiplayer, please wait until it counts all the way up and actually throws an error. The error handling is designed to give us as close a view as possible of where the error actually is. Please then give us the error log that contains several detailed errors (usually between one and three) rather than a screenshot.<br />
** We should then be able to fix whatever is going on, or if the problem is in a modder's code (in this instance it does not seem that is the case), then the modder can also find out and solve that.<br />
** It's worth noting that the "main simulation thread" is actually on a background thread, and so that's a thread that we can indeed (and do) track.<br />
** Thanks to CRCGamer, NRSirLimbo, Arides, Paradox Song, Ozone, and others for reporting.<br />
<br />
=== Notification Improvements ===<br />
<br />
* All of the various notifications that were missing icons, or which were reusing icons that some other notification had, now have icons of their own.<br />
** Additionally, there's about two dozen extra notification icons that we now have in place in the new metallic style that we considered using but did not yet; those can be used for mod notifications, or whatever else.<br />
<br />
* In the event that you WERE in control of a planet, but lost it, in the past the game did not show you very useful information.<br />
** Prior to recently, it would probably show no notifier at all about it anymore, not on an ongoing basis.<br />
** Recently, if you still had some fighting forces on that planet, then it would show you as attacking that planet. Unless your forces were too weak.<br />
** Now it actually has its own unique icon for planets that have been lost -- based on there being the remains of a command station there -- and it pops those up to major priority (if it was not already higher), and it will keep the notification there even if all the enemies leave or if all your forces get wiped out.<br />
** This way you always have a reminder of a planet to get back to and either repopulate, or remove the command station and turrets if they are not going to be used again.<br />
<br />
=== Multiplayer Improvements ===<br />
<br />
* If a client gets a message from the host that they have been disconnected in an orderly fashion, the client now gets sent back to the main menu instead of trying to continue on in a format that seems connected but is not really.<br />
<br />
* In the event that a multiplayer client is disconnected for whatever other non-proper reason (a connection drop, not the host shutting down the game or something), then the client is now booted to the main menu rather than dropping into single player mode that seems to be still connected. Holy guacamole that was confusing (and never intended).<br />
<br />
* Fixed a bug where if a client connected to a host lobby directly after the client was in the planet view, the client would not be able to see the galaxy map properly.<br />
<br />
* For the first three seconds of each game, there are no notifications shown up at the top bar, now. This should basically never be the case anyhow, but this will hopefully work around the "30 different planet attacks" bug.<br />
<br />
* Because it could gum things up and even lead to network errors, there is now a rate-limiter applied to the randomize seed button on the galaxy map. When it is disabled because of rate-limiting, it now shows a countdown until it can be used again.<br />
** In solo play, the rate limiter is only 1 second. In multiplayer as the host, it is 3 seconds. In multiplayer as the client, it is 5 seconds.<br />
** This should be sufficient for keeping things out of trouble while not overly slowing down people who want to thumb through items.<br />
<br />
=== Bugfixes ===<br />
<br />
* Removed a metabolization debugging line that was apparently left in, that explained how much metal was gained each time that happened.<br />
<br />
* Fixed several cases of "Fixed attempt to read more faction data than we had factions on the client." that would happen sometimes when the client was disconnecting from the server on purpose.<br />
<br />
* Fixed an issue where because of the way we have been reading the controls input xml for the last few months, things like the control groups have been out of order. In general the order of the controls has been random and funky.<br />
** Thanks to Endovior for reporting.<br />
<br />
* Fixed an issue with the framerate types being randomly ordered due to xml reading changes a few months ago, which was probably leading to the wrong framerates being matched up. If this doesn't solve the related issue, please let us know! In the next build, everyone's framerate type will be reset to the default.<br />
** Thanks to AnnoyingOrange, Daw11, and poljik2 for reporting.<br />
<br />
== Version 2.706 Selection And Regression Fixes ==<br />
(Released December 17th, 2020)<br />
<br />
* Switched our delayed messages over from being a ConcurrentBag to a ConcurrentQueue. This is slightly less efficient, but should keep the order properly.<br />
<br />
=== Regression Fixes ===<br />
<br />
* Fixed one-character bug in the prior build where we had a typo that we did not even know was possible. We needed to invert a boolean, which you usually do with the ! character. But we had !! instead. Turns out that is valid syntax and double-inverts it back to its original value.<br />
** This led to the ship models not being loaded properly ever: if you had ship models set to draw, they would not; if you had ship models set to not draw, they would draw raiders only.<br />
** Thanks to Ozone, InvisiblePhil, and Crabby for reporting.<br />
<br />
* Fixed a couple of bugs in the prior version that were causing the planet faction boolean flags to sometimes not be read properly, or come out inverted. This was often leading to things like player ships attacking AI command stations without orders to do so. This should now be solved for any existing savegames and new ones.<br />
** While we were at it, we discovered that the ability to set a planet to be avoided by player ship pathfinding was improperly handled for multiplayer games, and so only the host would have been able to use that function and have it stick. Now it will work for any player.<br />
** Thanks to Sigma7, Arides, and others for reporting.<br />
<br />
* GameCommand queues from the long term threads have been returned to how they used to work with locks and such. This should prevent any misordering of gamecommands that are issued within a single cycle.<br />
** It was suspected that these were maybe causing some chaos in the prior build, but it's hard to be entirely sure. The issue with ships losing selection after being shot if they were in a stack was unrelated to this.<br />
** Thanks to a variety of folks on discord for reporting.<br />
<br />
=== Ship Selection Improvements ===<br />
<br />
* Added the ability to deselect ships, fleets, and similar from the current selection by holding alt and clicking them in the selection window. The tooltips have all been updated to inform players that this is now possible. This now works like the first game did, in that regard.<br />
** Thanks to nas1m, Fluffiest, cybersol, poljik2, and others for suggesting.<br />
<br />
* EntitiesToSelectNextFrame and EntitiesToSelectNextFrame were both unused and have been removed.<br />
<br />
* When ships are selected or deselected, there is now a ReasonCode string that is passed in so that we can log what is happening and why.<br />
<br />
* If a ship is created from another ship, and the first ship was selected, that ship is now selected.<br />
** This handles cases where stacks of player units were split, and the new units were not properly selected. However, it does not handle them on multiplayer clients.<br />
** If you select by fleet, none of this affects you at all. Only if you are directly selecting ships.<br />
<br />
* When a ship is created into a player fleet, if any other ships of the same type are selected AND on the same planet as it, then the new one is now selected.<br />
** This handles a variety of edge cases. However, it does not handle them on multiplayer clients by default, so we have now hooked into the fast-blast data syncs (that's actually very helpful in the end) to make that work, too.<br />
** If you select by fleet, none of this affects you at all. Only if you are directly selecting ships.<br />
<br />
* We no longer try to deselect and reselect ships when they change planets. That was a relic of when selection used to be related to the planet you are on. When a ship changes planets, just... nothing happens. It's still selected.<br />
** Thanks to OzoneGrif and Asteroid for reporting.<br />
<br />
* When ships die, we are no longer explicitly unselecting them. That was probably causing a lot of our problems, particularly around stacks.<br />
** There are many cases where ships "die" and then just pop an entry off their stack instead, and those were winding up being deselected ever since stacks have been a thing.<br />
** Again this is something that doesn't happen if you select by-fleet. Which at least for Chris, is how he plays. When you're managing ships by-type or just by bandbox selection it's a lot better now.<br />
** Thanks to Ozone for reporting.<br />
<br />
* Fixed a longstanding issue where the second click of a double-click into a planet was being treated as a single click in empty space on that planet and thus clearing your selection.<br />
** Thanks to Asteroid, Badger, BadWolf, Brainsample, Histidine, Fluffiest, and others for reporting.<br />
<br />
== Version 2.705 Clarity, Refinement, and Performance ==<br />
(Released December 16th, 2020)<br />
<br />
* At the end of generating the details of a new map (from custom games or quick starts), the game now quickly takes an extra bit of time to actually generate the strengths of each planet as they exist from the 0th second of the game. This takes on average an extra 8-18ms from what we can see so far.<br />
** The result of this is that players can trust their intel from the very start, even if they pause immediately or start paused. And factions that might want to invade or do whatever else very early in the game can also now trust THEIR information, which is similarly useful.<br />
** Thanks to Smidlee for initially raising the issue, and then -NR-SirLimbo, Strategic Sage, and CRCGamer for chiming in with details.<br />
<br />
* When loading existing savegames to continue playing, the game now also does a recalculation of all the strengths in the galaxy prior to actually letting you start playing. This is taking double digits of milliseconds, at most. This can prevent the galaxy map display from being wrong in some rare circumstances, and thus can also prevent NPC factions from making brief bad decisions off bad data right after coming in.<br />
** At worst this is overkill, but realistically we sometimes change the strength formulas and so forth and this will keep things correct, anyhow.<br />
** Thanks to -NR-SirLimbo for reporting a rare instance of this being wrong with some really specific setup circumstances. This should handle that case and any others.<br />
<br />
* The "Minimal Fog of War" setting has been removed from the Galaxy Camera settings section of the personal settings. This was not an appropriate setting to have on a per-player basis in multiplayer in particular.<br />
** There is now a new "Minimal Fog of War" setting that behaves identically to this in the Scouting section of the galaxy options menu. This is something that any player can change, even during gameplay, and it will then give all players a consistent view. No need to wonder why someone sees things differently from everyone else, and nobody can "peek" without others knowing.<br />
** Also happened to increase the efficiency of the checks for this a bit, making it not be called so frequently to find out if it's on or not.<br />
<br />
=== Galaxy Map Display Mode Updates ===<br />
<br />
* Galaxy map filters now have the ability to add text to planet tooltips, or outright replace the bulk of the planet tooltip contents.<br />
<br />
* When you are in the Deepstrike Danger galaxy map display mode, the bulk of the planet tooltips are now changed to explain what each planet's status means in terms of danger level. What happens if you go there? How do you trigger the AI Reserves? Etc.<br />
<br />
* Added another new galaxy map view: AI Sentinel Alert Levels<br />
** For each AI planet, shows what the alert level is for that planet. Planet tooltips give advice on what this means for each specific planet. Shows the same icons as the Normal view.<br />
** This whole thing also now includes some extra information that was not previously in the game itself at all, such a WHY each planet is at a given alert level. Again, most people don't need to know or care, but for the detail-oriented this is a big win.<br />
** Inspired by a discussion on discord with dano and -NR-SirLimbo. This isn't a function of the AI that you HAVE to understand, but it's nice to be able to if you want to, and it's REALLY nice not to have to go to the wiki release notes to get the details.<br />
<br />
* The hex colors of the higher two AI Alert Levels are now more bold, making them easier to pick out at a glance in their display mode in particular, but also otherwise.<br />
** Thanks to -NR-SirLimbo for suggesting.<br />
<br />
=== Notifications And Their Icons ===<br />
<br />
* The icon for a non-home planet of yours being attacked has been updated.<br />
** The old one that was a general warning-style icon is still there, but is called generalwarning and is no longer used for these purposes. It was too generic.<br />
<br />
* There is now an icon for when you are in a fight with an enemy on a planet that is not yours.<br />
<br />
* All of the notification icons that were previously existing have been updated to a more gritty/physical/metallic style.<br />
** This is a bit different from other icons in the game, but is fitting with their placement and the style of the notification backgrounds. These are more of a physical part of the UI, visually speaking, compared to the other elements which are thematically more digital elements.<br />
<br />
* Previously, we only had a single "our planet is under attack" sort of notification. It had two variants, one for our home planets and one for not-our-home-planet. <br />
** For a long time, we have also been using it to note when "our" planet is being attacked if the planet was a beachhead where we had a lot of turrets. In the most recent build, we expanded that to include any planet we or our human-player allies are fighting on, but that had the side effect of making it so that it gave very confusing notifications about "us defending our planets" in enemy territory.<br />
** Now we have a whole new set of text, and new icon, for notifications of us attacking an enemy or neutral planet, whether that's a beachhead or otherwise. These show up under the informational level of severity, so right at the bottom.<br />
*** These show the lists of allied attackers, and the list of enemy defenders. They also show any interesting capturables on that planet, same as on our own planets we were showing infrastructure.<br />
** Thanks to Crabby and ArnaudB for reporting.<br />
<br />
=== Included Mod Updates ===<br />
<br />
* AMU:<br />
** Repositioned the GrantShipCountType to no longer be inside the AMU_Utils class but inside AMU namespace itself<br />
** Created 2 variants of WriteShipLinesGrantedToBuffer(), one for a specific player, the other without a player given tries to find the local player or if there is none for whatever reason uses the first player if possible. If no player is found all units will be displayed as mark 1. Optionally a headder explaining what this is for can be added (such as "Hacking this can grant the following units:").<br />
** Created more variants of AddToShipGrantList() so that it's not only entities that can have potential ship lines added but also raw lists.<br />
** The ShipOrTurretGrantingHackingImplementation now uses a GrantMode which can be set to all entities, only specific entities and only centerpieces (and potentially others too in the future) instead of a simple bool for all-or-nothing.<br />
* Kaizers Marauders<br />
** Used the above logic for displaying hackable ship lines.<br />
** Defensive lines hacked from Outposts no longer display if the Planet has its systems on lockdown, preventing all further hacks there. Less useless clutter is always good.<br />
** Put in a fix for an oversight that would lead to saves from previous versions very likely (in most likely all cases, the only case to avoid being when all marauder planets would have a turret-hack going it seems) not loading.<br />
** Fixed Marauders not spawning when the beacon was destroyed until their invasion time limit was reached.<br />
*** Thanks to Doc_Den for asking about it on Discord.<br />
** Fixed the Journal that's supposed to appear when the game is launched with a Marauder beacon present not actually showing.<br />
** Put in a new Journal for discovering the Marauder beacon.<br />
<br />
* AMU:<br />
** Some more internal adjustments towards Devourer Chrysalis.<br />
* Kaizers Marauders:<br />
** Fitting in with these adjustments.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a MP sync issue with the outguard, where every time an outguard beacon was synced to a client it would cause its list of mercenary groups to grow. So when hovering tooltips over a beacon on an MP client it would do that every 1 second.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* The "Unable to render visuals for 3.00s, because of:" message is one that is really old and really doesn't matter. It's something that happens during really long loads from disk, and it just silently puts junk in your log. We put this in back in 2017 when we were originally designing this and worried that there might be a long-running process that the game didn't come back from. That's not really a thing, in practice, and if it was then this message would not be helpful (actual deadlocks are not caught by this anyway).<br />
<br />
* Previously, any exceptions in the AI Reserves were silent and just showed up in the log. This was not super helpful. These errors now show up more visibly.<br />
** In the UpdateDeepstrikePlanetsUnderAttack method, we were able to get an exception, so we now have more logging in place.<br />
<br />
* In the settings menu, it was previously possible to see settings from mods or expansions that you had installed but disabled. Now it only shows them if they are installed and enabled.<br />
<br />
* Fixed a bug dating back to changes on October 9th, when the new AI sentinel readiness code was put in place.<br />
** Essentially there was an oversight in the code that said "there are player forces here now, or there were within the residual timeframe for alerts to last" that let it just assign alert level 4 and then bypassed that and kept assigning a lower alert level based on other factors.<br />
** This made it so that raids into territory not adjacent to your own would never trigger alert level 4, and it also made it so that raid engines would never count down their timers.<br />
** Thanks to Strategic Sage, TechSY730, GreatYng, Smidlee, Endovior, and Arides for reporting.<br />
<br />
* The "share allied vision" setting in the galaxy map has been removed and replaced with a new "Share Allied NPC Vision" setting.<br />
** This effectively does the same thing, but makes it really clear that human allies always share vision, and this is just about NPC factions sharing with you.<br />
<br />
* Fixed some bugs with how the allied vision setting was implemented that was preventing you from seeing a lot of intel in general on the galaxy map, or leaving it pretty stale in general.<br />
** The biggest thing was that it was often causing a planet you had ships at to flip back and forth rapidly between "watched" and "explored" status, thus making the intel counts often have a question mark behind them or fail to show up entirely.<br />
** Thanks to Crabby for reporting.<br />
<br />
* Changed it so that you retain the currently watched status on a planet for 5 seconds rather than 2 after a ship was there. This prevents issues with players at a faster game speed having their explored/watched status flicker for a planet.<br />
<br />
* Fixed a bug in the prior version of the game where the cost per extra human empire to hack for science was being increased including for the first empire (so also including solo games or single-empire multiplayer).<br />
** Thanks to Metrekec for reporting.<br />
<br />
=== Multithreading Improvements (MP and SP) ===<br />
<br />
* Went over speed groups with a fine-toothed comb in terms of their fast-blast sync in multiplayer, and it all looks good. Put in slight extra instrumentation to let us know if there is actually an oversight, but at the moment it looks like the error is really on the side of fast-blast shots, not speed groups, and the speed groups were a downstream casualty.<br />
<br />
* Updated the central dictionaries that have lookups for shots, ships, and wormholes to be concurrent dictionaries that expect access from 8 threads at once (but can do more). This mostly affects nothing, but in certain cases where we were trying to write to one of those dictionaries from two threads at once, it will prevent any issues.<br />
** What we were observing in some cases (one client out of five in a six player game, for example) is that shots were failing the basic method call of "assign self into dictionary by ID." This should be frankly impossible, but it was erroring on an internal method call TryInsert on the Dictionary<> class. That's a great sign that there is a cross-threading issue going on, because again that should be impossible in any other circumstance. So the simple solution is switching to a ConcurrentDictionary<>, and that problem should go away.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* A couple of locks used, one on fleets and one on squads, are no longer used on multiplayer clients. This new change CAN have the effect of briefly having the wrong number of units in a stack or the wrong number of drones undeployed in a fleet, but it would be a very brief time that would be wrong, and it's not super likely to be wrong.<br />
** The positive thing about this change is that clients wind up with these methods being called a LOT compared to hosts or single player machines, and almost always it's just a simple overwrite rather than several different places trying to increment or whatever. The idea is that this speeds up the sync on clients, does less processing, and removes a potential source of deadlock that could happen. In the very rare case that a client gets slightly off because of this, it will fix itself within seconds, but the overall processing will be much better and cleaner without this here.<br />
<br />
* Our campaign against thread locks continues: GameCommands have been using a set of Queue<> collections that were locked when things were taken out and put in, but now we are just using a ConcurrentBag<>. This should be a minor boost to performance in singleplayer or multiplayer. The more factions and threads and things you have going on, the more it's likely to make at least a small difference.<br />
<br />
* During our xml import, we now have switched over to using ConcurrentBag<> collections where we were using List<> collections that had to be locked. This may be a minor speed boost on load for some machines.<br />
<br />
* The "long term planning" threads (either intermittent ones for a faction, or continuous ones for something like decollision or whatever) now use ConcurrentBag<> instead of List<> collections that are locked.<br />
** This DOES mean that the order in which items come out of these will be arbitrary, now, whereas before they were ordered. But in general we are not aware of any cases where there are GameCommands that are strictly order-dependent that happen within the same cycle, and if there are any they might have been getting misordered elsewhere in multiplayer in particular.<br />
** Generally the order of GameCommands is something closer to a human scale, at least on a few hundred ms timeframe, and that is still honored. If we have any problems with this, we can switch to a ConcurrentQueue<>, which should be ordered, but the performance is probably not as great.<br />
** These boosts only help on the host in MP and in general in SP games. MP clients already don't run any of these threads.<br />
<br />
=== Performance Improvements ===<br />
<br />
* Made the creation of PlanetFactions a bit more efficient by not initializing things like their entity lists or boolean arrays until and unless those are actually needed. This makes the first map generation or savegame load after a run of the program happen more quickly.<br />
<br />
* Performance improvements around extra planet factions:<br />
** The strength counting logic is now explicitly not run for the natural object faction (hopefully causes no issues) and the beacon-only factions (definitely will cause no issues).<br />
** The metal flows logic now early-outs much faster for planet factions that are beacon-only or which have no squads at a given planet.<br />
** The tractor beam planning logic now early-outs much faster for planet factions that have no squads at a given planet.<br />
** On a 500 planet map (not supported) with basic factions included this gets Chris' dev machine from 12% sim speed to 18%. For actual normal map sizes, this will also improve performance, but we're looking into the case of "when planet counts are absurd, where does the extra processing go," since that probably will yield a benefit for non-absurd planet counts.<br />
<br />
* The old setting "Skip Drawing Ship Models" has been removed, and replaced with one called "Draw Ship Models."<br />
** This is functionally the same, but more clear now. This will wind up removing whatever your settings were from the past, so if you were playing without ship models before you will need to alter this setting.<br />
** Same with Disable Tachyon Beam Visuals, it has become Draw Tachyon Beams and its description has been updated.<br />
*** However, THIS one has changed to now default to off, since it really is not needed and uses a lot of performance. You can turn it back on, but it now defaults to off.<br />
** Disable Tractor Beam Visuals has also become Draw Tractor Beams, and it defaults to on. Very people would have changed this from the default.<br />
** Disable Beam Weapon Visuals has become Draw Beam Weapons, and it defaults to on. Very people would have changed this from the default.<br />
** Disable Parallel Faction Processing has become Parallel Faction Processing, and now defaults to on. Again this is something that almost nobody should change.<br />
** Do Not Show Shot Visual Effects has been renamed to Draw Bullets, and now defaults to on.<br />
** Do Not Show Explosion Visual Effects has been renamed to Draw AOE Explosions, and now defaults to on. It's also now clear which explosions are even meant!<br />
** Other than the ship models one, very few of these are used by most people, and all of these are functionally the same as the old versions except for the tachyon beams which are now off by default.<br />
** The general goal here is to make these settings more clear, since folks were finding the wording and double-negatives confusing (we can't not imagine why).<br />
** All of these settings have also been updated to a check model that is slightly more efficient, which is always nice.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
* Added a new Show Faction Performance In Escape Menu option in the escape menu.<br />
** If your game simulation is running slowly, you can turn this on to see how long each faction is spending doing its work on the main simulation thread. Background thinking of factions is not included in this, since those don't block the main simulation or impact performance in that sort of way.<br />
<br />
* Using the new Show Faction Performance tool, we can see that on a 500 planet map, most factions are doing great, but AI Reserves are spending 4.5 seconds per second doing... something. That obviously is no good.<br />
<br />
* Multiplayer clients no longer do any of the stage2 or stage3 logic of AI Reserves, since there's nothing in there that would be useful for them in the first place. All of that is best controlled on the host.<br />
<br />
* The way that deepstrike-eligible planets are calculated now happens only once on the background thread of the AI Reserves, and the result is cached on the planet itself where other threads and the UI can get the results with ease. <br />
** Our overall algorithm is not much more efficient than it was before, but it is doing well under half the work that it used to, as well as only being on a non-blocking background thread now.<br />
** Because of this, our 500 planet extreme test case example now runs at full speed, and all other savegames should also see a bit of a speed bump.<br />
** Because of how multiplayer sync works, the MP clients are kept up to date on all of this even though they are running none of the logic.<br />
** This is our big mysterious performance drain, finally solved! It was not remotely what we expected. At any rate, giant counts of planets are still not a great idea for many other reasons, but the baseline performance drain of each planet added to the game is now gone.<br />
<br />
== Version 2.704 MP Notifications And Mapgen ==<br />
(Released December 14th, 2020)<br />
<br />
* The shield points of all the raiders and their variants have been dropped dramatically, while their hull points remain the same.<br />
** Additionally, the metal costs of raiders have been almost doubled. This extra specialization and power of them, when compared to V-wings is now something you have to have a more robust economy to support.<br />
** And finally, their armor rating has been dropped from 50mm on most of them to 30mm, and from 30mm on the drones down to 10mm, making them vulnerable to anti-light-armor attacks.<br />
** Thanks to Crabby and Arides for suggesting.<br />
<br />
* AI Eyes are no longer allowed to be reinforcement spots, as the units contained within them get messed up as they transform between states. In general, units that transform should no be containers of AI reinforcements.<br />
** Thanks to DEMOCRACY_DEMOCRACY for reporting.<br />
<br />
* Fixed a bug where guardians could be confused about whose side they were supposed to reinforce, and thus be added to the player faction if the player partly owned a planet that was being reclaimed by the AI at the same time.<br />
** Thanks to Kizor and Metrekec for reporting.<br />
<br />
* Fixed a bug in the new hot-reloading code where, after changing some mods or expansions, various "External Data" fields would not be able to be loaded completely properly. This was pretty much just limited to the "custom data" that is added to those fields by a variety of factions and mods.<br />
** Restarting the game in prior versions would fix it, but now it just works correctly from the get-go.<br />
** Thanks to Crabby and Badger for reporting.<br />
<br />
* The game has been updated to require/allow ArcenSimContext to be passed to a lot of the galaxy map filter functions, etc. This lets them use some of the working lists and things like that.<br />
<br />
* The AI Reserves faction now registers an instance singleton of itself so that other parts of the code can query it for things like deepstrike eligibility.<br />
<br />
* There is a new Galaxy Map filter option: Deepstrike Danger<br />
** Shows which planets will trigger a deepstrike if you bring your own ships to them and unload them. Shows the same icons as the Normal view.<br />
** This is a great idea, since it has never been perfectly clear which planets will and will not show this.<br />
** Thanks to Asteroid for suggesting.<br />
<br />
* Fixed a possible nullref exception when stationary player constructors were destroyed in multiplayer. Looks like Badger may have already fixed it, though.<br />
** Thanks to NRSirLimbo and Flipkik for reporting.<br />
<br />
* Updated the instrumentation of EmitOnAOEParticles so that if it does have an error, it will give us useful data.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Three different threading race conditions in TryWiringUpShotToTarget() no longer throw exceptions but instead just deal with the "TrueLocationByFailure" path. This is something that already was a minor visual glitch at most.<br />
** Thanks to NRSirLimbo for reporting. <br />
<br />
=== Multiplayer And MapGen Improvements ===<br />
<br />
* Upgraded the mapgen logic to work better when there ae multiple human factions, or indeed when there are multiple AI factions.<br />
** When there were multiple AI factions, there were times where lots of planets adjacent to player homeworlds could be set erroneously to mark 3. This no longer happens.<br />
** When there were multiple human factions, then it was letting mark 3 or 4 planets be seeded next to human homeworlds sometimes, but it was also giving a LOT more mark 1 planets than normally are in a single-human-faction game.<br />
*** Now it gives the same number of mark 1 planets for a map size regardless of how many human players there are, and these are distributed randomly next to however human homeworlds there are. Any other planets adjacent to a human homeworld that is beyond the amount allowed by a map will now be mark 2 no matter what.<br />
*** In single-faction games, sometimes there are non-adjacent mark 1 homeworlds, but that will probably not happen anymore. <br />
*** The rest of the planets that are more than 2 hops from human homeworlds will continue to use the logic that they previously did for whether they should be mark 2, 3,or 4.<br />
** The overall result should be something that always makes sense, and it will not favor player factions 1 over any other factions.<br />
** Thanks to Badger and others for reporting.<br />
<br />
* In multiplayer games, the clients no longer get any sort of "are you sure?" prompt or ironman autosave or anything when they quit from the game or quit to the main menu. Those are host-side things.<br />
** Thanks to Badger for reporting.<br />
<br />
* "Pause Game When Opening Esc Menu" in the Game part of the settings menu has been split into two parts:<br />
** Pause Game When Opening Esc Menu In SP (default on)<br />
** Pause Game When Opening Esc Menu In MP (default off)<br />
** Additionally, made it so that sub-menus of the escape menu no longer cause the game to be paused when you go into them even if the setting here was disabled (previously that was happening, which was a bug with the SP version of this).<br />
** Thanks to Badger for suggesting.<br />
<br />
* The game is meant to only have a single hack going on at a planet at once, and has previously just been enforcing this for you personally (assuming single-player by accident).<br />
** Now the game checks for all factions, meaning that if an ally is hacking at a planet you have to wait until they are done there. <br />
** The message now specifies if it is one of your ships doing a hack, or if it is an allied ship.<br />
** Thanks to crawlers and Arides for reporting.<br />
<br />
* Added a new "is_human_empire_faction" xml tag, which we now use for the standard human factions.<br />
** This allows for us to check for regular human factions that should count for certain types of new functionality, but inherently exclude other specialized "player type" factions that will arrive in the future (champions) or which we might think up.<br />
** There is already a way for us to check if a faction is a champion faction, but this is for the opposite: in theory we could someday have many different kinds of human factions, and some would act like an empire (that should scale a few things related to AIs) while others would act like tag-alongs.<br />
*** In theory, we could design a faction that contains properties of both an empire and also something specialized like a champion, and so having individual flags is also useful for that sort of reason.<br />
<br />
* Just like there has long been an AIFactions list on the World_AIW2 instance object, we now have the following:<br />
** AllPlayerFactions, which has absolutely every faction with type == Player.<br />
** ChampionPlayerFactions, which includes only champion factions (from DLC3).<br />
** HumanEmpirePlayerFactions, which includes only those that are marked as human empires.<br />
<br />
* The "Neutral Planet Science Extraction" hack has the following changes:<br />
** Cannot be done (is invisible) if there are no human empire factions in the game (aka if you were theoretically playing a champion-only game, which we have no idea if that will be a thing or not).<br />
** When done and there are multiple human factions, each of them gets a copy of the science properly, unlike in the past.<br />
** Normally this hack just cost 10 HaP. However, that cost now goes down if you have previously partially gathered some of the science. If you got halfway through with gathering science from the planet, then lost the planet, it will now cost only 5 HaP.<br />
** For each human empire beyond the first, doing this sort of hack now costs 1.5x as much. So if it would normally be 10, and there are two playrs, it will be 15. If there are three players, it would be 22.5.<br />
*** Given that this is a HUGE advantage to lots of player empires (the HaP of only one player gives science to all), this is something we wanted to be careful of.<br />
** Thanks to Puffin for reporting.<br />
<br />
* The "Covert Science Extraction" hack has the following changes:<br />
** Cannot be done (is invisible) if there are no human empire factions in the game, same as above.<br />
** This hack already costs less based on however much there is to hack out of the planet, since this is a per-second-over-time hack. So we did not need to adjust that.<br />
** Same 1.5x cost added for each human empire beyond the first as with the neutral planet hack.<br />
** Thanks to Puffin for reporting.<br />
<br />
* A variety of things that are involved in exo strikes or other things that are launched against a specific player will PREFER a specific human empire, but in the event that there are multiple human empires and one has a dead king, it will switch over and attack another human empire instead.<br />
<br />
==== Notifications ====<br />
<br />
* Planet under attack messages have been changed as follows:<br />
** Previously, if you personally had 5 strength of turrets on a planet, then it would include the planet even if you did not own it.<br />
*** Based on player requests, it now includes planets where there is at least 5 strength of turrets OR mobile strength. Aka you can see fights that are not just beachheads.<br />
*** Previously, in multiplayer this did not show for spectators or clients in general. Now it shows for all players. Additionally, that "strength of 5" calculation includes strength from all players, not just the host.<br />
** Thanks to crawlers for reporting.<br />
<br />
* There was a minor bug with brownout notifications in multiplayer if you were a client.<br />
** In general in multiplayer, brownout notifications are now shown to all people in multiplayer, including spectators.<br />
** This is a significant-enough event that it's good for other players to know if your forcefields all just went down without you having to tell them. If you are distracted, it also gives them a chance to notice and tell you.<br />
<br />
* In multiplayer, previously it would only show the ongoing hacks of the host. Fixed.<br />
** Now all players, as well as spectators, can see all hacks from anyone. This is hugely useful for coordination in multi-faction games.<br />
** Thanks to BadWolf and crawlers for reporting.<br />
<br />
* Hostile macrophage notifications in multiplayer now are based around them approaching and threatening any player's king, not just the host player.<br />
<br />
* The code for all of the other notifications has been reviewed, and it should be sufficiently informative for spectators in multiplayer, as well as work properly for multiplayer clients.<br />
** This includes all of the factions in upcoming DLC.<br />
<br />
== Version 2.703 Hotfix ==<br />
(Released December 14th, 2020)<br />
<br />
* Astro Trains can't be at a mark level higher than the faction intensity<br />
<br />
* The Fleet Sidebar now dynamically modifies the font size to prevent some line wrapping<br />
** The wrapping was pointed out to me by NRSirLimbo<br />
<br />
* Fix a bug that was preventing new games from starting<br />
** Reported by a number of people, including mazanaka09, niki, maxi and tyak<br />
<br />
* Fix a bug causing excessively strong CPAs<br />
** Reported by Lictuel, Arides and poljik2<br />
<br />
=== Included Mod Updates ===<br />
<br />
* Updated Civilian Industries for the latest version.<br />
** Updated all references of 'Balance_MarkLevelTable.MaxOrdinal' to refer to 'Balance_MarkLevelTable.Instance.MaxOrdinal' instead.<br />
<br />
* AMU:<br />
** The GlobalImportantRollupHolder now refreshes when Expansions or Mods are being reloaded. This refreshing happens upon the ExecutorFakeFaction being instantiated for the first time which means that it should no longer create a hang on the first game second and instead do so when loading the galaxy or custom game menu.<br />
** Removed the following functions: AddAllShipsWithTagToFleetStrengthAdjusted, AddRandomShipsWithTagToFleetStrengthAdjusted, AddRandomShipsFromRollupToFleetStrengthAdjusted, AddAllShipsFromRollupToFleetStrengthAdjusted, AddShipsToFleetOrCreateNewFleetIfCenterpieceBasedOnStrength and AddShipsToFleetOrCreateNewFleetIfCenterpieceBasedOnCount.<br />
** In their place created 3 variants of AddToShipGrantList (one for each List, TaggedEntityTypeRollup and GenericDrawingBag).<br />
** Created IsCenterpiece(GameEntityTypeData) which reacts to it being any kind of mobile centerpiece such as transports, arks, golems, battlestations, citadels, support factories or spire city pseudo-centerpieces.<br />
** Created GrantStuffToFleets_ReturnEmptyIfClient which adds all it's being given to a fleet and returns the memberships, or if something to be added is a centerpiece itself adds it in a new fleet.<br />
** Created AddToAllPlanetaryFleets which does exactly what it sounds like. Note that this adds to the permanent items as if hacking a GCA.<br />
** Created Hacking utilities:<br />
*** ExtendedHackingImplementation adds the following functions:<br />
**** HackedByBattlestationOrCitadelInsteadOfNormal (upon the first second "transplants" the hack from the centerpiece that started it to the battlestation or citadel closest to the target). AMU also creates notifications for battlestations and citadels with active hacks because the base game does not see them as valid hackers.<br />
**** ParalyzesTarget, ParalyzesHacker, TargetIsInvulnerable, HackerIsInvulnerable, DecloaksTarget (self-explanatory, for the duration of the hack).<br />
**** CounteractsTargetAttrition (every second of the hack the target receives health if it has any self-attrition).<br />
*** ShipOrTurretGrantingHackingImplementation is based on ExtendedHackingImplementation and adds the following functions:<br />
**** GrantAllLines (grants all lines of turrets, ships, etc instead of just one).<br />
**** GrantLikeGCA (if adding turrets, non-turret defenses, station-keeping ships or alike grants them to all settled player planets as if it were a GCA hack).<br />
**** DoesNotRequireFleetSlots (for adding centerpieces, only exists to ignore the requirement that at least one ship line must be free on the hacker).<br />
**** ThrowsRemainingLinesIntoFirstNewFleet (when a centerpiece is present will create it first and all other ship/turret/whatever lines will be added into it).<br />
** Updated the AMU source code.<br />
* Kaizers Marauders -> IMPORTANT NOTE: SHOULD be savegame compatible (it had serialization gates) but was not tested! <-<br />
** Fixing Marauder Invasions:<br />
*** Fixed Marauders always being present even if not added to the galaxy setup. Note that this could only be done by creating a second Invasion Timer setting, the first one doing nothing. Apparently they cannot be manipulated through is_partial_record. Also removed the debug option from that.<br />
*** The new default setting for invasion timing is to invade in Mid-Game. This is important for when playing without beacons (!) because if you truly wish for Marauders to immediately invade the timing needs to be set to "immediate". Right now the default is Random Mid-Game, at which point Marauders will be allowed to invade and, if need be, even destroy their beacon which would be preventing them from invading alltogether.<br />
*** For players who want no part of Kaizers Marauders in their current setup a new Invasion Timing has been added: 'Never' sets the timer to 2147483647 seconds. Unless you plan to play some almost 14 years in 5x speed you won't see them.<br />
** Fixed an exception happening after a converted defector was hacked. Either that was old and nobody ever reported it or was created during the refactoring.<br />
** Fixed some external constants being wrong due to not overwriting the Vanilla Marauder constants. Kaizers Marauders now use different constants alltogether.<br />
** Fixed Kaizers Marauders not updating their external constants at all if the game is hotloaded with altered constants (which should only be the case if modding).<br />
** Reworked the hacks using the logic above and confirmed them working. Though it's probably only a matter of time until someone discovers bugs and glitches. Testers welcome, saves and/or steps to repro always appreciated!<br />
** The mark level at which Outposts and the Capital can get hacked is no longer hardcoded and has been set to be based on external data. Also reduced the mininum mark to begin Outpost hacks from 3 to 2.<br />
** Shortened the sidebar name of the Fusion Torpedo Bomber to F. Torpedo Bomber similar to its drone variant because it was getting too long for the fleet menu sidebar when transporting triple-digit counts.<br />
** Increased the likelihood of a Marauder Raider turning to a defector by 10 times. This was way too low. For reference: Before Raiders would have a [outnumbered raider count on player planets] / 10000 chance to defect each second. So a single Raider would have to stay some 10000 seconds while outnumbered on a player planet, statistically, for it to defect. 1000 seconds may sound low, but keep in mind that the amount scales with the raider count there.<br />
** Raider Defectors now display the ship lines and the centerpiece received upon being hacked, and the evacuation-hack lets the player choose any of 3 fleet ship lines (NOT the ark variant of the raider!).<br />
** Added a new bonus mechanic to grant the player the science and hacking points to deal with Marauders: Special-First-Kills-Per-Mark:<br />
*** The units eligible are the Marauder Capital, all 3 types of Raiders (Cruiser, Carrier, Blaster) as well as all 9 Superstructures.<br />
*** The science and hacking gained is global, not per Marauder sub-faction, or per player.<br />
*** Per mark level difference to the highest mark level they were killed by a player yet and per eligible unit there are 100 science and 2 hacking points granted if a player kills them.<br />
*** So Player kills a Mark 2 Marauder Capital: +200 science, +4 hacking. Player kills a Mark 1 Capital: Gains nothing. Player kills a Mark 3 Capital: +100 science, +2 hacking.<br />
*** As Marauder Mark level rises with intensity, the Raid Blaster only appearing at all if Marauders have debris and Superstructures being optional the amount of science and hacking that can be obtained varies greatly. The upper limit (Intensity 10 Marauders with debris and Superstructures) is 13x7x100 = 9100 science and 13x7x2 = 182 hacking. If the player can beat the most powerful Mark 7 raiders and superstructures.<br />
*** These values are experimental, as of yet, so feedback is appreciated! Note that this is NOT supposed to be a primary income of science and hacking, but only supplementary because Marauders offer new ways to spend hacking points. And science is always good.<br />
** (EXPERIMENTAL AND UNTESTED!) Updated Kaizers Marauders to no longer require the first expansion The Spire Rises to function. To accomplish this the Raid Blaster (which Marauders can use when having acquired Spire Debris) will no longer load when TSR is not installed, and the Setting for giving Maruaders debris at start will hide. Additionally the Nukes of the Mark 7 Kaizer use the Autobomb model and no longer the warhead model, thus making them Vanilla-compatible.<br />
<br />
== Version 2.702 Hot-Reloading Mods And Expansions ==<br />
(Released December 12th, 2020)<br />
<br />
=== Ship Line Swap Menu ===<br />
<br />
* Add some QoL improvements to the Swap Ship Lines menu. <br />
** Information is now in columns for easy reading<br />
** Ship Line Name is now colour-coded based on Mark Level.<br />
** It also shows the Strength of a Ship Line as well as the name and number of ships.<br />
** Along with the flagship name, it also tells you the hotkey number and the fleet strength<br />
*** The goal was to make sure all the information you might want is included in this screen<br />
<br />
* Add a bit of colour to the Headings for several Fleet-related menus<br />
<br />
=== New Included Mod: More System Defenders by CRCGamer ===<br />
<br />
* Added a new mod that is now distributed along with the game in an off-by-default fashion. This one is by CRCGamer.<br />
** Description: More System Defenders Revision 1.13 - Now with DLC checks<br />
** This mod primarly adds alternative planetary defense options into the game. Some of which are also utilized by the AI as well.<br />
** Notable Additions to the game include (but not limited to):<br />
*** Escort Carrier, A light frigate with a debuff and sub units available in random gen fleets, ARS, planetary defense fleets, and some AI defenses. Also includes a special cloaked ambush variant also in general distribution.<br />
*** Flypaper Frigate for Logi and Military systems and a special AI defense option. Loves blowing up small fry with small power grids.<br />
*** Gorgon Aggregate Body Frigate a medium hull with heavy paralysis that breaks apart into smaller damage focused units in combat.<br />
*** Artillery Cruiser, A defensive champion that punches big holes in heavier targets at range and boasts fairly stong defensive armament. Vulnerable to shield bypass however. Is available at Military Commands, a special fleet version can be acquired from FRS, and the AI is happy to use them as Dire Guardian alternatives. Only available if you have The Spire Rises installed.<br />
*** Cruise Missile Battery: Advanced defensive structure that attacks using self-homing missiles from long range. Home command and Logi system supported. AI has special fortified version. Also available only if The Spire Rises is installed.<br />
** Several additional systems mainly available within GCA include:<br />
*** Briar Patch cloaked turret that slows down enemy ships entering a system from a wormhole for a short while before being revealed. Automatic for Econ Commands as well.<br />
*** Screamer Rocket Pod an absolutely devastating disposable fusion armament that ignores shields and deals double damage to enemies under half health.<br />
*** Bomb-Pumped Laser Mines are short lived but incredibly damaging within a small line effect.<br />
<br />
=== Xml Parsing Upgrades ===<br />
<br />
==== For Speed, And For Groundwork For Hot-Reloading ====<br />
<br />
* Completely reorganized our xml parsing logic from game start.<br />
** Previously, we were opening xml files one by one in groups, parsing out the information into one data format, wrappering the format a little, then parsing the data from that data format and wrappering a bit more as we went.<br />
** This was SLOW, because sometimes we'd wind up waiting on disk access for a few extra ms on some file and that can compound (OSes can be funny like that), all that other main parsing had to happen on the main thread, and in general only the final parsing happened on background parallel threads.<br />
** The new approach finds all of the files in the background in about 25ms, then loads them all on background threads in about 300ms (on a quad core machine, on a basic SSD), does all that wrappering and initial translation on those same background threads, and THEN later goes back to the normal final parsing process with no need to worry about the disk anymore.<br />
** In practice, it looks like this actually does not speed up much (siiiigh), but it does remove some variability on slower machines in particular, probably. And the reorganization of this allows for us to make further enhancements to both speed (maybe) and functionality (definitely).<br />
** Update: actually, this may be a bigger deal than we expected at the start. Even on an SSD, sometimes this will spike to about 5 seconds instead of 300ms. If this was not happening on many background threads at once, then the wait might be even longer, so this is probably a solid win.<br />
<br />
* The LookupSwaps table no longer uses a lock to write into its dictionary. Instead it uses a ConcurrentDictionary.<br />
** This takes a process that was often between 2-6 seconds long (just depending on luck), and turns it into a 300ms event.<br />
<br />
* In the event that a sprite can't be found for some reason during sprite lookup in xml parsing, it now gives you much more informative reasons for that, and in a more brief format.<br />
<br />
* Previously, any game settings or achievements that were defined in expansions would not appear in the main game. Fixed.<br />
** This is one immediate and concrete benefit of the revised xml parsing logic.<br />
<br />
* Restructured even more of our xml reading and pre-parsing so that it happens on background threads absolutely as much as possible. This leads to a small speedup.<br />
<br />
* Carefully continuing to make changes to our xml processing while verifying that the results remain identical. We are now removing the "get row or create it if you don't find it" method, because this was only a sentiment that we wanted to enact three places in the codebase (related to settings, expansions, and mods), and the potential harm of accidental usage is a lot higher. This also sets us up for our next two goals on table row creation.<br />
<br />
* The name and ready status of xml nodes is now read on background threads and cached.<br />
<br />
* All of the creation of any row nodes is now done on the main thread, prior to any multithreaded processing that will later happen with them.<br />
** This lets us avoid using locks, and avoid using the ConcurrentDictionary for the central list of rows.<br />
** This also saves us a couple of dictionary lookups in the end, and in general reduces the chances of there being thread contention that causes inexplicable extra load time delays... fingers crossed. We do have a few other places with locks, but they are not used remotely so frequently as the other central lock was.<br />
<br />
* For xml tables that are parsed without multithreading, they now have a slight code branch to avoid using any locks at all, which speeds them up slightly once more.<br />
<br />
* RowAlteredByPartialRecords has been removed from table rows, as we are not actually using that.<br />
<br />
* Finding the "None Row" is now way more efficient on tables, and happens on the background processing threads.<br />
<br />
* The DoPostInitializationAndSortingLogic() method on tables has been split into two rows, one on the main thread and one on background threads.<br />
** Same with DoPostInitializationLogic(), which is also now more clear as being DoPostInitializationPreSortingLogic() with those two variants.<br />
<br />
* The sorting for table rows, and a lot of the post-initialization stuff, now happens much later (after the initialization of all threads) and on parallel background threads.<br />
** This drastically speeds up certain aspects of loading the game, and lets us handle certain things in a more orderly fashion on more threads.<br />
<br />
* The RowsBase collection has been removed off of ArcenDynamicTableBase, which simplifies a number of things and makes for fewer operations.<br />
** On ArcenDynamicTableBase, there is now a new DoForRows() method which lets us iterate over the rows even without knowing the type of the end table generics. Handy.<br />
** Also added a variant of DoForRows that is kind of like Parallel.DoFor(), since that's a pretty neat processing pattern. This turns out to be very useful when combined with yield statements, which can't be in anonymous methods directly.<br />
** Additionally, added a GetCountOfRows, which also helps with much the same group of things.<br />
<br />
* Several places that were trying to get things from ArcenDynamicTableBase later in the runtime are now more efficient thanks to using the DoForRows().<br />
<br />
* Added LogDelayedSingleLine() and DumpAllPriorDelayedSingleLines() to ArcenDebugging, which allows us to not have rapid multithreading messsages miss some line writes.<br />
** Otherwise, when there are many threads all trying to write to a log within microseconds of one another, they wind up largely not all writing. This makes it so they can all write.<br />
<br />
* Added a new OverrideAndSkipSortingNoMatterWhat to ArcenDynamicTableBase, which lets us skip the sorting even if some sort orders were specified.<br />
** For whatever reason, an old bug was preventing the team color definitions from being sorted, and that was actually good. The revised code does not have that bug, so we have to explicitly tell it not to sort.<br />
<br />
* Surrogate tables load a bit earlier, and death effect type tables sort themselves extra early on the main thread in order to maintain consistency with the order that things used to be in.<br />
** At this point we again now have parity with the way things have been up until now, despite doing a whole lot of things on background threads that used to block the main thread.<br />
<br />
* Rather than having LoadFinalSFXStuff() as a one-off for the SFXItemTable, there is now a generalized DoFinalLoads() that can be triggered on any table during load by setting a new HasAFinalLoadStageToCall = true on it.<br />
** The idea is to make it possible to do this style of late-load-with-UI-conting for any data table, and also to make that possible on reload.<br />
* Though in the end we found up needing this specific one load earlier, because of the way it links across to other things.<br />
<br />
* Adjusted a number of pieces of code in our xml import pipeline to be more multithreading-friendly. We noticed that there were cases where if there was an erroring row then it could potentially hit multiple tables that were unrelated to it, which was very confusing. But it turns out that in general we were just not quite threadsafe with every last bit of import process, so the remaining parts have been moved into standalone xml importer objects that no longer have these issues.<br />
** As a side effect, it now runs even faster (if your machine was prone to cross-thread contention). Either way, it runs properly correctly, which is the real thing that matters.<br />
<br />
==== For Hot-Reloading ====<br />
<br />
* There is a new PrepForCompleteReloadLater() abstract class required on every table.<br />
** The job of these for any tables where ReloadDuringRuntime.Allow is set is to make sure that any static variables are reset or destroyed.<br />
** But frankly, any instance variables that are lookups or big lists of things should also be reset.<br />
** This will likely break at least some code mods, but they need to implement it in order to be sure that they are not doing anything that will cause a problem with in-place reloads of the mods and expansions when switching those out when the game has already loaded. This is the chance for the modder to fix anything that might be going awry that would be a memory leak or otherwise.<br />
<br />
* Added a new ObjectDumper.DumperPurpose.DataTableAggregations, which lets us output the table instance variables and any collections on them.<br />
** The idea here is that if we have tables that allow for reloads, and they have some sort of aggregators, we want those aggregators to now be instance variables rather than static variables so that this process can verify correctness.<br />
** There are certain classes where that would be incredibly hard to do, like input actions or music buses, etc. We are NOT reloading those tables during runtime, because untangling all that is too complicated for now and also not likely something that any modder would need.<br />
** However, there are some new classes that previously were set to disallow reload-runtime (not that that was a feature yet, but we were preparing for this a long time ago), and those are now set to allow reload.<br />
<br />
* Dozens of classes have had minor changes to make things not be static that were previously static, or otherwise shift things around so that we can reset things after a during-runtime data table reload and then verify correctness.<br />
<br />
* A variety of functions on the ArcenDynamicTableAggregator class have been updated to properly allow for resets and removals of surrogate tables (aka stuff from externaldata) more easily.<br />
** Initially we thought we were going to have to change things up substantially in a way that would break mods, but the current approach is a lot more gentle and centralized.<br />
<br />
* Substantially upgraded our ObjectDumper code so that we can now import the details of a lot of lists, which is really handy.<br />
** Specifically when we have lists of things like key values, and the value is a list inside the list, it now exports the inner list.<br />
<br />
* DumpInternalNameOnlyForArcenDynamicTableRow now longer works except on ArcenDynamicTableRows. Now you must use DumpInternalNameOnlyForAnything for other things.<br />
** This lets us assigned the former to lists of values, and have the values way down in there just export row names, but not stop at just giving the name of the inner list type itself.<br />
** This works specifically for entity system types, which are no longer ArcenDynamicTableRows (have not been for quite some time).<br />
<br />
* All of the various data tables now export header information talking about any instance objects they have with all their various data on them.<br />
<br />
* Added INoFurtherDumpingNeededBeyondMyToString and INoFurtherDumpingNeededBeyondMyToString as root interfaces to help us have a bit more brevity in how we output some of our KeyValuePairs in particular.<br />
** The GameEntityTypeData was getting SO huge to export that the text files were no longer something that could be compared with regular diffing tools.<br />
<br />
* Added a IDumpDetailsNoMatterWhat, which we can now use on structs that we want to report their details, such as TaggedUnitIncomeData.<br />
<br />
* And really, we just had to keep changing and changing even more things for the data dumps, but the end result is that we have a clearer view of more data when we choose to do them, and they don't take TOO long.<br />
** This is in general a really important part of us being able to do something like load or unload a mod on the fly and then know if the game is in a correct state or not.<br />
<br />
* Added a new GameProgramIsAboutToReloadExternalXmlAndSimilar() virtual method that is on all of the faction implementations, and which we or modders can override as needed to proactively clear out data right before the game tries to dump all its stuff and recreate things from xml.<br />
** Thanks to NR SirLimbo for inspiring this addition.<br />
<br />
* Added a new IDumpForMyselfRatherThanBeingAutomated interface relating to ObjectDumper, which lets certain classes choose to stop being dumped via reflection and instead state how they wish to be dumped.<br />
** This is now used on ArcenRandomDrawBag, so for the first time in these dumps we can actually see the entries for each item in there and how many tickets each one has! This is pretty darn important for knowing if something actually changed, or if we have the wrong number of tickets now after a reload, etc.<br />
<br />
* FleetItem and FleetItemForLater both now override ToString() so that they give details on what is in them for cases where things like them being in draw bags happens.<br />
** This makes Arcen.AIW2.Core.FleetDesignTemplateTable_Header.txt and Arcen.AIW2.Core.FleetDesignTemplateTable.txt and similar super informative and interesting even when we're not trying to debug anything. For someone interested in the design and how the ratios of turrets or whatever are actually stacking up, this is great info to be able to see now.<br />
<br />
* Enabling and disabling mods and expansions now causes the game to purge a lot of its data and try to reload that immediately, rather than requiring a game restart.<br />
<br />
* The settings for exporting the data after an initial game start and after a purge and reload are now two different options for the sake of ease of testing.<br />
<br />
* A variety of changes and tweaks have been made to various parts of the xml import pipeline to let it actually properly reload things.<br />
** Additionally, a variety of small tweaks to prevent exporting working data that muddies the view of the data dumps for comparison.<br />
<br />
* Added in some centralized logic to get the DeathEffectType to properly sort themselves at the right time during reloads.<br />
<br />
* The way that music data is initialized is done a little more consistently with other tables now, and music tracks can now be dynamically loaded from xml based on expansions or mods.<br />
<br />
* Made some substantial improvements to our general data table reloading and export dumping for purposes of checking validity.<br />
** Specifically, generalized out the overall pattern from this to a new IReloadableXmlSource interface, which is now being applied to ArcenAbstractExternalData.<br />
** This means that when mods make changes to things like the core constants, visual constants, and things like that, those now actually get applied (or un-applied as the case may be) during a hot reload.<br />
<br />
* The way our ExternalClassDefinition files are initialized is now more efficient, and also compatible with optional reloads of linkages where needed.<br />
** Actually, wound up splitting this into two new versions: ExternalSingletonClassDefinition and ExternalClassFactoryDefinition.<br />
** It's worth noting that if a few of these things are altered as part of a mod -- and that would be one heck of an ambitious mod with really super unusual properties -- then the ones that are based on the factory class won't properly be reflected in the visuals after a hot-reload.<br />
*** All of those are basically revolving around the code of how ship-to-ship lines/beams, special effects, and ships themselves are drawn. The odds of anyone actually needing or wanting to wholesale replace those, even in a total conversion mode, are next to zero. There are better ways to accomplish the same thing, depending on the level of C# savvy the modder has.<br />
*** The ones that are based on a singleton ALSO are incredibly unlikely to need or want to be replaced, but they can be replaced with ease and the hot reloading will update them properly. These are the ones that would actually affect gameplay rather than just visuals, too.<br />
** This actually wound up being a bit of a time sink, but at least it works correctly now.<br />
<br />
* Changed the final calculation stuff from the game entity type table to use the recently-added DoFinalLoads() callback.<br />
** This thus fully fixes most of the remaining things that were wrong with game entities when we do a hot-reload of them.<br />
<br />
* The game now completely throws out all the old xml and reads the new xml from disk when you do a hot reload of expansions or xml mods.<br />
** With this change, the last strange little ghosts we were having are all fixed in terms of the data not coming in quite the same way again.<br />
** This also has the side benefit of being a quicker way to refresh the xml if you want to do that without restarting the game.<br />
<br />
* When doing a hot reload, the game now properly expands its search for code to look in the newly-available mods that have just been turned on.<br />
<br />
* The game now properly updates things like the paths it will look for asset bundles on when you change the expansions/mods and thus do a hot reload (this was never possible before, so it's a new thing).<br />
** '''All of the data in the game now properly hot reloads!! This is a pretty major milestone after a lot of work. It saves an enormous amount of time for players and for us as developers.'''<br />
<br />
=== Ship Model Loading Improvements ===<br />
<br />
* Error checking for ship models has been shifted to be sure it only does it once per actual ship visual, rather than once per ship type.<br />
** Essentially we have a ton of variants of ships that use the same model (six different kinds of raiders, for instance), so checking those fewer times makes things way faster.<br />
<br />
* Added a new debug settings option, defaults to off: Check For Errors On Ship Models During Load<br />
** If you are creating a mod with custom ship graphics, you may want to turn this on. When we are adding new ship models, it's also useful for us to turn this on. But otherwise this is something that most users can skip.<br />
** Previously we were always doing this on all ships when you had ship graphics on, which made the loading of ship graphics needlessly slow.<br />
<br />
* If you had ship models disabled, and then later enable them, it now draws the correct model rather than just raiders at various scales.<br />
** Thanks to Vic, Badger, and Ovalcircle for reporting.<br />
<br />
* Previously if you had ship models disabled when you loaded the game program, and then turned that on, various unpleasant things would happen:<br />
** If you turned it on while playing, then the ship models would still not show until you left the game to the main menu and came back in. Now they just appear immediately.<br />
** If you were on the main menu and loaded into a game, then it would sit around for a REALLY long time (many seconds) with the game seeming to be frozen as it loaded all the models. Now it loads them as-needed as you play in this scenario, which leads to slight hitching when new ship graphics are seen for the first time, but that's pretty minor.<br />
<br />
=== General Fixes And Additions ===<br />
<br />
* It was apparently possible in some cases to get exceptions in trying to initialize the dynamic table base for various tables at random. These errors are now caught better and reported more accurately.<br />
** These seemed to be more likely in hot reloading, but now should not really be possible at all, or at least not break the game if they do happen.<br />
<br />
* Fixed a few errors that could happen with modal question boxes where they could potentially have errors when you clicked them multiple times if they were still executing a long command (such as a hot reload) after you clicked the button the first time.<br />
<br />
* Implemented some new ways to force immediate hiding of all the windows that are open, for purposes of getting things out of the way for doing things like a hot reload.<br />
<br />
* Also implemented ways to hide the main menu background scene during these sorts of times.<br />
<br />
* Added a few more coroutine yields near the end of the load process. This will make "Stimulate Modulation" no longer take an inordinate amount of time if that's what was actually being slow for you. But also, there are some multithreaded processes in there and it will let them breathe a bit easier between one another and avoid situations of one group running up against the next. That was happening on some internal builds when things ran too fast without a gap of at least one frame, and the hope is that won't happen at all anymore.<br />
<br />
* On every main loop of the UI, the game now checks for "delayed log messages" that were sent from other threads, and logs them.<br />
** Please note that because of the multithreaded nature of these, they are often not quite in the correct order when a bunch of them come in at once. If you see a bunch with the same timestamp, then the order within those is effectively random, but that's okay.<br />
<br />
* Our delayed message logging system is a bit more robust now.<br />
** One thing that we can now do is call ArcenDebugging.LogDelayedSingleLineErrorThatMayBeFromAMod, and pass in a mod-or-null (typically these are related to a dynamic table row).<br />
** This lets us detect if certain kinds of data loading errors are coming from mods, and if so we append a note on the front of the error message that explains that the mod has had an error.<br />
<br />
* Certain xml errors are now more brief, and these error messages also specify what mod they are coming from if they are from a mod (which is really common if you use a mod that requires an expansion or another mod).<br />
** We have also made it so that if an official expansion has such an error, then it specifies the error, but that is hopefully exceedingly rare.<br />
<br />
* Various types of xml parse errors were previously then leading to secondary errors about unrequested attributes or nodes. Those secondary errors were spurious and got in the way of seeing the real errors. They are now quieted.<br />
<br />
* Fixed a perplexing issue that was remaining with exceptions happening in multiplayer from speed groups being created. We suspect that maybe some of the code did not get properly pushed in the most recent build for that one item, but if it was properly pushed then this will make it work properly, either way.<br />
** Thanks to CRCGamer and Badger and their multiplayer groups for reporting.<br />
<br />
* Fixed a couple of cases where multiplayer clients were potentially causing either exceptions or excess gamecommands or both based on exogalactic aattacks.<br />
** Thanks to Badger and his play group for reporting.<br />
<br />
=== New Mod Capabilities ===<br />
<br />
==== Mods That Adapt To What DLC Or Other Mods You Have Enabled ====<br />
<br />
* Every type of xml row in the game now can use a new required_expansion_list="whatever" attribute.<br />
** If this is present and there is at least one expansion listed in there, then this row will be completely ignored if the expansion(s) are not present.<br />
** This is super useful for mods that want to make changes to both expansion and base game content, as one example.<br />
** It is also useful for our own expansions that might want to add certain things if another expansion is present. For example, DLC2 adds a some more content to the Scourge if you also have DLC1.<br />
** For an individual row, you can say required_expansion_list="1_The_Spire_Rises" to just make it happen if DLC1 is present, or you can say required_expansion_list="1_The_Spire_Rises,2_Zenith_Onslaught" to make it so that the individual row requires BOTH the first and second expansions for some reason.<br />
** If you specify an expansion that does not exist, then the game will throw a visible error, since it's assuming that's a typo. There are no expansions that exist that an up to date version of the game would not be aware of.<br />
** It's worth noting that if this is place on a parent node, then it does not have to be placed on the child nodes under it. The child nodes will be ignored automatically.<br />
<br />
* We also added a required_mod_list attribute, which works exactly like the above.<br />
** However, in the event that a mod is not found, it logs something much more brief, and does so silently on game load only.<br />
** The reason for this is that it's extremely likely that a mod might not be on your computer but another mod requires it. We only know about the mods that we either package with the game or that you happened to install.<br />
<br />
==== Cosmetic-Only Mods ====<br />
<br />
* Added the concept of "cosmetic mods," and added an example cosmetic mod (the example is disabled so that it doesn't show up in-game).<br />
** To turn a mod into a cosmetic mod, simply add a file named ModIsConsideredCosmetic.txt to your folder<br />
** Here's how it all works:<br />
*** This is an example mod that shows how to create a mod that is purely cosmetic -- aka it changes nothing that would affect gameplay. This mod then is not logged in the list of mods applied to a game, which means that the savegame can be shared with other people. The other people would have no idea that a mod was in use at all, in fact. You can even use this sort of mod in multiplayer, with you having the mod on and others not, and there are no problems.<br />
*** The general idea is that this is for text changes, or visual updates, but nothing else. If you change the size of a unit's radius, even, then that will affect gameplay in terms of how ships decollide.<br />
*** If you do something like double the ranges of your turrets, you could still mark that as a cosmetic mod. With no new ships being added, and no new shot types added, other players can load your savegame fine. If you have a personal list of tweaks that you want to make to the base game, but you want to still be able to send in savegames to the devs easily, this is a way to do that.<br />
*** In multiplayer, if you have very different stats on your ships in a "cosmetic mod that is actually affecting gameplay after all":<br />
**** Then if you are the host, the game will proceed by your rules, to the surprise of everyone else.<br />
***** Everyone else will see the usual ranges and stats and things, but ships will be violating those rules seemingly without reason. Please don't prank people and then send us bug reports on that.<br />
**** But if you are the client, you will see your ships start to act your way, and then they will constantly be corrected by the host.<br />
***** No one else would be aware of your shenanigans, and you would not alter the game flow at all, but your ships and shots will tend to jump around and make shots that differ from the host and just generally test the self-correction the game has in place.<br />
<br />
==== Fixes To Existing Mods ====<br />
<br />
* The adjustment for the scourge faction in DLC2 now uses a required row for DLC1, so that people who have DLC2 without DLC1 won't get errors.<br />
<br />
* The "Extended Ship Variants" mod by NR SirLimbo previously had a separate variant that was specifically for DLC1. That has been removed, and wrapped into the main mod. So all of the features are all in a single mod, and the extra stuff for DLC1 just turns on if you have that (and is harmlessly off if you don't).<br />
** We are using this as an example of how to handle a mod of this sort. There are some things that were originally part of the fallen spire mod that COULD function without the first DLC (no errors happen), but they would have wound up not making any sense. These are mostly in the Fleet Design Templates. So you can see we limited those to also require DLC1, which means that they will only appear when the ships that would populate them would appear. This might seem obvious, but it's easy to overlook.<br />
** We also are using this as an example of how to combine mods. We are using ModAlternateNames.txt in order to include the old name ExtendedShipVariants_FallenSpire, and with this that means that if either mod was enabled before, they both map to the one combined mod now.<br />
** And lastly, we also have updated this to be a proper example of prefixing of filenames. We have the prefix ESV_BaseGame for the files that are for the base game, and ESV_TSR as the prefix for the ones that require DLC1, just to make things easier.<br />
*** In the base game, you see many files with prefixes like CMP or KDL or Badger or similar, but these are simply the initials or handles of Chris, Keith, and Badger and should not be copied elsewhere. For the ease of knowing where a file came from (when just looking at the filename itself), you should use your own name, initials, handle, or mod name.<br />
<br />
* In the event that you enable the Spire Railgun Shop (mod by Lord of Nothing) without having DLC1 installed or enabled, that mod no longer generates a bunch of errors.<br />
<br />
* The More Starting Options mod by ArnaudB has been updated so that it no longer strictly requires DLC1 to be installed. Most of the additions will not be present without DLC1 installed and enabled, but there were a couple of fleets in particular that happen to use only base game ships, so they would appear.<br />
** The mod no longer gives a bunch of silent log errors (and strange options with next to nothing in them) if players enable it despite not having DLC1 installed.<br />
<br />
== Version 2.701 Good Grief Hotfix Bonanza ==<br />
(Released December 6th, 2020)<br />
<br />
* Confirmed that beam weapons DO work in the new multiplayer system for clients.<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in some various protections for exceptions that could happen when it was trying to calculate the difficulty of various hacks. This kind of falls under the category of "how did this ever work?" since it was in some cases trying to check information from the first AI faction even if you were not in a game (and thus there were no factions yet).<br />
** In other cases where it might be something else, these errors are now also more informative as well as not causing issues in further execution of the code.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Fixed an issue in the most recent version that had prevented things from compiling properly and thus was causing all manner of strange issues. Visual Studio has been acting a little funky on Chris's machine and doesn't always report errors the way it usually should, so this slipped past (rather than having a big list of errors, you have to look for the tiny text of build failed, which disappears after a few seconds -- fun!).<br />
** Thanks to Puffin for discovering the issue in code.<br />
<br />
* Previously it was possible to hit an exception in GameCommand_CreateSpeedGroup that would cause the entire execution to stop in multiplayer. We're not sure exactly what was happening there, but now two things are true:<br />
** Firstly it will no longer block the rest of everything. It also has some code in there to prevent a few possible causes of this.<br />
** Secondly it will now give a more detailed report on what went wrong if something does go wrong in here again in the future.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed an issue that was probably not a real issue, but if it does come up again it will at least give a more visible error and also ask about missing mods.<br />
** Essentially this was probably due to the compile bug, but was entity systems not being found via fast blast data sometimes.<br />
** Thanks to CRCGamer for the log that had this in it.<br />
<br />
* Fixed an issue in the most recent version of the game where disposed rect transforms could wind up being checked for position offsets, thus causing endless streams of exceptions. This was most common when opening the settings menu and then clicking to the performance tab, but could also happen other ways. We now intercept this so that it doesn't happen.<br />
** Thanks to ParadoxSong, ArnaudB, Puffin, and NRSirLimbo for reporting.<br />
<br />
* Fixed another bug with hacking difficulty causing exceptions. Factions are sometimes just validly null in there, and it now recognizes that.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* For unknown reasons, it was possible for the Scenario on the long term world setup data to be null on multiplayer clients, particularly with certain mods in use.<br />
** The game now has been adjusted all over the place to use wrappered calls to scenario objects and get the default scenario if one is null. Additionally, if the scenario is STILL null then the game just skips whatever was supposed to happen there.<br />
** The client will wind up getting the proper information from the host soon enough.<br />
** It's possible that code mods may need to be recompiled against this.<br />
** Thanks to CRCGamer and NR SirLimbo for reporting.<br />
<br />
* Added a new debug setting: Thread Debug Log<br />
** Log when each thread kicks on and off. Only use this for short periods if you are experiencing a game lockup, particularly with multiple mods on.<br />
<br />
* Added a new debug setting: Per-Second-Sim-Stage Debug Log<br />
** Log when each part of the per-second sim stages process on and off. Only use this for short periods if you are experiencing a game lockup, particularly with multiple mods on.<br />
<br />
* Added a new debug option: Network Code Branches Debug Log<br />
** Log when various parts of the networking code kick on and off. Only use this for short periods if you are experiencing a game lockup, particularly with multiple mods on.<br />
<br />
* Fixed a couple of boneheaded programming bugs that could lead to infinite loops and the game locking up when the server was trying to send certain data to clients.<br />
** The recent changes in the last version of the game made it a lot more likely, particularly when ships were added by a background thread, but that version did not originate the problem.<br />
** Thanks to NR SirLimbo and CRCGamer for reporting and providing an excellent savegame test case.<br />
<br />
* Put in defensive code in a few places that could have exceptions if the multiplayer client had exceptionally bad data because the host was having some kind of issue of its own. Hopefully never needed, but at least making things more clear and self-repair-y if there are problems.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* When loading savegames, it was possible to get a bunch of log spam that was invisible but said "Shot had no origin system, so discarding." This is quiet now, as it's not important. It only will go to the log when these are network messages.<br />
** Thanks to NRSirLimbo, CRCGamer, and others for reporting.<br />
<br />
* Fixed that bug that could still happen on clients if speed groups were created in multiplayer.<br />
<br />
== Version 2.700 Multiplayer Shared-Faction Reaches Beta ==<br />
(Released December 6th, 2020)<br />
<br />
* Previously, the new "invert ui mousewheel scrolling" feature was not inverting lists inside of dropdowns. Now it does.<br />
** Thanks to False and Daw11 for reporting.<br />
<br />
* Added a new setting to the HUD section: Mousewheel UI Scroll Speed<br />
** How fast should the scroll wheel move UI scrollbars when you spin it? The default value is 30, which should be comfortable for most folks. But if your OS has unusual settings, and the in-game interface feels like it scrolls to slowly, then go for a higher number. If it's too fast, go for a lower number.<br />
** Thanks to Daw11 for suggesting.<br />
<br />
* The tooltips from dropdown items now aligns to the dropdown item itself instead of the base dropdown. This makes it consistent with all the other UI elements, and again far more legible.<br />
<br />
* A further continuation of the bug that Badger was running into last night in multiplayer, it was still possible for the fast blast process to try to send squad info from the server to the clients before the fleet membership was assigned. It now detects that, waits up to 2 seconds, and then discards the data if the squad was never fully set up correctly.<br />
** There are two scenarios here. One of them is that sometimes we might start trying to create a squad which then we decide to discard, and those need to just get junked.<br />
** The other is that we are having a race condition within a few milliseconds or even microseconds one thread and another, and thus the main thread just needs to wait a bit. It tries every 50 milliseconds or so for 2 seconds.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* New galaxy map display mode: Priorities<br />
** Very focused view that just shows you any priorities that you have set, and nothing else beyond your own fleets. This information is available in every view, but this view makes it easier to see this information on its own.<br />
<br />
== Version 2.647 Planet Names, Notes, And Priorities ==<br />
(Released December 5th, 2020)<br />
<br />
* Fix a bug with clicking on the Spire Debris notifier<br />
** Thanks to UFO for reporting<br />
<br />
* Fixed an exception in Kaizers Marauders tooltips due to some changes in the Vanilla codebase.<br />
<br />
* Likely fixed the bug where galaxy map under-attack or ping indicators were showing in the planet gravity well edge in the prior version.<br />
** Thanks to Mac for reporting.<br />
<br />
* Deathgrip tackle drones now have aggro invisibility like most other drones.<br />
** Thanks to poljik2 for reporting the oversight.<br />
<br />
* Corrected an oversight in the threat strength galaxy map display mode that showed you threat that was not actually visible to you because of the fog of war.<br />
** Thanks to Daw11 for reporting.<br />
<br />
* Fixed a variety of potential places where exceptions might happen from the host to the clients when trying to sync squads. Why these ones were happening is a bit of a mystery, but it will either be more informative now, or fixed.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed an issue where playing with the nanocaust and winning the game could cause exceptions at the end.<br />
** Thanks to Crabby for reporting.<br />
<br />
=== Edit Planet Name, Notes, And Priorities ===<br />
<br />
* For planet priorities, in the original AI War we had P1 through P10 with specific colors, and we by convention players used those for specific things. Those are all making a return in this game, with the same colors.<br />
** However, because we have the flexibility to do so much more, we've also added the following words with their own colors: Ignore, Important, Later, Next, Danger, Help, Protect, Wanted, Trap, Wave, Hack, and Team.<br />
** We've also added the following letters with very different colors, for allocating sub-teams or objective order or whatever you like: A, B, C, and D.<br />
<br />
* Previously, intel-based higher and lower priorities would show on the galaxy map with lower to the left and higher to the right. Now it shows both of those on the right.<br />
** The new "planet priority" that you can set directly is instead shown on the left (if present).<br />
** If there are an uneven number of rows between the two things, then it puts blank rows on the opposite side to make other things line up properly.<br />
** Also if there are high and low priorities on a planet, it now only mentions the count of high priorities since the low priorities are not worth thinking about. This cuts down on clutter.<br />
<br />
* The Edit Planet button on the galaxy map is now fully functional.<br />
** Clicking this allows you to edit the planet name, add freeform notes to the planet (up to 512 characters, that show in the tooltip for the planet after that), and set a priority for the planet. The priority levels for the planets include the same exact ones from the original AI War, plus a bunch of new ones.<br />
** Thanks to Quiet, doctorfrog, Chthon, Badger, and others for suggesting various parts of this.<br />
<br />
== Version 2.646 Pings And Battle Indicators ==<br />
(Released December 4th, 2020)<br />
<br />
* Civilian Industries Update<br />
** Updated for the latest version of the game.<br />
<br />
* The Abandoned Asteroid Mine now has a bit of flair to make it easier to tell it apart from regular metal generators. I do think this probably could use some additional icon tweaks for more clarity, but it's something.<br />
<br />
* Fixed a bug in the logic for the top units by strength not showing properly if you had fleets at that planet, in the Strength With Top Ships mode.<br />
<br />
* Ship lines in the Fleet Health menu are now sorted from strongest to weakest.<br />
<br />
* Added a new hotkey to a new Other UI section of the controls window: Toggle Fleet Status Window For Current Planet<br />
** Pressing this button combo will open or close the fleet status window. You can also open that window from the bottom left bar on the galaxy map.<br />
** Defaults to Ctrl+F.<br />
** The button on the galaxy map now informs you this tooltip exists.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Added a new hotkey to a new Other UI section of the controls window: Toggle Fleet Status Window For All Planets<br />
** Pressing this button combo will open or close the fleet status window for all player fleets in the galaxy. You can also open that window from the bottom left bar on the galaxy map.<br />
** Defaults to Ctrl+Alt+F.<br />
** The button on the galaxy map now informs you this tooltip exists.<br />
** Thanks to Badger for suggesting.<br />
<br />
* One of Chris's greatest pet peeves, which for some reason stayed under the surface in terms of actually really thinking about doing much about it, is now resolved.<br />
** Essentially, big tooltips often covered the thing you were actually trying to look at, which was just super frustrating. Now tooltips automatically try to either move up or down, whichever is available, to not cover the thing you are hovering over.<br />
** As one example among many, the new ping button was absolutely invisible when you moused over it, because of its own tooltip. Now you can see the darn thing.<br />
** Dropdown elements may need some adjustment at some point, because it aligns to the top or bottom of the dropdown itself, not the dropdown item in the popup, but that's a smaller annoyance than what it used to be, at least.<br />
<br />
=== Battle Indicators On Galaxy Map ===<br />
<br />
* In any galaxy map mode, on planets that are owned by a faction that is friendly to the players (or is in fact player-owned), if there is an attack going on a little animation of swirling circles like voice echoes play around the planet. It comes in four severities:<br />
** Darker blue and smaller if good outnumbers bad 2:1.<br />
** Lighter blue and still pretty small if good outnumbers bad.<br />
** Orange and larger if bad outnumbers good less than 2:1.<br />
** Orange and more vigorous and larger if bad outnumbers good 2:1 or more.<br />
** We experimented with a variety of effects, but all of these ones are subtle enough that they should be noticeable but not something that cause anything close to a strobing effect or anything that would cause motion sickness or headaches. But please let us know if you experience something different. The idea is to just draw the eye a bit, but it's a pretty small indicator on your screen. Overall the goal being to notice spots of conflict on the map more easily.<br />
** Thanks to Badger for inspiring this addition.<br />
<br />
=== Pinging Planets And Locations For Multiplayer ===<br />
<br />
* Another new button in the Other UI key combo section: Toggle Ping Mode<br />
** Pressing this button combo will enter or exit 'ping mode', in which you can leave colored markers strewn across one or more planets. These markers fade over 6 seconds, and are mainly for communicating in multiplayer.<br />
** Default: F1<br />
<br />
* The ping button on the galaxy map is also now fully functional. Its new description in its tooltip:<br />
** Click to enter ping mode, which works on the galaxy map or at individual planets (shortcut key: F1). Any pings you leave on the galaxy map last for 6 seconds, but don't get any smaller over time. They're for drawing the attention of multiplayer allies with a little green marker. If several of you are pinging at once, it's a good idea to take turns for the sake of clarity as you discuss things. On an individual planet, you can draw a whole series of pings, which get smaller over time, thus letting you indicate direction.<br />
<br />
* It is now possible to hold down hotkeys during ping mode and do different ping colors: orange, blue, pink, and yellow in addition to the usual green. This lets you indicate different things more easily while discussing. The UI shows what will happen very clearly, and you can customize the keys.<br />
** Thanks to Badger for suggesting.<br />
<br />
=== More Galaxy Map Display Modes ===<br />
<br />
* New galaxy map display mode: Energy Consumption<br />
** Shows how much energy the selected faction(s) are using at this planet. If there are two lines, then the top line is how much is being used by units directly, and the second line is how much is being used by units contained in other units (usually transported ships). Unit icons shown under the planet are for the three heaviest energy users at the planet.<br />
<br />
* New galaxy map display mode: Threat<br />
** Very useful! Ignores what factions you select on the left dropdown. Shows how much Threat strength there is at this planet from any source. So this is threatfleet ships belonging to the AI Sentinels, and AI Hunter ships, mainly.<br />
** Thanks to ArnaudB and Badger for suggesting.<br />
<br />
* New galaxy map display mode: AIP Reducers<br />
** Ignores what factions you select on the left dropdown. Shows any unit that is able to reduce the AI Progress (AIP) of the AIs.<br />
** Created by Badger in 2017.<br />
<br />
* New galaxy map display mode: AI Defenses<br />
** Ignores what factions you select on the left dropdown. Shows all major AI defensive structures at each planet as icons. In text, shows the strength of all hostile units at each planet. If it's stronger than your current selected ships, then it's orange text. If it's more than 2x as strong as your current selected ships, then a deeper orange. If it's less than half as strong, then it shows as a light blue.<br />
** Created by Badger in 2017 and spruced up very slightly.<br />
<br />
* New galaxy map display mode: Capturables<br />
** Ignores what factions you select on the left dropdown. Shows any unit that is considered to be a capturable, or that maybe are not capturable but exist purely to be hacked to gain new stuff.<br />
** Created by Badger in 2017 and spruced up to include a lot of new things.<br />
<br />
== Version 2.645 Hotfix ==<br />
(Released December 3rd, 2020)<br />
<br />
* Fixed a wide array of exceptions that could happen, particularly as of the last version, if you had a partially failed save or quickstart load. If the playeraccount was missing, which is the real bug, then certain other parts of the code would spam tons of errors and obscure the real one. They no longer do.<br />
<br />
* Fixed a one-line typo with the recent changes to delayed invasion support for the nanocaust that was causing all older quickstarts and savegames that included the nanocaust to not be readable.<br />
** Thanks to Cel for reporting.<br />
<br />
== Version 2.644 So Many Good Things All At Once ==<br />
(Released December 2nd, 2020)<br />
<br />
* Added a new "Invert Mousewheel UI Scrolling" setting to the HUD section of personal settings:<br />
** Description: Normally when you spin the mouse wheel forward, any scrollable areas you are hovering over in the UI go up; spinning backwards goes down. This lets you flip that functionality. OR, in the case that your hardware or OS is inverted for whatever reason, this lets you correct it to work like everyone else.<br />
*** Note: if you also want/need to invert how your mouse wheel works when zooming the game view, then be sure to also set the 'Invert Mouse Zoom' option in the All Cameras section.<br />
** We also updated the other setting to also mention this one, so that if you find one of them you can find them both. We left them as two separate settings since some people might want one and not the other if this is a personal preference and not the "backwards linux mousewheel" bug.<br />
** We thought that this was something we could not fix without unity taking care of it on their end, but we took a peek at some of their old decompiled source code and found an efficient way to find all of the objects that need reversed scrolling and update them in cases where that is indeed needed.<br />
** Thanks to Blu3wolf, The Main Man, whetstone, TechSY730, Matruchus, Elos, carewolf, and others for raising the issue again.<br />
<br />
* Remove a mechanism where fireteams would deliberately overestimate turret strength; turrets are no longer under-valued strengthwise so this mechanic was now making the Hunter even more timid.<br />
<br />
* The Hunter is no longer allowed to retreat from a battle involving the AI Overlord. They must fight to the death there. This includes Exogalactic War Units. <br />
** This has been reported in a number of places, but most recently by Waladil on discord<br />
<br />
=== Delayed Invasion Support ===<br />
<br />
* Marauders can now be requested to do a "delayed invasion", ie they won't start attacking until a ways into the game. <br />
<br />
* The Nanocaust can be set to invade at a random time during the game, or immediately. This replaces the old "Non-Immediate Nanocaust are seeded as beacons" paradigm. <br />
** If not explicitly requested, the nanocaust will appear in a beacon.<br />
** This change means the Nanocaust now works "correctly" in the game lobby.<br />
** This resolves bug reports from ParadoxSong and Isiel. Possibly others as well<br />
<br />
* Also you can request the nanocaust to appear on a player planet. This is a terrible idea unless they are your allies<br />
** Requested by Arc-3N-4B<br />
<br />
=== Galaxy Map UI Additions ===<br />
<br />
* On the galaxy map bottom left bar, there are edit planet and ping planet buttons, but for now those are just going to have a "coming soon" tooltip on them. We'd rather not delay the rest of this release another day just for them.<br />
<br />
* The new default for when icons and text on the galaxy map stop drawing is 10, rather than 1.5. It will update existing settings for you.<br />
** This makes them always show, even if it does get crowded. Trying to use galaxy map filters with them disappearing was an exercise in anger management.<br />
<br />
==== Planet And Unit Search ====<br />
<br />
* Added a new "GalaxyMapTextboxFunction" xml table, which lets us (or modders) define "a thing that uses a textbox on the galaxy map to do something."<br />
** That is vague somewhat on purpose. But mostly we expect it will be used for searches of various sorts.<br />
** For now we have implemented one for finding planets, and another for finding units.<br />
<br />
* There is a new bottom-left UI element on the galaxy map view. This has a number of functions built all into one.<br />
** First of all, it has a new find planet option, which is extremely responsive and lets you search for planets by partial text, darkening all others that are not including that text.<br />
*** It also shows the names of all the planets that come back as possible matches, even if they would not normally be shown right now.<br />
*** It does not try to do any centering on the planets it finds, as it might find many. But at any rate, this is a very dynamic and simple way to find planets by name.<br />
** Secondly, it has a function that lets you search for planets by name of a unit (ship or structure).<br />
*** Any icons shown at planets will be shown in this mode, regardless of zoom distance.<br />
*** Even better, it actually hides all of the icons that would normally be shown, and instead shows the first ship icon of each match that it's finding on that planet (if there are 100 v-wings, it will only show the icon for one of them, but you're usually not searching for something like that).<br />
<br />
==== Fleet Status Window ====<br />
<br />
* Added a general new Window_BottomLeftSelfUpdatingTextWindow, which works pretty much like Window_ModalSelfUpdatingTextWindow from a code standpoint. However, this lets us give a non-modal (aka non-input-blocking) onscreen view of some sort of information over there on the left where chat and such would be. Tooltips and chat and similar will block this view, but otherwise it stays open until you close it, which can be useful for information players want to have at their fingertips and that a modder or developer wants to provide them.<br />
<br />
* Over the last couple of weeks, Badger has been working on a Fleet Status display that was kind of hidden up there on the attack buttons in the top resource bar. There is now a dedicated F Stat button on the galaxy map that you can hover over to find out about this function, and left click or right click to get information on local fleets or all fleets.<br />
** This is the first usage of the new Window_BottomLeftSelfUpdatingTextWindow, and it lets you keep an eye on your own status of fleets, or the status of allies in multiplayer, that sort of thing.<br />
** This is no longer openable off of the resource bar, but instead just off this new galaxy map button.<br />
<br />
==== Galaxy Map Display Modes ====<br />
<br />
* Galaxy map display modes make a triumphant return! <br />
** All of the prior ones that were there were really old, not having been altered since... goodness, September 2017.<br />
** When we updated the game to a new UI style in 2018, these were disabled and we never got back to adding them in until now. With that said, we're revisiting what they actually do, or replacing them.<br />
<br />
* Normal display mode (what you've seen always for the last few years):<br />
** Ignores what factions you select on the left dropdown. Shows your strength on the right of each planet, and enemy strength on the left at each planet. Unit icons shown below the planet are a general mix of high priority units.<br />
<br />
* On all of the galaxy map modes, it now is sure to keep showing your own fleets, since those are useful to be able to select and click and such no matter what else you're looking at.<br />
<br />
* Metal Production display mode:<br />
** Shows how much metal the selected faction(s) are generating at this planet in gray, and how much is available but not used by that faction in red. Unit icons shown under the planet are one per type of metal generator.<br />
** Useful for seeing which planets have more metal that you might want to capture, where your main metal production is, and where your metal production has taken damage.<br />
<br />
* Energy Production:<br />
** Shows how much energy the selected faction(s) are generating at this planet in gold, and how much is available but not used by that faction in red. Unit icons shown under the planet are one per type of energy generator.<br />
** This is useful for seeing where you're generating energy in a visual way, AND for finding large energy generators that you might want to capture out in the rest of the galaxy.<br />
<br />
* Science And Hacking<br />
** Shows how much science and hacking points are left to be gathered on each planet. The only unit icons shown under planets are player fleets.<br />
<br />
* Strength:<br />
** One of the most useful display modes! Shows how much strength the selected faction(s) have at each planet. The only unit icons shown under planets are player fleets.<br />
** This is the really important filter! This is how you find out just how strong the hunter is, wherever it is, or easily pick out exactly where the warden is hiding. Assuming you have up to date intel, of course.<br />
<br />
* Strength With Top Ships<br />
** Mostly the same as the Strength display mode. However, this is much more cluttered because of the icons showing the three strongest units of the relevant faction(s) being shown as icons under each planet. So this is less useful than the general Strength display mode for seeing an overview of everything, but it's great for observing what the big hitters are at various planets all at once.<br />
<br />
===== Faction Filters =====<br />
<br />
* On the galaxy map, there are now detailed faction filters for EVERY faction, including normally-not-listed ones, all organized into various categories with proper explanations.<br />
** This actually took WAY longer to create than we expected, but it gives the ultimate in flexibility in all that.<br />
** The nice thing is that this only fills in as you actually encounter members of each faction, so this starts out smaller but then grows substantially as you find sub-parts of the AI, etc. So for example, you likely will not see any Praetorian Guard entries for a while, and you would not see AI Reserves until they have struck you at least once, etc. No tamed macrophage unless you actually meet one.<br />
<br />
* Factions in general can no longer override CheckIfPlayerHasSeenFaction(), which we have upgraded to properly support beacons and other things of that sort.<br />
** There is now a new DoOnFirstSightingOfFactionByPlayer() that factions can override to get the same sort of effect they used to have.<br />
** You may need to let the game run for about one second before things will properly show up in terms of factions that should be visible.<br />
<br />
* Added a new FactionGroup class, which lets us start displaying/discussing factions by whatever arbitrary categories.<br />
** For now we have All, My, Allied, Hostile, and Beacon as the categories, with tooltips explaining each.<br />
<br />
* Added a new FactionFilter struct, which lets us mix actual factions with faction groups, and display them in a nice list that we can also sort.<br />
<br />
* Badger's fancy SortFactionsForDisplay() has been removed off of Human.cs and is now on BattlefieldVisualSingleton.<br />
** However, it should never be directly called anymore. It should now be retrieved from FactionFilter.GetLatestSortedFactionCompleteList() to get that result which is cached and only updated once every 10th of a second.<br />
** This now lets us get that from other parts of the code that are not in externalData, too.<br />
<br />
* Beacon factions that have not been summoned yet now show "(Beacon)" in front of their names.<br />
<br />
* Added a new is_considered_visible_part_of_the_ai_faction_for_filter_purposes for factions, which lets us have certain sub-factions like the AI Hunters and such show up more prominently in the list of factions in the galaxy map filters.<br />
** Also added is_considered_player_allied_for_filter_purposes for purposes of getting the Outguard to show as a player Ally even though they are usually invisible.<br />
<br />
=== Updates To Included Mods ===<br />
<br />
* Fixed the spire railgun shop mod to use the newer xml that is about spire ships not working when not on a PLAYER planet, instead of a specific owner faction. This was a change we made for multiplayer compatibility, and it changed an xml tag.<br />
** Thanks to Badger for reporting.<br />
<br />
* Kaizers Marauders improvements:<br />
** Removed the ability to assign negative budget and in return changed and integrated the Invasion Time setting from Vanilla<br />
*** Assigning negative Budget would work, but had its issues: Marauders were forced to start out very small, the timing was estimated at best and could vary incredibly<br />
** Now the player can choose Immediate, 1-10 hours and Random /Early/Mid/Late/Very Late game and Random All, which translate to 0-2, 2-4, 4-6, 6-8 or 8-10 hours of actual game time, with Random All being 0-10 hours<br />
** Essentially the mechanic is that in beacon mode the beacon will self-destruct when the time mark is reached, BUT the player can still destroy it earlier. During this time Marauders gain NO Invasion Budget<br />
** When not in beacon mode Marauders are prevented from doing any invasion logic until their time has come, but they passively accumulate more budget and will invade with quite a few forces. Note that they do NOT get any bonus budget from owning no planets as that would likely lead to much, much greater invasions yet...<br />
<br />
* AMU now has a new function: parseFIntFromStringUpToFirstSpace(). Can parse numbers like 1 / 1.6 / 100.738, etc. If more than 3 decimals are used any excess is discarded.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed divide by zero exception that could happen in the risk analyzers faction. This was not related to any recent changes, it just was apparently rare.<br />
** Thanks to Isiel for reporting.<br />
<br />
* Previously, mod names with spaces in them would cause the settings file on your machine to become corrupt and unable to be loaded. This should no longer be the case, although we've not tested it.<br />
** Thanks to ArnaudB and Isiel for reporting.<br />
<br />
* The capsule colliders on the lines between planets on the galaxy map no longer size up or down. This can mean that on very far zoom on very large maps it can be hard to get your mouse exactly over the line, but it's still very much possible and this is hardly a crisis. The main thing is that these no longer get in the way of the planets themselves, which may have been happening.<br />
** We investigated the planets themselves getting off on scale, but did not find any evidence of drift, and were already using the careful approach that we were considering "switching to."<br />
** We did also find a number of cases of places where things like notifications might have been getting in the way, with text that was extending beyond their bounds. We fixed all of those as well, in case those were what the problem was.<br />
** Thanks to AxiomExotic, afterthought, Vortex, Karlant, and Badger for reporting the problem with the hitboxes on the planets on the galaxy map still being there after long enough sessions of play. This may not solve it, but it does remove several areas of potential problems that were in place.<br />
<br />
* If a dropdown list is extended, and the number of items in the list changes, it now refreshes with the new options included. Previously, you had to close and reopen the dropdown list. That was potentially not possible to have happen as a situation before, but with the list of factions on the galaxy map it now is.<br />
<br />
* Fixed another issue with dropdowns still staying open after you switch to a different context where their parent window area is no longer visible. This was super noticeable with the new galaxy map controls.<br />
<br />
=== Balance Tweaks ===<br />
<br />
* Fixed Veteran Sentinel Gunboat having lower damage than normal, due to being missed in a long ago previous update.<br />
<br />
* Fixed Cloaked Mugger having less health than the normal version, due to being missed in a long ago previous update.<br />
<br />
* Reduced range of any Tier 1 Extragalactic units that were above 8,000 (before global range modifier) to 8,000.<br />
** Due to mentions of most Turrets being incapable of fighting these, and these are the tier that will be hit in most normal games, excluding modded ones and Fallen Spire runs.<br />
<br />
* 'Ram' Auto Bombs swap their armour damage bonus for a new one, that works against armour of +90mm. Mass damage bonus increased from 5x to 7x.<br />
<br />
* Altered Parasitic starting fleet. Normal Parasites are replaced with 25 Parasitic Pike Corvettes, 1 Mugger is removed, and 40 Stalkers are added.<br />
** The Why:<br />
*** Too many Parasites and not much damage led to this being a very slow start.<br />
*** Thus, some Parasitic Pike Corvettes were swapped in for some extra firepower, but keeping zombification.<br />
*** 2 Muggers is actually in excess of the normal cap size, so 1 is removed.<br />
*** Stalkers are added to give this fleet more single target power, making up for the loss of the Mugger, and lets it fight things such as Sabot and Nucleophilic Guard Posts early on (things which counter said Muggers).<br />
<br />
* Dire Tesla Guard Posts weapon jam works on armor <= 90, rather than <= 101.<br />
<br />
==== Turrets ====<br />
<br />
* Altered "large" Turret energy costs to have the same "cap scaling" as the "small" Turrets.<br />
** E.g a Pike Turret cost 2,250 energy. A Crusher Turret cost 37,500 energy.<br />
** A full cap of Pikes would be 5, costing a total of 11,250, compared to the full cap of just 1 Crusher Turret, still 37,500.<br />
** Now, the Crusher Turret costs the same as that full cap of Pikes.<br />
<br />
* Mini Fortress energy cost halved.<br />
** An exception, due to a report about its power, this has less of a change (66% reduction often).<br />
<br />
* Crusher Turret magnetic pull range increased from 4,200 to 6,500 (before global range modifier of 0.8x). Crusher weapon range changed from 1,000 to 1,700, hits 20 targets instead of splitting damage evenly, net DPS the same.<br />
** The last part lets it focus damage more, rather than spreading it out so much it doesn't help to kill anything off.<br />
** Also hopefully improved its pull targeting.<br />
<br />
* Acid Turret effect increased from 50 to 65, shot count 3 -> 5.<br />
** Will attempt to add Mark scaling to the effect, requires code investigation.<br />
<br />
* Increased target priority of Bulwark Turrets a chunk.<br />
<br />
* Doubled the self-build rate of the "Raid" technology Turrets, excluding Blitzkrieg which is a "large", and did not have the appropiate build rate for its size. It now does, and then that is doubled, leading to it being 6x what it was before.<br />
<br />
* Fusion Turret reload time reduced from 2s -> 1s, damage 700 -> 350, loses shield bypass. Instead, gains a 12x damage bonus versus personal shielding.<br />
** This replaces the ability to quickly destroy structures (not too useful on defense) with instead a highly supportive role, potentially useful combined with Imploder and Subverter Turrets.<br />
<br />
* Fuseball Turret range 10,100 -> 15,000.<br />
<br />
* Makeshift and Blitzkrieg Turrets no longer spawn units on death. Instead, they use the "drone guns" present on Combat Factories, as well as Tesla Torpedo and Tackle Drone Frigates (they have infinite range).<br />
<br />
* Makeshift Drone damage reduced 33%.<br />
<br />
* Increased Vampire Turret damage 25%.<br />
<br />
* Shredder Turret range increased from 4,200 to 5,200 (before global range modifier), damage increased roughly 30%.<br />
<br />
* Increased Imploder Turret damage 50%.<br />
<br />
* Doubled Deathgrip Turrets tractor count, increased range from 4,200 to 5,200 (before global range modifier), damage increased 20%.<br />
<br />
* Increased Jammer Turret damage 50%.<br />
<br />
* Increased Translocator Turret damage 50%.<br />
<br />
* Doubled Tritium Sniper Turret damage, halved multiplier.<br />
<br />
* Increased Fortified Tesla Turrets cap sizing to the same as normal 'small' Turrets. Reduced health by 40%.<br />
** Cap health is the same, cap damage is up 66%, but in the hands of the AI they are easier to kill (who don't get any more or less from current).<br />
<br />
==== Aggro Invisiblity, And Drones In General ====<br />
<br />
* Added a new cannot_target_or_alert_ai_reinforcement_spots option for ships, which provides the following new ability:<br />
** AGGRO-INVISIBLE: Enemy target ships and structures (mainly guard posts) that contain guards cannot detect this ship, and this ship cannot fire upon those targets.<br />
*** Once those targets have been alerted and have released their guards to fight, those targets can then be attacked by this ship.<br />
** Thanks to Strategic Sage and zeus for inspiring this addition.<br />
<br />
* The new Aggro Invisiblity ability has been given to all of the sniper ship variants, sentinel gunboat variants, sniper frigate variants, sniper guardian variants, and sniper turret variants.<br />
** This prevents them from engaging guard posts and similar unless those guard posts are already aggro'd, and thus not alerting an entire planet just because you bring them along.<br />
** Why have this on the guardians? Mostly for AI Civil Wars, but also in case you capture some.<br />
** Why on turrets? Mainly for purposes of beachheads.<br />
** Thanks to Zoreiss, AnnoyingOrange, Asteroid, Fluffiest, and others for reporting.<br />
<br />
* The various drones that had been switched over to the "drone gun" format as of a few weeks ago have been returned to the regular drone behavior.<br />
** Thanks to discussion with Strategic Sage for letting us know how much the new format was not great.<br />
<br />
* Pretty much all drones use the new Aggo Invisibility ability.<br />
** They can still go hit things right next to guard posts without causing an issue, and they can even hit guard posts that have already emptied their guards.<br />
** Guard posts can even still shoot at these drones if the guard post has any weapons, though the drones can't shoot back until the guard post is aggro'd by something else. These drones would not bother going near the guard post unless there was something else there to shoot, though.<br />
** Thanks to Puffin for helping set all this up.<br />
<br />
== Beta 2.642 Nearing Beta For Multiplayer ==<br />
(Released November 30th, 2020)<br />
<br />
* Fix a bug where the Incoming Exo Notifier would show the wrong % when it was sync'd with something<br />
** Thanks to afterthought for reporting<br />
<br />
* The Metal Flow Planning screen works again<br />
** Thanks to Crabby for reporting<br />
<br />
* Scrapping an MDC or GCA now correctly triggers the AIP increase<br />
** Previously if an MDC was about to be killed, you could scrap it to dodge the AIP increase<br />
<br />
* The tooltips for savegames in the save and load menu now includes what players are in the game in question (with that colorized), and also includes what size the savegame is on disk. The former is particularly useful when you're trying to remember which games you were playing with what other players.<br />
** We also shifted how we are finding the last write time for each file, which hits windows security less hard and thus makes opening the load game menu vastly faster when there are a bunch of files on windows in particular. This may also be somewhat faster on linux and OSX, but on windows in particular if you had dozens or hundreds of savegames, it could take a second or two to even open that window.<br />
<br />
* The way that error windows appear has been updated to be a lot more legible, as well as a LOT more dramatic and scary-looking. Wow that's a lot of red!<br />
** This was one of the last parts of the game that was not just in AN old UI style, but in the old UI style from the first prototypes back in 2016. Go figure.<br />
<br />
* There is a secondary error message window now, which is used when you try to load a savegame or quickstart or do something in the lobby or joining a new game and have some sort of error doing those things.<br />
** Those errors tend not to be fatal, and also tend not to repeat infinitely, and so it gives you a simple "ok" button that you can use to close the error and which then clears the history of how many errors have happened this game.<br />
** In recent versions of the game, you could try to load one broken save, get a message saying it's broken, then load a valid save and have a permanent blot on your UI saying that there were something like 2 errors since you started the game. Now that doesn't happen.<br />
<br />
* The metadata for savegames is now loaded asynchronously, except for its file size and last modified date. The actual rest of things that are shown in the tooltip data is loaded very fast, but not on the main thread. This means that the load menu opens even faster, on any OS.<br />
<br />
=== AI Intelligence Improvements ===<br />
<br />
* Fix a bug where fireteams going after MDCs could get hung up on not wanting to attack planets between the MDC and the Hunter. <br />
** Hunter ships required to go after a particular target (like an MDC) are now allowed to explicitly attack planets on the way<br />
*** Thanks to ArnaudB for reporting<br />
<br />
* Tsunami CPAs will now wait a minute or so after launching to gather their forces before they attack. The goal is to make the initial CPA punch a bit stronger; previously they were trickling their forces in piecemeal and not providing as much of an impact as desired.<br />
** It will still look just like the same behaviour to the player once the attack starts, there will just be a bit of a pause between the CPA spawning its ships and then those ships actually hitting your planets.<br />
<br />
=== New PKIDs Approach For Multiplayer ===<br />
<br />
* '''WARNING TO MODDERS!''' We don't suggest you just do a global search and replace for your various places in the code that are now calling methods marked as obsolete.<br />
** As tedious as it is, you should go through those line-by-line and swap them over to the new non-obsolete variant, which will note that it returns null in MP.<br />
** With all of these calls, it's up to you to check to make sure that if the method you just called returns null, you ignore whatever happens next.<br />
** In general, if there's anything that is changing more data about the entity that was just created only-on-the-server-but-null-on-the-client, then have it skip that logic, but do all the rest of the logic. A general return out of the method you are in is not usually the desired approach (but it does vary by situation).<br />
** The faction data will catch up on the client either way, and all of those changes you make to the entity after the null-return-point will be passed over to the client as well. However, if you don't handle the null-return-point, then players will get nullref exceptions in your mod only in multiplayer, which will be frustrating for everybody.<br />
** The one exception is CreateNew_DuringMapgen. You can just search and replace for that with CreateNew_ReturnNullIfMPClient unless you were using it wrong to begin with.<br />
** There may be entire methods now where you want to check if ArcenNetworkAuthority.DesiredStatus == DesiredMultiplayerStatus.Client and just return before it even thinks about making any entities. See things like ReactToPowerLevel() on the AI for examples.<br />
** TLDR: This is a minor pain in the rear right now, and looks a bit tedious to do. But this is far simpler and far less tedious than getting bug reports from MP players that you have to chase down for your mod in the future.<br />
*** If you wind up with questions, then @ chris on the Arcen discord channel.<br />
<br />
* Added a rather complex new ArcenDelayedDeserializationBurst class, which uses a really efficient way to store network message for future deserialization.<br />
** We normally reuse our deserialization buffers, so it's an extra delicate class. As long as nobody ever tries to use this in some new way beyond the way it is currently used, all will be well. The code is filled with dire warnings in the comments.<br />
** The capability that this adds is essentially for us to have slightly time-delayed execution of network data unpacking from the host to clients, if the host is a bit more than 1 sim frame ahead of the client.<br />
<br />
* The MayCreateEntities bool has been marked as obsolete, and is never set now, as all threads (even long-range planning ones) are now considered A-OK for immedidately creating entities as much as players want to.<br />
<br />
* SpawnEntity and SpawnEntityOrReturnNull have both been marked as obsolete (and will block modders from compiling against them), but will still for the moment keep working with existing compiled mods.<br />
** This is how we're going to try from now on to handle when we change the specifications of things that would break mods, where we can. It gives modders a chance to catch up.<br />
** In this case, it now wants you to use the new SpawnEntity_ReturnNullIfMPClient() method.<br />
** The same is true for the various CreateSquad methods, all of which now want you to use CreateNew_ReturnNullIfMPClient.<br />
<br />
* GlobalLastSquadIDSourcePrimaryKeyID no longer exists in savegames.<br />
<br />
* The ability to generate PKIDs for speed groups, fleets, squads, shots, and otherIDs are all now exclusively host abilities.<br />
** If a client tries to call these, it now returns -1 for the client and throws a visible error message on the client.<br />
** A bunch of cases where we were syncing these over to the clients are removed. We no longer care, for the most part.<br />
<br />
* The game now has a new "Fast Blast of Created Objects" that the host sends to clients.<br />
** In these cases, essentially when you go and try to create something that requires a PKID that would be consistent on the clients and the host, the clients just skip doing it, but the host does it and then sends it to the clients asap.<br />
** The host is usually a few hundred ms ahead of the client at minimum, and so if it's on a future frame number from them, then it tells them at which frame to unpack its new data.<br />
*** If the client is closer to the host in time, and the frame gets there late, it still just unpacks it and can sort out minor discrepancies later.<br />
** The idea here is that a LOT more things are just being done on the host, and skipped on the client, and the client is getting the information in small download packages that it inserts into its own sim at the appropriate time.<br />
*** There is some very slight divergence in sync caused by this, but it's pretty darn slight in most cases.<br />
*** The great news is that this uses less network data, and substantially less CPU power, on clients than having wrong IDs assigned does. This lets us just send the correct object once, rather than creating the wrong object, discovering it, requesting a fix, getting the correct object, and deleting the wrong object.<br />
** This is a fundamentally different approach to object creation, and in some ways this has a bit more in common with an MMO architecture, except things are faster and more responsive than your average MMO. But this is now blending a third general model of network code into our existing interesting stew of models. It pairs really well with the other bits.<br />
<br />
* On GameCommands, we now have the ability to specify how many entities of various sorts we plan on creating (or potentially creating), and then the host provides available IDs that will be consistent on the client and the host before the execution happens.<br />
** This is yet ANOTHER approach, but is one of those cases where we take the most efficient networking approach for any given type of data event. That is surprisingly optimal, it turns out.<br />
** The idea is that which networking model is superior is really contextual, so we look at the context and use the best one in any given circumstance. Any errors we make are already handled by the sync code (that's not new), but this cuts down on the number of errors.<br />
<br />
* Added a new "Log Decoded Network 'Fast Blast' Sync Data To Disk" setting to the network section, which does what it says on the tin.<br />
<br />
* The way that shots appear, and the way that shot sound effects are triggered, have both been updated in order to support the new way things function in multiplayer.<br />
** We were looking in particular for silent shots, or shots that did not show things like their AOE effects. Those are all working.<br />
<br />
=== Other Multiplayer Miscellany ===<br />
<br />
* Unrelated to the rest of this, the clients now send their GameCommands completely separately from their "finished a sim frame" messages.<br />
** This lets the client send the GameCommands in a more timely fashion, thus reducing command lag on the clients.<br />
<br />
* Fixed an issue that we don't think anyone hit, but where if you were playing one multiplayer game and moved to another one it could execute some commands from the prior game on a delay.<br />
<br />
* Fixed a wide array of minor glitches and annoyances that would give clients warnings or errors (visible or otherwise) in multiplayer.<br />
<br />
* A lot of classes serialize themselves more clearly, ranging from shots to wormholes to gamecommands and beyond.<br />
<br />
* In the event that the host sends over world data that errors, the client should now wind up back on the main menu.<br />
<br />
* Fixed a number of small serialization issues between multiplayer, including errors when new planets are created. The creation of new planets and their various links between one another are now verified to work properly between the client and host. Aka the Dark Zenith invasion in DLC2 (spoiler alert, though that doesn't tell you much).<br />
** We have NOT yet verified if nomad planets work properly in multiplayer now (displaying properly on clients to match the host), and would appreciate if someone checks that out once this build becomes public.<br />
<br />
== Version 2.638 Why Do We Fall, Master Wayne? ==<br />
(Released November 25th, 2020)<br />
<br />
* strength_multiplier_for_turrets has been 2 since we added this, but that seems to overestimate their power a bit.<br />
** We've adjusted this value to 1.55, per discussion on discord and a suggestion by TechSY730.<br />
<br />
* Added a new strength_multiplier_for_armed_guard_posts, which lets us adjust up the strength of guard posts to be more accurate if it seems to be undervalued.<br />
** We're starting this off at 1.25.<br />
** Thanks to TechSY730 for suggesting.<br />
<br />
* We also added a new strength_multiplier_for_non_combatants, which lets us adjust down the strength of anything that doesn't have any guns.<br />
** Sometimes things without guns still have a lot of health and shields, and that's really not something we want to consider as strongly since it can't hurt you directly.<br />
** This would affect forcefields, any sort of captured buildings, and things like unarmed transports.<br />
** We're starting this at 0.4.<br />
<br />
* A new balance_seconds_after_transport_change_before_can_switch_back has been added, with default value of 3, that prevents players from putting ships into and out of the same transport more frequently than within 3 seconds.<br />
** In multiplayer, we need a small bit of time to refill the list of pooled IDs for upcoming player transports. In reality that only takes a second or two to refill, but potentially less than a quarter second.<br />
** Originally we had thought to have this be an even larger window, like 30 seconds to prevent players from messing with the AI by popping in and out of transports, but there's already a 5 second no-firing time limit that covers that. And folks on discord made their feelings about that change pretty clear (it was not welcome).<br />
<br />
* Home forcefield generators can now be scrapped just like all other FF generators. From back in the pre-fleet days they were not scrappable because at the time you could never then rebuild them. Now you should be able to rebuild them, so you can also scrap them.<br />
** Thanks to Democracy for reporting.<br />
<br />
* Updated AMU<br />
** Now uses all the new Icons for Metal, Energy, Hacking, Science and Strength<br />
** Removed the SimpleStringBuffer as it is now less efficient compared to the ArcenCharacterBuffer and ArcenDoubleCharacterBuffer<br />
** Gave the latter two 35 new functions, most of them adaptions from the SSB or shortcuts from formating inside the AMU Core<br />
** Thanks to NR SirLimbo for adding.<br />
<br />
* Updated Kaizers Marauders<br />
** Tooltips, based on the above logic, are now faster and produce less GC Churn<br />
** Also dynamically rounded the percentages in the outpost description to show up to, but not always 3 decimals<br />
** Removed an extra line inside the Player-Owned Kaizer full descriptions.<br />
** Thanks to NR SirLimbo for adding.<br />
<br />
* When a stack dies and is going to spawn something on death (such as hydra heads as one example), then the new things that are created come out pre-stacked in the same ratios as the original.<br />
** So for instance, if a stack of 3 is vaporized, then a stack of 3 heads is created. If each should create 2 heads on death, then 2 stacks of 3 heads are created.<br />
** This is a lot kinder to the CPU and performance in general during heavy death situations with hydras aand similar.<br />
<br />
* Before you can start hack, the game checks that you have enough hacking points. This check now also counts active hacks.<br />
** The goal is to make it harder for players to wind up with negative hacking points.<br />
*** Thanks to ultamashot and NRSirLimbo for reporting<br />
<br />
* A ship in an exogalactic strikeforce now shows "Exogalactic Strikeforce" instead of its faction name when hovered over<br />
** Previously it was really hard to tell if a unit was in an Exo or not.<br />
<br />
* Rework the way Exogalactic War Unit spawn locations are chosen to prevent the case where the AI was accumulating large numbers of Exogalactic War Units on its homeworld, if they were required to go after factions with other things in the way. <br />
** If the War Unit is against the player, the war unit spawns at the AI homeworld. <br />
** If it is against a non-player faction then if there's a safe path for the war unit to get to the target faction from the AI homeworld, it will spawn at the homeworld. <br />
** If not it tries to find any warp gate with a safe path to the target.<br />
** If it can't find a safe path at all then it will spawn directly on a suitable target. Minimally tested but seems to work<br />
** Only applies to newly spawned Exogalactic War Units<br />
*** Thanks to a number of people for pointing out that Exogalactic War Units could get stuck, most recently zharmad and ArnaudB<br />
<br />
* Since we are not actually using the SquadIDSources, it makes sense to provide older methods that the various code mods like Civilian Industries were looking for. StarKelp is not able to update that this week anyhow, so we made some changes to make sure that his stuff still is compatible with the new version of the game anyhow. So far as we can tell, Civilian Industries seems to work again.<br />
<br />
=== Bugfixes ===<br />
<br />
* Improved the error handling on incoming_damage_modifier to be more clear.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Fixed an exception where any damage modifiers that were hull only would throw an exception when you tried to apply them.<br />
** Thanks to NR SirLimbo for reporting.<br />
<br />
* Fixed an unusual error that was possible to happen in ReinforceSpecificPlanet(). Not sure why this was happening, but there's a vague chance it may have been related to mods. At any rate, it's no longer possible to get the exception.<br />
** Thanks to Isiel for reporting.<br />
<br />
* Fixed an issue where cluster bombs would not spawn more bombs because they were not dying from enemy fire. Now the only reason that sub-bombs won't be created from things like this is from a unit intentionally being scrapped.<br />
** Thanks to Puffin for figuring out what this problem was, and to ArnaudB, Isiel, and Democracy for reporting.<br />
<br />
* Fixed an issue with the name generation for multi-owner factions so that it now properly says the names of the multiple owners. Previously, each party was incorrectly just seeing their own name as the owner. Of course, in these situations it's best of all to give your empire a specific name, but you don't have to.<br />
<br />
* Spire cities should now work if they are on planets owned by other Players<br />
** Reported by NeverZero<br />
<br />
=== Improvements To Error Handling ===<br />
<br />
* Put in a bunch of wrapper methods for various faction methods that are commonly used by mod factions. These wrapper methods let us gracefully catch exceptions from the mods and then disable that part of the modded faction so that the game can continue without you having an endless spiral of exceptions.<br />
** For instance, in this build of the game we have broken both Kaiser's Marauders, the AMU, and Civilian Industries. Rather than having those be absolutely unplayable savegames with infinitely logging errors, it now pops up some errors the first time, then shuts off the brains of those particular factions. So you'll see those factions stop working and just kind of sit around (or use whatever intelligence there is that is coming from the central NPC logic), but the savegame itself won't be a total loss.<br />
** It's still best to stop playing after you have exceptions like these, but it doesn't make you completely dead in the water.<br />
** We also implemented a neat new thing where we are able to detect even caught exceptions inside these methods, so if the mod author is doing their own error handling, we still find out about the error and shut off that faction.<br />
** It's worth noting that this applies to base game and expansion factions just as much as it does to mods, frankly. In general this is pretty handy for letting parts of the game essentially have a stroke and die without turning off the rest of the game or leading to endless errors that cause lag.<br />
<br />
* In the list of factions in the escape menu, if a faction has had any sort of fatal error, it now shows "FATAL ERROR IN FACTION" next to it, with animated red and orange colors going past.<br />
<br />
* Whenever you have an error message popup, it's only showing you the most recent error out of potentially a long series of errors. Now the game has a first line there that is "Errors since start," and that counts up as more errors are logged. It may count up while you're reading an exception, for that matter.<br />
** The idea is to make it so that people don't just see the last error and think that's it.<br />
<br />
* If you have had an exception happen in your game in the last 5-10 seconds, then it now shows the count of errors since the start in the chat sidebar. This way you can't miss the fact that errors have been happening recently, and if you're in the unfortunate situation of having ongoing errors every few seconds then you will see that counting up and be aware of it. Sometimes people would hit "ignore all" and not realize why their disk was still being slammed by errors, and the fact that things were probably not working quite right. Now it will be impossible to miss.<br />
<br />
* Similarly, if any factions that have partially shut down from having errors, it now has a count that just won't go away up in the chat area that says "Factions Shut Down From Fatal Errors: 3" or whatever the number is. This is not so obtrusive that you can't keep playing, but it's obtrusive enough that maybe you'll realize you should stop playing if you care about those factions doing anything.<br />
<br />
=== Failed Experiment: PKID Generation Revisions For MP Client Smoothness ===<br />
<br />
* An older approach that we were going to take with Primary keys, with a new PKID struct and a PKIDGenerator class, has been stripped out. It was going to be too unwieldly to implement, and would have made filesizes and network data a bit larger. We have come up with a better approach since coding that. It was never used, but the plan was to use that to keep multiplayer sync in better shape.<br />
<br />
* We only care about PKIDs for squads in terms of where things are diverging so much, so we've got a new SquadIDSource class.<br />
** The squad creation methods (in the codebase, "squads" are all ships and buildings and units) now mostly require a SquadIDSource to be passed in.<br />
** These sources keep some certain number of "for future use" PKIDs either for the faction or some other scope, and usually for some sort of sub-purpose on a faction.<br />
** These are serialized to disk and across the network, and every sim step have their pools replenished and synced over to other players from the host.<br />
** In the event that a source has run out of IDs to distribute, it has a fallback source which is usually the "failover" pool of IDs on the faction in question.<br />
*** This first level of failover means that it is more likely to not have collisions when trying to find something to fill in for a source that was too thinly populated at the time of being called. <br />
**** A single faction is more likely to mostly be synchronous relative to itself in terms of actions, so desyncs between clients are less likely.<br />
**** But additionally, even if it is a desync, it winds up limiting the scope of the cascade of desyncs to mostly be limited to that one faction rather than affecting many factions all at once.<br />
** In the event that the failover has ALSO run out of IDs to distribute, then it goes back to the main central ID generator that has always been used up until now. <br />
*** This is almost certainly going to cause a minor desync, or several minor ones, in multiplayer. However, these are going to be corrected by the same process that currently corrects multiplayer and makes it work as smoothly as it does.<br />
*** Right now, MP clients are seeing things like every new ship that is spawned getting duplicated and then recreated, or just shifting spots. This is annoying in terms of how constant it is, but overall even with it having a desync EVERY time something is created, it's not that in-your-face that you can't play just fine.<br />
*** So at any rate, there are multiple levels of prevention aimed at stopping this in the first place, but when it does happen it's not the end of the world and the game just recovers and keeps going like it has in all the MP versions prior to now.<br />
** The goal with all of this is to make things more smooth for clients, particularly when they are building ships from a factory or placing turrets and similar directly. And a secondary goal is to reduce some extra sync fix network traffic. But in the grand scheme, long-term sync is already assured by all the other characteristics of our multiplayer engine.<br />
<br />
* To support the new SquadIDSource class, there are a wide variety of sources that are placed throughout the codebase for various purposes.<br />
** As noted, all of the CreateSquad() and SpawnSquad() methods now require a SquadIDSource to be passed in, but if you don't then they will work out how best to get an ID to work around that lack.<br />
** However, for modders and faction coders, the way to update your code is relatively straightforward.<br />
*** If you are doing something in the "long range planning" that creates a squad directly, just know that you're already immediately creating a desync, since that only runs on the host.<br />
**** The game will recover from this automatically, but it will be wrong on the client with these new units you just created for 1-5 seconds, and may be wrong with some other units created around the same time. So ideally don't do that.<br />
*** If you are creating squads directly in the "stage 2 or 3" methods, then you will now want to almost always use CreateNew_ForFactionBackgroundGeneration().<br />
**** That method gets its own SquadIDSource inside itself, and there are loads of queued IDs in that source, so your risk of causing any desyncs at all with this is remarkably low. And if any do happen, it's probably not going to bleed over to something the player notices very easily.<br />
**** There is also a version on faction that is SpawnNewUnit_ForFactionBackgroundGeneration() that takes the place of what was SpawnNewUnit() before.<br />
*** If you are creating squads during part of mapgen, such as initial seeding logic for instance, then you should use the CreateNew_DuringMapgen() method.<br />
**** This method entirely bypasses the SquadIDSource class, and just generates IDs directly. Mapgen only happens on the host, prior to syncing to everyone else, so there's no need for those sort of ID queues there.<br />
**** If you mess up and have a method that uses CreateNew_DuringMapgen() both during mapgen and after mapgen, then you've probably introduced a minor desync with whatever is created, but again it's something the game will auto-correct within 1-5 seconds. The good news is that it should not really affect any other units than the ones you used this way.<br />
**** Conversely, if you mess up and use CreateNew_ForFactionBackgroundGeneration() or similar during mapgen, then it will just do things as normal with not even any slight ill effects.<br />
<br />
* In single player and multiplayer, you can now see the ID stores and the statistics about the ID usage in the memory pooling section of the escape menu.<br />
** All savegames are a bit bigger now, maybe about 100kb or so. It's a fairly small addition in general, but in one example save we have an extra 65 thousand IDs pre-generated for use in specific scenarios. We can see even in a single-player game if it's ever hitting the central stores, etc.<br />
** You might wonder why we are also using this in single-player, but in general this does not cause a performance hit, and we have always tended to do everything the same between single and multiplayer even if that's not strictly required, so that we could maintain as few differences and as consistent of performance as possible.<br />
<br />
* The PKID Sources are now fully synced over the network in multiplayer, and they are centrally stored for reuse and assignment within savegame and across the network.<br />
<br />
==== The Actual Result, With Intriguing Data ====<br />
<br />
* For now, after all the immense amount of work to get SquadIDSources working (and the two days after it to figure out the one-line networking error --which wound up having us greatly expand a bunch of debugging tools for multiplayer in general at least), we're currently choosing not to bother filling the SquadIDSource objects at all.<br />
** With this in place, they wind up adding an incredibly minor amount of overhead, but no actual functionality.<br />
** The fundamental premise of these is to try to reduce collisions of PKIDs between the clients and the host by having them queued up and ready to go, but that... really doesn't seem to happen. There are too many things in motion constantly, perhaps? It's honestly kind of hard to say exactly why this doesn't work, at the moment.<br />
*** The most obvious answer is that the timing is too tight, but the Sources being filled with a certain number of values in advance really should be working around that. So that would seem to indicate that maybe there's some secondary problem, like the order of the queues getting messed up during sync, or something like that.<br />
*** A more subtle answer, which is probably the correct one, is that we have two different timescales of network communications. On the one hand, we have the network sync info, which gets applied immediately. On the other, we have GameCommands, which get applied 100-200ms later. It's seeming likely that the sync of the queues is removing key entries from the client before the client can actually make use of them, since the client may be on a 100ish ms lag from the host. This could be solved in a variety of ways, but would need more testing.<br />
*** However, seeing these in practice, the savegame sizes go up dramatically, and there is a notable slowdown in performance on the clients, which we didn't really expect. Part of it just has to do with how many factions can be in the game, particularly factions that are minor-use or only have a few units in them (tamed macrophage, etc, which may not even be active). This whole thing adds a definite per-faction extra cost in terms of data usage, and running out predictions for a long games is fine... but doesn't really feel great. What's notable is that turning this off feels like a breath of fresh air in terms of performance immediately after, so that says something right there about how advisable this is. Is this worth fixing?<br />
*** Deciding if this is worth fixing or not is not something we want to decide late at night after three very frustrating days of staring at this and related problems, so for now we're just leaving it empty and pushing out this release so that folks can have the many many other fixes that we put in this build. This build has been delayed long enough by this blasted feature.<br />
*** If this particular approach for PKIDs isn't used, then what do we do? Well, there are a variety of options.<br />
**** On the one hand, we could do nothing. The sync code already corrects divergences, and is doing so with a minimum of bandwidth and no extra savegame file size, etc. However, it does cause minor jitter on new ships on the clients, which we don't like. So that' not our first choice. It seems like a lot of people don't notice this much, but at the very least for directly-placed human ships we can do better.<br />
**** So, on that note, we can adjust the way that units are created. Right now, there are many places where the simulation creates a unit, and it tries to do that in lockstep on the clients and the host. This... may simply be not the way to go. We've contemplated this before, for a long time in fact. It may be a lot more tenable to make it so that the "create unit" code actually only runs on the host, and then that data gets synced over to the clients asap.<br />
***** Originally this was something we had discarded because it would require a huge refactoring of all of the code for all of the external factions and mods. Not just a search-and-replace sort of change, but a really deep dive shift in the creation of all units. That is highly undesirable for many reasons. One of the reasons is that it would negatively affect the feel of the game on the host, and in single-player, because in theory we would be creating new units via GameCommand, which is something that happens on a delay.<br />
***** The thing is, creating units only on the host doesn't mean it has to happen in a GameCommand. Actually one of the things that this entire code branch with the sources has demonstrated is how VERY fast we are able to get information over to the client. Normally we want to have new things get created and sent to clients via GameCommands in an orderly fashion as part of the main sim loop... but the thing is, the sync code is really freaking good. In almost all cases, if the ships actually appear 100-200ms early on clients, that matters... why? In reality, it doesn't seem like it matters much at all. If that causes a minor desync, it's still far more minor than the desync that we're getting right now with units having wildly wrong PKIDS. Likely their position or other stats would be slightly off on the client, and that is REALLY trivial to fix within seconds, and happens automatically already.<br />
***** Overall, even though the PKID Sources approach was a complete dead end (probably) in a direct sense, this does provide some ways that we could theoretically reduce sync errors when it comes to even things like shots, which we've been concerned about for a while with IncomingShots being off since we don't consider shots worthy of sync (they last too short a time). But if we used the back channel data to generate shots only on the host, and had those synced to the client only once, on creation, that might be very interesting indeed. One of the possibilities with shots and even units is that we add a new SimFrameStartedExisting or something to that effect, and if that's in the future then the client just keeps them as invisible and not part of the client sim just yet. That would allow the host to give early "hints" to clients, who then have data ready to go as soon as the appropriate sim frame rolls around. Heck -- the clients don't even have to have fancy new logic for holding those units in abeyance. They could simply keep the data in its packed form until the appropriate frame. This would be very lightweight.<br />
***** Ironically, this even paints some ways in which the "only create ships from gamecommands" approach of the "long term planning" code that is host-only is something that we might need to do away with. That would make things a bit simpler on modders if we go that way, and it would even allow us to in theory shift some of the per-faction processing onto non-sim-blocking threads. The only reason that those need to be sim-blocking right now is in order to maintain sync in multiplayer. But the thing is, we never expected for the general baseline sync to be this good... or for there to be such an effective faster-than-sim backchannel for the host to shuffle data over to the client. Despite this being our third coded multiplayer model over the span of 7ish released multiplayer games, this one really takes the cake for being the most advanced, and it has revealed some interesting new avenues to consider.<br />
** So the bottom line is, at first this really felt like a huge waste of time, on top of being a monumental disappointment. After taking a break for an hour or so and putting my kids to bed and thinking about it some more... this is actually pretty interesting data, and suggests that we may be able to be even more "fast and loose" with things than I ever expected, and thus really take the potential worry away from modders and faction designers, lower the network load, keep the savegame sizes small, and still improve sync. Having the host be fully authoritative over PKIDs was not something that seemed like it would be possible without introducing input lag on both the client and the host... but we already have the most minute (100-200ms) of timing lags between the client and the host, so that actually opens up a ton of options.<br />
*** Crazy sidebar? One of the things that particularly bugs me about playing multiplayer right now, as the client, is the input lag. There's a lot of strictness that we have going on with trying to keep the client close to the host in timing, and making sure that GameCommands are executed at just the correct timestamps in the correct order, etc. But what if... we didn't care? Why not let the client instantly ask the host for things, and the host instantly execute them, and tell the client to also do the same? Sure it would introduce some new timing inconsistencies, but... so what? <br />
*** Also crazy, still sidebar? This is even a way to potentially get around dropped packets and other situations with high latency or high ping. Let the host just get ahead, who cares, have the client blunder on without permission and catch up with what the host wants in a few hundred ms after the network blockage has cleared. This pulls the game further and further away from even pretending to be a lockstep multiplayer model, but to be frank, the performance that we're seeing, that we're able to get, is what makes that a feasible thing.<br />
*** Want to stay in crazy sidebars? Things like FInt, our fixed-integer math struct and its related code, could largely be removed from the frequent sim calculations. There are some MUCH faster floating-point math functions, several of which use SIMD, that we use right now only for non-sim purposes. But it's already clear that the amount of drift we see in a few seconds is next to nil, and we're syncing things so frequently that any real drift that mattered would be correct within seconds, and typically would be smoothed out by the very awesome lerping that the vis layer does to keep things smooth in general.<br />
** So... yeah. This experiment was a huge disaster, on the surface. On the other hand, it took me through every piece of the code that creates units at the moment, and gave me an enormous amount of data on how some of the data is able to be passed around faster than game commands. I will need to weigh my options carefully, and probably focus on gradual improvements over time since the baseline is already pretty good right now. But making things more host-driven ought to be one easy quick improvement for sometime very soon.<br />
<br />
=== More Multiplayer Technical Work ===<br />
<br />
* Removed some debug lines on the network clients about wrong key syncs (which always showed as zero because we wound up never deciding to check for that).<br />
** The adaptive system for sync that has continued to evolve out of seeing real data basically made that irrelevant.<br />
<br />
* The new sync of the PKID sources is now split out into its own separate sync cycle (for time slicing purposes mainly), separate from the faction sync.<br />
** Also separated out the "external data" of factions rather than having that be in the "Faction basics" sync.<br />
<br />
* The "Show Network Sync Details In Escape Menu" option in networking has been moved to the top of the other networking features, as it is the most helpful one by far.<br />
** It has also been given the prefix "Helpful: ".<br />
<br />
* Added another new setting to the network section, as well: Log Decoded Network Faction Basics Sync Data To Disk<br />
** Description: Same as the 'Log All Decoded Network Sync Data To Disk' setting, but only writes data for the faction basics that are periodically synced. If something gets awry with that data, this is a way to figure out why there's a discrepancy.<br />
<br />
* Multiplayer sync messages are now numbered by the host, and the clients read the number out when they get the message. This way, if a host sends out a sync message prior to a client joining, or a client misses a message or whatever else happens, the logs will still match up on both ends and are something we can compare.<br />
** We were running into the baffling situation where the logs did not match in ways that should be impossible, but this was because the clients and host were being allowed to number their own messages independently.<br />
<br />
* ArcenExternalData-RowIndexNonSim is no longer logged in general, because it is specifically something that is non-sim and thus will be different on the clients and the host. The matching isn't done based on it, so it's not a part of sync that matters.<br />
<br />
* We slightly reduced the maximum fragment size that we're willing to send, from 512kb to 500kb, still minus 100 bytes in both cases.<br />
** We had one report of a user on Steam getting an exception when trying to connect with the prior limit and the new limit does not make much practical difference to anyone else.<br />
** Specifically it complained about 524,199 bytes, when 512kb is actually 524,288 bytes; with the new limit of 500kb, that is coincidentally 512,000 bytes, which is potentially the actual accidental number of casual-math bytes that Valve actually is limiting to. We thought we remembered seeing in their code that it was 512 * 1024 that they defined their limiter as, but nonetheless that was only in a header file and so the internals might be defined differently.<br />
** Thanks to NRSirLimbo and CRZgatecrusher for reporting.<br />
<br />
* Fragmented error messages now give more informative error messages when something is off.<br />
** It's now vastly more common for savegames to be over the limit, since we now have all the pre-caching of PKIDs. One small 275kb savegame changes to 527kb in the new version.<br />
** Good thing we spent so much time on data efficiency earlier this year, because we really require an abundance of extra data to make sure PKIDs come out nicely between the client and the host.<br />
<br />
* Completely re-wrote our custom packet fragmentation-and-reassembly code. It's more efficient on the client now in general, and works properly.<br />
** We've tested this with a maximum allowance of 50kb so that it fragments a variety of messages rather than just the initial savegame. It was all working well, now, so we've gone back to 500kb.<br />
** It turns out that, previously, we had an accidental game of Russian Roulette going. Depending on what bit the last of the fragment header ended on in its final byte, it might automatically advance to the next byte on its own. That gave it a 1 in 8 chance of dying on a fragment by skipping one random byte of data. That's no longer possible, but took us forever to track down.<br />
<br />
* ArcenSerializationTester, which was used as a single static-style class, has been removed.<br />
** Because of its static-class nature, it was not threadsafe, and we could not guarantee that we were not having mixed serializations or deserializations in one batch.<br />
** As part of this, we have replaced it with a new ArcenSerializationLogger class, which lives on actual serialization and deserialization buffers and thus can't be confused across threads.<br />
*** As part of THAT, we are also now making it always write directly to disk, rather than buffering in memory sometimes. So the settings option "Write Savegame Serialization Logs In Realtime" has been removed, as it is now always true.<br />
** It is worth noting that this method of logging is somewhat less performant, and definitely wastes some RAM, but that's not of relevance to our purposes. If you have this logging turned on, you're already in a debug mode that is going to have performance that suffers by its very nature. What we prize most in that situation is accuracy.<br />
** This removes any doubt of any logs getting scrambled by simultaneous writes, or by overlapping requests to log, or things of that nature.<br />
*** As a side effect, if you enable several kinds of overlapping debugging at once, it is possible to get an exception now, but that's better than before where it would just scramble your log happily.<br />
<br />
* Added a new setting to the network section: Log All Decoded Network Data To Disk<br />
** Will massively slow the game down, but dumps ALL messages as they are encored or decoded to the disk in files inside the PlayerData/NetworkSentDecodedData and PlayerData/NetworkReceivedDecodedData folders. This covers absolutely all data, and includes message headers that other forms of decoded-data logging do not. With this logging enabled on both the client and host, you can compare the output and see what serialization problems are happening, if there are any.<br />
** This is a last resort sort of debug option! Since ALL data is being actively decoded as it is written, it is far larger (and in plain text) than the actual data being sent across the network. A typical ratio might be 40MB of decoded data for 500kb of actual network traffic. You can have a few GB of data on your disk after just part of a minute of letting the game run in this fashion.<br />
** Warning: do not use with 'Log All Decoded Network Sync Data To Disk' or any of its sub-options also turned on, or you'll get errors.<br />
<br />
* The game now sends a unique 64bit messageID with every message from the sender, in sequential order of send, so that the sender and receiver are able to compare notes.<br />
** Full support for understanding the serialization of message headers is also now in place.<br />
<br />
* The game is now able to do some temporary buffering of serialization data to write to disk, prior to knowing what the name of the file should be, and then come in later after it has done a bit of deserialization and knows what to name its new message.<br />
<br />
* These new abilities combine to give some really rock-solid and overkill-style logging abilities that let us find bugs that otherwise escape us in the networking code.<br />
<br />
* After about two days of wanting to tear his eyeballs out trying to find an incomprehensible error, Chris found the single-line typo that he was missing.<br />
** The PKID syncs work fine on clients now when it comes to things like building structures directly, but for most other purposes there are just as many catastrophic mismatches as ever. Sigh. This is going to take some doing.<br />
<br />
== Version 2.637 Threatfleet Conversion, Chat, And Clickable Planets ==<br />
(Released November 21st, 2020)<br />
<br />
* The game now tracks a new BecameThreatfleetAtGameSecond on each entity. When it is detected than an AI Sentinels ship is in Threat status (meaning it would show up as Threatfleet), it now logs the current game second so that it remembers how long it has been threat.<br />
<br />
* Added a new seconds_threat_exists_as_threat_before_joining_hunter_fleet on AI difficulty, which is currently set to 2x seconds_threat_waits_before_joining_hunter_fleet for all AI difficulties.<br />
** This sets a new and absolute timer on how long threat can be threatfleet for the AI Sentinels before getting transfer orders to the Hunter Fleet.<br />
** Previously, based on the other timer, if the AI Sentinels threatfleet is engaged in whatever activities, even if that activity is indecision, then it would never switch to the hunter side.<br />
** This makes it impossible for ultra-long-term threatfleet to remain in the galaxy, unless it is pointed at a non-human faction, or it is of a specific type that can't convert (usurper, overlord phase 2, drones, etc).<br />
** Overall in some edge case savegames, this makes it so that suddenly a bunch of idle threatfleet that was too stupid to figure out your particular empire now gets converted to the far-smarter hunter faction and joins teams dismantling you.<br />
** Thanks to TechSY730, Metrekec, ArnaudB, and Crabby for reporting.<br />
<br />
* Previously, it was up to the host and the clients individually to tell when the game was won or lost.<br />
** Sometimes there is a tiny bit of a disconnect between an event happening on the client and the host, however, and the client has a part of a second where it might think that you've won. We're being vague here to avoid spoilers, but it's a pretty common result that would happen at the end of each game.<br />
** At any rate, now the multiplayer host is exclusively in charge of saying when the game has been won or lost, since it never has any missing data even for a part of a second.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Made a number of changes to the in-game chat textbox to prevent it from capturing your input even after it was closed, thus leading to mysterious sends of extra keys as well as your keybindings in general not working while the capture was in place.<br />
** Thanks to StarKelp, Puffin, Democracy, and Badger for reporting.<br />
<br />
* Also wound up re-plumbing the entire textbox input pipeline, because there were a number of cases of strange and annoying lag that could happen with them. So far all the ones we've tested are working great now and are more responsive. But please do let us know if there's any that are funky for you.<br />
** This could in some cases lead to race-condition-like behaviors, and repeat sends of messages.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Fixed issues where pressing the escape key while in a chat textbox would send the chat rather than erasing it. This is because of our use of OnEnterOrReturnPressed(), which apparently also fires on escape being pressed. So now we have left notes in the code to that effect, and use a different method of detecting that enter is pressed to send chats.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
* Should finally have fixed the super annoying bug where sometimes a planet on the galaxy map is un-clickable. We did this by making sure that the collider box for the planets is now way taller than anything else, and so things like the links between planets can't accidentally override them.<br />
** On the off chance that somehow the collider was actually being turned off for the planet icon, we actually are now always making sure that is on every frame, too.<br />
** If you were seeing some sort of other tooltip for something but unable to click the planet, and you see the problem again, please let us know what the tooltip is for. If you were seeing no tooltip at all, then that was probably the collider being disabled in some fashion. We do turn off the colliders for icons that are supposed to be off, but that should never affect planets. If it was affecting a planet icon previously, that should no longer affect a planet icon.<br />
** Thanks to Badger, TechSY730, GreatYng, CRCGamer, RedPine, denko, crawlers, Isiel, Cyborg, Asteroid, Kizor, Strategic Sage, and probably others for reporting.<br />
<br />
== Version 2.636 Text Hotfixes ==<br />
(Released November 21st, 2020)<br />
<br />
* Shots now visually scale up at 6x the rate they previously did when you are zooming way out from a battle. This should keep them visible in farther-off battles, while not being so large when closer in.<br />
** They also now only start scaling up after a distance from the camera of 150, rather than 50, and their scale factor subtracts off the original 150 so that there is not a sudden jump in size when you cross that distance threshold.<br />
** Thanks to Badger for suggesting that these be scaled up better.<br />
<br />
* Fixed a bug in the prior build with how integers and chars were being written using the revised ArcenDoubleCharacterBuffer. It essentially either made numbers stay stale, or be outright invisible, in a wide variety of situations. Other times they looked just fine, but it was dependent on exactly how the calling code worked. From what we can tell, all instances of this are now fixed.<br />
** Thanks to Wuffell, ArnaudB, Daniexpert, TechSY730, Smaug, and Crabby for reporting.<br />
<br />
* Fixed one other issue with the revised ArcenDoubleCharacterBuffer, where if the next string from the buffer was SUPPOSED to be blank, it would just return its most recent string instead. So messages that were popping up various places but then should disappear when no longer relevant could not do so. They could be replaced by a different message, but could not actually just fade to nothing.<br />
** Thanks to Wuffell, ArnaudB, Daniexpert, TechSY730, Smaug, and Crabby for reporting.<br />
<br />
* If an exception happens in FromServerToClient_PeriodicPlanetFactionSyncDataThatJustOverrides, we should now get far more useful error messages now.<br />
** In this method and in a variety of other network sync methods, it now also checks to see if the galaxy is null, and returns early if that is true. This basically prevents errors from stray network syncs that are trying to be processed after the game is being disconnected.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
== Version 2.635 AOE Visibility ==<br />
(Released November 20th, 2020)<br />
<br />
* Some improvements for frigate roll colouring in games created on this patch<br />
** Thanks to Daniexpert for suggesting<br />
<br />
* Fix a bug where Discoverable factions weren't appearing in the Edit Factions screen<br />
<br />
* Some minor UI improvements to the Active Metal Flows screen and the Brownout Notification<br />
<br />
* The descriptions for the AI Reserves unique units now mention they are used to combat player Deepstrikes<br />
<br />
* Fixed a couple of exceptions that could happen if you were viewing the tooltip for an ship or structure right as you exited the game. There were probably a few other cases that could also cause this.<br />
** Thanks to Corpserule for reporting.<br />
<br />
* Majorly reworked how the "time do die now" code paths work for ships and units in general, so that we can more accurately tell them when they should explode or when they should not explode.<br />
** This solves the problems of ships exploding when they are removing one to add itself to a stack, as well as the problem of ships on MP clients exploding as they move to their proper position after a sync error (if the PKID itself was off).<br />
** It is likely that there may be some bugs resulting from this, but fingers crossed nothing too severe after we fix the initial raft of those issues.<br />
<br />
* The settings for screen edge panning have been moved higher in their respective camera controls sections, and have been renamed slightly to make it clear that it's only for the single camera type, not both cameras.<br />
<br />
* Fixed an issue (that was probably not new) where when you had the camera low enough that gimbal icons for ships were not showing, those gimbal icons would still show their explosion animation when the ships under them died. Now you just properly see the explosion animation of the ship itself.<br />
<br />
* Fixed some minor bugs that may or may not have been present previously with srapping units not always showing them exploding as they do.<br />
<br />
* The game will now complain if it can't find various materials and such that are used for things like under construction status, etc. At the moment, nothing complains.<br />
<br />
* Fixed a very small parser error that was causing AOE effects to not show up at all, ever. This was introduced a bit ago when we improved the xml parser for modders.<br />
<br />
* When Autobombs blow up, they now have a flak-style effect that appears around them.<br />
** Same for all of the minefields.<br />
<br />
* Added a new xml flag, is_okay_with_null_aoe_effect_for_aoe_attack, which is used for the ExplosiveInvisible shot type, aka for Crusher turrets and weapons.<br />
** These are meant to be invisible AOE damage that crushes stuff near them, and so we don't want the (new) "usual" error of "hey there's a missing AOE visual effect when you are doing an AOE attack" to happen.<br />
** Actually, we wound up suppressing the error, because more things were hitting it than expected and it's not worth it.<br />
<br />
* The flak effects now appear again properly, we can now verify. This being with grenade launchers most notably. They're on the small side, but that's somewhat by design so they are not overwhelming the battlefield.<br />
** The tesla effects are also back, but again more thin and more reasonably sized. We may need to look into scale on these some in the future at some point.<br />
** For the flak effects, they do seem to be strangely crunched down on themselves compared to what we were seeing in our videos, but we'll have to investigate that at some point in the future.<br />
** Thanks to TechSY730, Badger, Isiel, Puffin, and Corpserule for reporting.<br />
<br />
* Fixed a variety of sync exceptions for multiplayer that would cause duplication of various things on ships:<br />
** The ships granted if they are hackable, etc.<br />
** The amount of damage dealt to ships of various death-types.<br />
** Various data relating to AI reinforcement points (guard posts, etc). This was not endlessly duplicating, but was causing some funkiness.<br />
** The incoming shots.<br />
** Various things with forcefields protecting a ship.<br />
** Various bits with where an AI ship thinks it is guarding something.<br />
** Any techs that were granted by hacking a ship.<br />
** This should handle all of the cases that people have reported, plus some things that were not visible to people directly. Please do let us know if you see more of this!<br />
** Thanks to Puffin, Arides, Daniexpert, jrad, SilverLight, and others for reporting.<br />
<br />
=== More Performance Improvements ===<br />
<br />
* A new version of our internal ArcenCharacterBuffer has been added, which now wrappers a StringBuilder and uses many of the benefits that has been added to that class over the years. The performance of adds and updates should be a couple of orders of magnitude better than what we've had up until now, making large interface elements more responsive.<br />
** Though in fairness, we don't use too many ArcenCharacterBuffers, it's mostly another class which will also be updated.<br />
** Thanks to NR SirLimbo for benchmarking all this and figuring out where there were some major slowdowns with this.<br />
<br />
* A much more substantial performance boost has been achieved by replacing ArcenDoubleCharacterBuffer's internals with a new approach that uses a mix of StringBuilder and our own form of logging of "WrittenValues."<br />
** This makes really long text displays that are continually updated much faster (before they would take you down by 10-20 fps on a fast machine just for viewing them), and that includes really large tooltips.<br />
** This also seems to make the game load a bit faster, and also in general makes the UI generate faster all over the place. It seems to be around an 8-10 fps bump on a very fast dev machine. Slower CPUs should get more benefit.<br />
** On the escape menu, under the memory pooling section, there is now a "Texts saved" versus "texts new." In under 1 minute of just sitting there and moving around a bit, we wind up with values of around 500 new, and 500,000 saved. That's.. substantial.<br />
** Based on testing by NR SirLimbo, all use cases of this are faster, but in general the average improvement in speed is using 98% less processing power to draw text than we used to (and the processing power was nontrivial). The load time of the game itself has also improved by at least 2 seconds for most of the faster machines, and maybe more for slower ones.<br />
** Thanks to NR SirLimbo for sparking this line of inquiry.<br />
<br />
=== Visual Improvements ===<br />
<br />
* On February 4th, 2020, we had an accidental regression that caused the "ship placement" material, and the under-construction and under-construction-stalled materials to all lose their shaders and some of their textures. So when we tried to draw units with these visual effects on them in the game, they would just be invisible (icon aside).<br />
** This was during a larger purge of some unused shaders and textures, and had this as an unfortunate casualty. We've now restored those items, and things from those areas should "just work" again in the next version.<br />
** Thanks to a lot of folks for pointing out that this had gone missing, including RabidSanity and Mckloshiv.<br />
<br />
* Arcen "Death Chain Effects" have long been used for things like flak hits and tesla attacks. However, they were entirely scripted and robotic, before. The only difference between one playback and the next was the rotation of the entire effect.<br />
** We've now added a tremendous amount of randomization in how these play out, including to the position and scale of their sub-components, how fast they move through their animation per explosive, and things of that nature.<br />
** The end result is that we're now able to make a single death chain effect look a bit different every time it plays, for almost no extra processing power, and so the entire battlefield will look way more alive and unique when these things are happening in large numbers.<br />
<br />
* The shader that we use for our "death effects" for AOE damage, most notably flak explosions and lightning explosions, has been rewritten to use a custom lighting path rather than using surface lighting.<br />
** When we redid our lighting pipeline earlier this year, it unintentionally made all of our death effects of this sort look TERRIBLE. <br />
*** Essentially, they were showing up for a bit before visually appearing, in kind of a ghostly form, and they were also then showing up a lot more white than they should have been. This was them interacting with the HDRI reflection cubemaps that are now in the scene.<br />
** The new version of the shader looks better than the old one ever did even pre-lighting-update, and no longer has any of the above issues.<br />
<br />
* The flak explosions have been completely reworked to the point that they are almost unrecognizable. <br />
** All we've done is adjust the shaders and the randomization of the chain effect, but this went from an effect that made us cringe to one that we'd love to see in massive quantiles taking out our foes.<br />
<br />
* Plasma AOE explosions are far simpler than the flak explosions, since they only have one main body of the explosion, but that's no reason for them not to look cool.<br />
** We've introduced some new variance into this effect, and in general made it look better, so that now it has a distinct "rush and pop and slowly fade into wisps" feel to it. With the speed and details being randomized, this definitely brings it to the next level.<br />
<br />
* The tesla AOE effects, both the "guardian" level and the "regular" ones, both look vastly better now and way more like lightning.<br />
** We made a video showing off all the new effects in the editor! https://www.youtube.com/watch?v=mhJjPabV3gM<br />
<br />
* A new "Victory" fire text has been created, for purposes of being used like the "you have lost" text that can happen when you lose.<br />
<br />
* When you lose the game, it once again shows the "You have lost, humanity has perished" message in big burning letters.<br />
** That lasts for 7 seconds, and then immediately after that you go to the loss screen. This makes it so that the transition to the loss screen is not so abrupt. Plus people liked the text.<br />
<br />
* When you win the game, it now says "VICTORY" in giant fiery letters, rather like the "You have lost" for when you lose.<br />
** This one waits only 4 seconds, and then transitions to the normal victory screen. This again makes the transition a bit less abrupt.<br />
<br />
== Version 2.634 Multiplayer Solidification ==<br />
(Released November 18th, 2020)<br />
<br />
* A new planet naming scheme, Oddball, has been added to the game:<br />
** Aims to give a sense of history. One heavy with warfare and bored scout captains. Created by Kizor. Thanks to Loweko, R. Jean Mathieu, Vornicus, McMartin, Reiver, Quasispace, Derakon, Kyoshyu, and the anonymous.<br />
<br />
* Several updates to journal entries for extra lore details.<br />
** Thanks to Puffin for writing these!<br />
<br />
* The sabotage hack, when there are multiple viable targets on one planet, now includes the text:<br />
** Whichever of these is closest to the hacking unit will be the one hacked, so park your hacker right near the target you intend.<br />
** Thanks to Daniexpert for suggesting.<br />
<br />
=== MP Performance Boost ===<br />
<br />
* Previously we had a rate limiter in place for only checking if background work threads were done if it had been at least 50ms of time since the last check. This is not a super expensive check in the grand scheme, and we'd rather react to these being done as fast as possible in order to avoid small timing discrepancies causing larger delays in sim cycles kicking off or moving to the next frame. So for now we've just entirely taken the limiter off, which should have only positive effects from what we can tell. The limiter was originally put in place out of an abundance of caution, when we were not sure how slow it was to call ThreadState on threads.<br />
** Update: apparently this actually majorly cuts down on multiplayer lag and small jitters. This tiny bits of timing really add up when you have to wait on the other computers in particular. What a lucky find! This would have taken us ages to figure out if we'd actually been looking for it, but instead we found it while fixing the flickery dropdowns.<br />
<br />
=== Bugfixes ===<br />
<br />
* When a client is getting sync correction data from a host about entities, there were several cases where it could detect some invalid data, and it would then throw a visible error... but it would also just keep trying to process this now-known-bad data, and thus run into further problems.<br />
** Now it actually stops processing all of the sync fix data from that batch, and logs warnings into the log silently. This way we can go back and find them if need be, and certainly if your log is filling up with these that would be bad. But these will not affect the running of the game (just how rapidly sync correction happens for this specific batch of units), so they are starting their lines with "Not fatal - just a warning" to be extra clear on that.<br />
** There were various errors that would show up after these, previously, that were simply a matter of "hey, bad data was sent, but we tried to parse it anyway, and of course that went about as well as you could expect."<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* On the host in multiplayer, it now does a last-minute check to see if it's about to send the sort of mangled data for a ship that would cause the client to have to do the sort of toss-out of the entire batch that the clients were doing in the most recent fix. If it finds that it is, then it should now just skip that unit and leave it for a future sync pass.<br />
** At this stage, we can assume that maybe the unit JUST died on the host, and so within 2-4 seconds the client and the host should get synced up properly regarding it. But in an abundance of caution, there's always the chance that actually this unit is still alive, but just was changing planets or something, so let's not tell the client to delete it just yet.<br />
** This sort of scenario should be an edge case, but the idea here is that we make it less likely than the client would have to throw out an entire batch of divergence data, and instead just the one problematic ship will get re-evaluated next cycle and we don't even need any bad log messages about it, etc.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Fixed a minor bug in the macrophage, which nobody has ever even hit, where if the king was not found it could wind up having some pathing errors unless you had debug flags on.<br />
<br />
* Fixed a really rare bug with the Zenith Trader where, two seconds into the game, it was theoretically possible for multiplayer clients to get a nullref exception when the trader was trying to spawn. No one actually hit this yet.<br />
<br />
* In multiplayer, on the client, if findHumanKing() cannot find a result, it no longer throws any form of error (they were silent errors in the log, before).<br />
** Essentially, sync data must be slightly off, and that is fine and something that we should just ignore. The host will take care of giving proper orders to ships, and the client will find out about that soon enough and have all its data corrected anyhow.<br />
** Same logic on findAIKing().<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Some of the data for how things that use internal build points (for things like viral shredders in particular) was being set up on the fleet memberships, and cached there as well.<br />
** Now it sets it up once only, at game start, in ComputeBalanceStats_OneTimeOnly(). This is more efficient, and also gives us errors on load if our xml is wrong, and also fixes a compatibility problem.<br />
*** There was previously a bug in multiplayer where viral shredders would lead to endless exceptions on the client because it was missing the extra cached data on the fleetmem, ouch.<br />
** As an additional bonus, we are no longer storing this data on fleet memberships in general, which means we no longer have to serialize and deserialize that.<br />
*** The fact that we WERE serializing it was making the question of the exceptions in multiplayer even more confusing, but at any rate now some sync data and all savegames will be a tiny bit smaller.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* MP clients in general will no longer throw any exceptions related to things with internal build points on their fleetmems. If something is off, it will just let the host take care of that and inform them within a few seconds.<br />
** However, the error will still happen on the host if something is messed up, but it will be more informative and not block the rest of the execution of this fleetmem per-second cycle.<br />
** And based on the fix above, this should now just work properly in general on clients, but we prefer an abundance of caution.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Previously, in multiplayer if there was a reroll hack that was done, it would give a different result on the client and the host.<br />
** That has been corrected by making it so that on the host it now calls FlagAsNeedingForcedFullSyncToClientsJustInCaseIfInMultiplayerAndWeAreHost() on completion of the hack, which is the general standard that we should be aiming for with this sort of information in the future.<br />
** This applies to the ARS, FRS, TV, and GCA.<br />
** There is a slightly-more-automated fix for this that doesn't require individual mod-author (or faction-designer or unit-designer) input, but this is still a good idea to do.<br />
** Thanks to a variety of folks for reporting this, including Arides, Daniexpert, and others.<br />
<br />
* Apparently it is possible to get an exception when hovering over a tech tooltip in multiplayer. This has not yet been fixed, but now when it happens it will be sure not to be destructive to the rest of the game, and it will give a far more detailed error message. Right now we really have no idea what the actual error is, but this will at least contain it and let us fix it after we have a new report in the next release.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* TextEmbededSprites now have a few new capabilities:<br />
** The scale float xml parameter allows you to set the scale of a sprite relative to what it would normally be (default is 1.0).<br />
** use_geometry_queue as an xml parameter allows for you to make a for-the-galaxy-map-by-planets-text version of sprites.<br />
*** If this is set to true, then those versions of the galaxy map sprites will be vastly more efficient and will dynamically batch as we set up last build.<br />
*** If this is set to false, then this is for use anywhere else in the GUI, including the header and tooltips and whatnot. If this is set to true and you try to use it in the interface elsewhere, it will be invisible, as we discovered yesterday.<br />
<br />
* Using the above, strength icon is now properly batched on the galaxy map (as with last build) but all of the other sprites being drawn in the GUI now actually draw visibly again (unlike last build).<br />
** Also, while we were at it, we adjusted the scale of the strength icon to be 0.9, since it was a little bit on the large size in most text.<br />
** Thanks to Badger, Daniexpert, TechSY730, and Crabby for reporting the invisible icons in the GUI.<br />
<br />
=== MP Sync Improvements ===<br />
<br />
* During multiplayer, if there is a hack happening, then every second where something is changing, the host does an extra forced sync of the hacker and the hack target (if there is a hack target) to all clients, thus keeping them all in the loop.<br />
** This is central and automated, and should probably actually catch cases like "something was different after a hack between the client and the host" even if the end programmer/modder/etc doesn't account for it fully. This is just a handy new feature in general!<br />
<br />
* When units are claimed, or when they complete construction for the first time, there is now an automatic forced full sync of that unit from the host to the clients.<br />
** This gets rid of a lot of potential desyncs that otherwise could linger for a bit.<br />
<br />
* The ability to set the importance of intel tab entries is now shared among players in multiplayer.<br />
** This was previously set up to only be local, kind of by accident.<br />
** This has some code to keep it nice and responsive as if it was still just a local change, but if you click really rapidly on the same intel entry and cycle it through, you may see some slight funkiness to that. Should not be a big deal, but we'll see.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* FlagAsNeedingForcedFullSyncToClientsJustInCaseIfInMultiplayerAndWeAreHost() has been renamed to FlagForForcedFullSyncToClients_FromHost().<br />
** Added a new FlagForRequestedForcedFullSyncToAllClients_FromAnyClient(), which lets clients request updates on an entity rather than the host having to tell them.<br />
** Both of these calls remain utterly impact-free when we're talking about calling them repeatedly, or calling them during single-player. They intelligently weed out extra requests, and don't do any substantial processing directly.<br />
** The FlagForRequestedForcedFullSyncToAllClients_FromAnyClient() method in particular throttles itself so that a fresh flag can only be set on a given entity on 1 second intervals. So if the client is repeatedly asking the host for updates on an entity, that's just fine, but it will only get results on that given entity once per second. Other entities may be requested inside that timespan.<br />
** The upshot of this is that, whenever you look at a ship or structure as a client, by hovering over them to see the tooltip, you immediately get a refreshed copy from the host (within 100ms or so at the most, probably less, so too fast for you to notice), and then every 1 second after that you get further updated info.<br />
*** There's a lot of extra data that is stored normally only on the host. That gets sent to you as a client when you first connect, but it's mostly stuff happening on background threads and affects faction decision-making. Some of the DLC2 factions gather various resources that you can see in the tooltips, for instance.<br />
*** Previously, before this addition, clients would just have incomplete tooltips. Now their tooltips are updated with host data as-needed, and already the behavior of those sorts of ships would be updated by the host (so if you're not hovering over something for a tooltip, it will still act correctly; and you don't need the extra data in the tooltip unless you were to hover over it).<br />
** The other side effect of this is that if you feel like maybe there's a sync error with some ship or structure, and you go to hover over it to check that out and see for sure... it's going to instantly fix itself. So do be aware of that, though it's more or less a good thing.<br />
<br />
=== UI Improvements And Fixes ===<br />
<br />
* The concept of "Update Cycles" in the ArcenUI framework has been removed.<br />
** Instead we are basing things on ArcenTime, which was developed after the initial design of the ArcenUI.<br />
** This in turn lets us have reactions which are framerate-independent, which is thus more consistent across machines.<br />
<br />
* Using the above shift, plus also an extension to allow dropdowns to properly handle tooltips even on their "off frames," we have fixed the flickering dropdown tooltips that were introduced in the last update of the game.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Various lobby dropdowns have been improved as follows:<br />
** The tooltips for map type planet count entries still retain the header text of what you are doing. Also, colors for the selected vs potential items has been added.<br />
** The tooltips for the planet naming types are a bit more clear in general, and it now shows the name in a line above the description for extra clarity. Also, colors for the selected vs potential items has been added.<br />
** The tooltips for the map types explain themselves a bit better, include the name of the map type, and have the new colorization.<br />
** Tooltips for the map linking flavor and planet layout and such now match the others in function and colorization, including showing the details of currently-selected item when you hover over the closed dropdown for the first time.<br />
*** Also discovered a special discrepancy in how these were being handled that was causing these to still flicker like crazy even after we fixed dropdowns in general.<br />
**** Also found and fixed this on all settings on the personal settings window, although all other windows seemed to be okay.<br />
<br />
* Put in a fix that will prevent dropdowns in general from using the code combination that leads to flicker:<br />
** Essentially, HandleOverallMouseover() has been removed, and you should now use HandleMouseover() for that, and continue to use HandleItemMouseover() for items.<br />
** We are able to control how this flows properly and remove the flicker, whereas before if someone used HandleMouseover() by mistake -- when they were supposed to use HandleOverallMouseover() -- then they would get a flicker.<br />
<br />
== Version 2.633 Roaring Performance ==<br />
(Released November 17th, 2020)<br />
<br />
* Civilian Industries Update<br />
** Put in some defensive code to prevent potential pathfinding lock ups when multiple civilian factions are in play.<br />
<br />
* When hovering a Flagship, the 'max possible strength' value in the tooltip is now colour-coded to let you know what percentage of that strength currently exists. So if your fleet has taken heavy losses, the Strength colour will be darker. If you are at full strength it is brighter. This matches the behaviour of the tooltips for Factories.<br />
<br />
=== Performance Improvements ===<br />
<br />
* On the main menu scene, improved the culling mask on the scene-view camera to greatly improve efficiency of that scene.<br />
** It looks like the main menu may have been accidentally drawing 1.8 million tris rather than 800k tris because of this being set wrong.<br />
<br />
* The reflection probe on the main menu scene has also been updated to have an appropriate culling mask, for the same reason.<br />
** The reflection probe updates, which are quite heavy and frequent, should also thus be correspondingly faster and draw so many fewer triangles as well.<br />
<br />
* Poly few has been employed on the main menu scene to combine all of those meshes of the hangar into just a single mesh with 16 submeshes for the various materials.<br />
** This cuts the number of draw calls on the main menu down from about 3000 to about 250. The visual end result is identical. The performance gain is potentially massive, but varies heavily by hardware.<br />
<br />
* We have historically had static and dynamic batching disabled for this game, because we use GPU instancing instead (which is far more efficient and direct).<br />
** However, when we made the new main menu, we had implemented things such that this type of batching would be useful there, so we turned it on.<br />
** We have now changed things around again to remove that, and so once again removed those from being on in the application as a whole.<br />
** It's quite possible that these were dragging down performance on some machines in general, as the game may have been spending some CPU cycles fruitlessly looking for things to dynamically batch during the main game itself.<br />
** It's irrelevant to the end result of how things look, but there's no chance of that popping in and impacting performance negatively anymore, which is good. If it wasn't a performance impact, then no worries there, either.<br />
<br />
* Using Blender, we've manually removed some off-screen sections of the main menu meshes. This has overall reduced our polygon count in the game on the main menu by another 300k or so triangles.<br />
** This sort of hand-optimization is something that we had been saving until it was clear this is where the bottleneck was, and after it was clear that the new main menu was a winner (and that we had time aside for it).<br />
<br />
* With these changes, on Chris's main two computers he sees:<br />
** On the main menu on his main dev machine (GTX 1070 and a few year old i7 laptop) a jump from about 55-60 fps to instead being about 100fps.<br />
** On the main menu on his MacBook Pro from late 2013 which has an i7 but does not meet the minimum system requirements in general, it jumps from 26fps to... 26 fps. So there's a different limiting factor other than polygon count or draw calls on this ancient of hardware.<br />
** Most likely, any machines that are actually meeting the minimum system requirements, or vaguely approaching the recommended, environment, should see a substantial performance bump on the main menu. And for everyone, the disabling of the static and dynamic batching may improve performance beyond the main menu.<br />
<br />
* In our main menu scene, the way that the reflection probe is update has been changed fairly substantially.<br />
** Previously it was every-frame every-face if you had at least 30fps, and every-frame individual-face if you had at least 15fps, and below that would not update over time.<br />
** The individual-face updates were really jarring, however, and not something that is a good idea for any sort of smooth feeling.<br />
** Now only if you have at least 50 fps will it do every-frame every-face updates, and below that it will just not update over time, instead only having the reflection from the initial onawake event.<br />
** On Chris's main machine this makes no difference since it runs at 100fps now, but on the under-min-specs OSX machine this brings performance up to 31fps from the previous 26fps.<br />
<br />
* On the main menu, a number of lights were set to affect more than just the Scenes layer. This probably did not affect performance, but we are correcting that anyhow.<br />
<br />
* On the main menu, we had one extra spot light that was drawn in a not-important weighting, and that was very dramatic and looked good in general BEFORE we started having ships with lights on them moving around.<br />
** Since having ships moving around, that spot light would disable itself as the spotlights overtook it, then re-enable itself, and the transitions were jarring. It did not seem to affect performance much on the high-end or ultra-low-end machines, but in the middle-tier it might, also<br />
** This spot light is simply removed, as it was not needed for the new scene composition.<br />
** We experimented with turning off the point lights used on the ships, or even with turning off the reflection probe from being on at all, but the former gave 2fps on the super-old mac (from 31 to 33 fps), and the latter gave no boost at all.<br />
** Whatever is holding back the ancient below-specs mac is really not the sort of thing that is holding back the rest of the potential computing audience. And this is one excellent reason why we have system requirements in the first place. Not that 30fps is a cardinal sin; the original AI War was hard-locked to 20fps most of the time.<br />
<br />
* Added a new Performance tab option: Unrestricte UI Update Speeds<br />
** Normally, most UI windows only update their contents every 50-100 milliseconds. If your framerate is much higher than this, however, you may prefer that the UI update at whatever your actual framerate is.<br />
** This will likely reduce your framerate, potentially substantially, but it leads to the ultimate in responsiveness. Prior to version 2.633, and since sometime in the game's alpha, the UIs were all running on unrestribted update speeds.<br />
** We are not noticing any substantial benefit from this on our powerful machines, but on lower-end and middle-tier machines this may make more of a difference.<br />
** At the moment, things seem to perform equally well either way, but it's nice to put a lesser load on things where we can. Since this does not seem to make a visual/feel difference that we can detect at the moment, this seems fine to have with a differing default from the past.<br />
** Thanks to Daniexpert for inspiring this change.<br />
<br />
* In the ArcenUI_Element class, we have a SetActiveIfNeeded() method that long ago had some gating that was based on a cached wasLastActive in the class. <br />
** This was working poorly, back in alpha or beta of the game, because of how unity handles commands to enable objects that are disabled in the heirarchy, and things like that.<br />
** The game has now been updated to do a check against the activeInHierarchy property of the gameobject, which will always give the real result. This should not result in bugs, and should in theory result in some slightly better performance in certain cases where large numbers of ui elements are turning on or off frequently.<br />
** We don't really see much of a difference based on this, but in general this was something we noticed that was an optimization we had wanted a long time ago, and being able to have a tamer version of that back in here now is nice.<br />
** Thanks to Daniexpert for inspiring this change.<br />
<br />
* Over the last few months, as we've added functionality, the performance of the galaxy map has dropped notably.<br />
** In combination with a much-more-recent performance drop related to how we draw sprites-in-text and how that affects the galaxy map only, full galaxy maps were down in the 25fps range and really choppy to move around, today.<br />
** We've now restructured a lot of things to update in a time-sliced fashion, and the performance is now in the range of 90fps when zoomed all the way in, and 60fps when zoomed all the way out on a full map.<br />
** There are still some performance improvements we need to pursue related to sprites-in-text in this specific instance, but those will be in the next build.<br />
*** We did experiment around with trying some things like adjusting the sprite-in-text shader to allow for GPU instancing, but that went absolutely bonkers in a way that we don't care to untangle. There's a better approach that we'll implement soon.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* A whole messload of the new background images and other accents that are used in the new UI have been made vastly more efficient.<br />
** This may actually vary by OS just how much more efficient they are, but in essence these are all now able to be stored in DXT1 format, and all of the ones where relevant now have mipmaps for more efficient drawing at smaller resolutions.<br />
** The amount of VRAM that this should save, and the extra load removed from the GPU pipeline, should be substantial.<br />
** Thanks to Daniexpert for getting us to look into this.<br />
<br />
* Discarded these changes: Rather than using raw "TextMeshPro" text renderers for the text that is shown all around the galaxy map, we are now using individual Unity GUI Canvases with embedded TextMeshProUGUI objects.<br />
** Visually this looks identical, but now we are able to take advantage of the compositing stages that unity canvases go through, and thus we can have things like strength icons be embedded directly in these canvases without them causing extra draw calls.<br />
** At the moment we have one canvas per planet, with three text sections inside of that. This is less efficient per update of text, but more efficient for drawing text, which is the more common operation.<br />
** None of these respond to mouse raycasts at all, so on the off chance that the occasional (could not click a planet on the galaxy map) was relating to these, that no longer is possible.<br />
<br />
* Replacement changes for the above: In the end we went back to raw TextMeshPro text renderers, as their performance was superior to anything we tried with an abundance of canvases.<br />
** We did wind up also making it so that the shaders for TextMesh Pro sprites now use the Geometry queue instead of the Transparent Queue, which improves performance on rendering and also allows for batching.<br />
** And for the various ship icons in both the main view and the galaxy view, those also now use the Geometry queue. Those should generally get picked up by GPU instancing, but in the event they do not they will now get picked up by dynamic batching instead.<br />
** We actually have re-enabled dynamic batching for the game, but still left static batching off, and this seems to give the optimal performance when that's paired with these shader changes for the sprites.<br />
** Sprites used to always do perfect instancing, but now the sort order sometimes messes that up since there are multiple materials and it feels like it needs to handle them in proper order (really, z buffer ought to be sufficient and overdraw is probably preferred, but anyhow). The queue change makes these more likely to instance, and in the event they don't instance it makes them batch, thus leaning on the z buffer as noted.<br />
** The end performance boost on the top machine we have is now getting us back into the 90s fps on the galaxy map, up from the high 20s in the prior build, and still in the 90s on the main planet view. And both feel smooth rather than jittery, now, which is good.<br />
** Thanks to Daniexpert for reporting the performance loss observed lately.<br />
<br />
* On the galaxy map, we are now properly buffering text such that we don't put back in the same value into a field that just had that value.<br />
** This was causing some needless thrashing and re-parsing of rich text tags.<br />
<br />
== Version 2.632 Multiplayer Sharing ==<br />
(Released November 16th, 2020)<br />
<br />
* Fix an XML parsing error related to the Human Marauders<br />
** Thanks to Crabby, zharmad and okonomichiyaki for reporting<br />
<br />
* Add a setting for 'Show Faction Ring Around Ship', which displays a circle around a ship of the colour of the faction. <br />
** This is intended to make it easier to follow how battles are going without icons on, since it looks really cool that way.<br />
<br />
* Add some Red text to the Delete Campaign popup to make it a bit harder to do it by mistake<br />
** Prompted by the woes of Pat on the forums<br />
<br />
* Mod updates: Fixed Tugboat Drones always slowing enemies by 80%. Instead they now start at 20%, increased by 5% per mark beyond 1, ending up at 50%. Note that Tugboat Drones can still archive the maximum slow if their slow fields overlap.<br />
** Thanks to zeusalmighty428 for reporting.<br />
<br />
* Micro Mod Collection fix/balance:<br />
** The Energy Converter no longer produces negative energy and instead consumes the same amount of power. It was causing errors when a bad brownout could turn the energy generation of the player negative.<br />
** Doubled the metal cost of the Research Expedition.<br />
*** From zeusalmighty428's balance feedback<br />
<br />
=== Multiple Players Controlling A Single Faction In Multiplayer ===<br />
<br />
* In the lobby sidebar, you can now see on the client and the host if other people are in spectator mode, not just if you are personally.<br />
** This is quite helpful for knowing if the multiplayer lobby is truly ready to start.<br />
<br />
* Under human player entries in the factions tab in the lobby and the factions screen in the main game, you can now add and remove players from factions.<br />
** The tooltips make it pretty clear, but basically you can switch who is controlling what faction, or make someone just a spectator, or have two people share control of one faction, etc.<br />
<br />
* Fixed an issue where regenerating maps was causing faction assignment auto-allocation previously.<br />
<br />
* Two players are now confirmed as being able to share the same faction, and both can order around the ships of it and see everything as if it was just controlled by one of them.<br />
** What is not shared is the state of your GUI, such as what you are looking at or what you have selected, or what you are hovering-over, etc.<br />
** This is essentially the same as even really old RTS games like the original Age of Empires that would let you share a faction if you gave two players the same color.<br />
** However, with this you are able to still do text chat with the colors and the names of the individuals who are a part of the game, whether they have their own factions or no faction or share a faction. This feels pretty awesome!<br />
<br />
* Joining a game late as a spectator is confirmed to still be possible, but now that's the only time it warns you that you are a spectator.<br />
** If you join the game in spectator mode during the lobby, or the world is regenerated while you are in the lobby, it doesn't show the "hey you're a spectator, is this on purpose" message. That was really annoying when changing galaxy sections to have fewer factions or while someone was just intending to spectate.<br />
<br />
* New feature, after someone has joined a game late (or frankly, even if they have been there from the start):<br />
** You or they can unassign them from factions, and assign them to other factions or no faction.<br />
** This is great for having a game where you were playing solo, but now have some friends coming in as extra sets of hands.<br />
** But surprisingly, since this is so quick and so seamless of a way to pop over and see the perspective of another player, I can see this potentially being used as a "hey, look at my metal flows and such for a minute" type of view, too. You can do it while paused or unpaused, the game doesn't get interrupted while people change status or come and go in general, and overall this is just really smooth.<br />
<br />
== Version 2.631 Multiplayer Swaps And Performance ==<br />
(Released November 13th, 2020)<br />
<br />
* Fixes to when GetIntValueForCustomFieldOrDefaultValue or GetValueForCustomFieldOrDefaultValue have empty strings in them, to where they will now return the default values properly.<br />
** Thanks to NR SirLimbo for identifying the problem and likely fix.<br />
<br />
* Kaizers Marauders fixes:<br />
** Fixed another exception in relation to missing settings. Tracing the issue back lead to finding out that Vanilla GetValueForCustomFieldOrDefaultValue() sometimes still does not return the actual default value but an empty string. OnS0_KaizerUpdating() now detects this and produces an informational popup before correcting it to "Never" which is the actual default value.<br />
** Debugging lead to the discover of a bug in the Budget Updating logic where (due to the same issue) they would every second set the starting budget of [nothing] without ever beginning to accumulate budget. They now start with 0 and begin accumulating.<br />
*** Thanks to Isiel on Discord for reporting and delivering a save to reproduce these issues with.<br />
<br />
* Fixed an exception that could happen in RemoveInvalidatedOrdersAndReturnFirstValid_IncludingDecollision() somewhat at random on multiplayer clients, mainly as a race condition.<br />
** Thanks to crawlers and Driftwood for reporting.<br />
<br />
* For whatever exact reason, the Macrophage faction really doesn't work well if the client is also trying to calculate all the decisions for things in multiplayer. This is referring to the DoPerSecondLogic_Stage3Main_OnMainThreadAndPartOfSim() method in general, but the telium spawning logic in particular.<br />
** Since this was a constant source of errors, and since the desync repair code should catch things like this quickly in general, for now we're just not running this on the client at all anymore. This stops the errors, and any divergences should be quickly and easily picked up by the desync repair logic.<br />
** Thanks to crawlers and Driftwood for reporting.<br />
<br />
* Fixed potential exceptions that could happen in OnlyInMapgenOrInActuallyGettingRidOfEntities_ImmediatelyRemoveFromSim() in general during cross-threading, but most often on multiplayer clients.<br />
** Thanks to crawlers and Deadwood for reporting.<br />
<br />
* A variety of data that is only relevant in single-player or on MP hosts no longer shows up on MP clients in the escape menu sidebar.<br />
<br />
* Previously in MP, it was possible to get some errors like "Hey, we have generated drones from a ship of type CarrierGuardian that can never be properly deployed by the fleet it is not the centerpiece of, of type NonPlayerDrone" on the client in a spurious fashion.<br />
** These are simply not written right now, and the natural sync process fixes those already within a couple of seconds.<br />
<br />
=== Swapping Fleet Lines Between Multiplayer Players ===<br />
<br />
* Created the ability for players to swap out ship lines between each others fleets in multiplayer.<br />
** For the sake of convenience, every player can slot in every other player's ships into their fleet, or grant their own ships to any other player's fleet.<br />
*** In AIWC, we required players to actually gift ships or similar from themselves to someone else, but in this game you can outright take from others. You're all on the same side, so divide up tasks how you will.<br />
** The owner of the fleet is included in the row of the swapping target so it's easy to see who owns it.<br />
** For balance reasons and to prevent technical hiccups, any ships that are swapped between players in this fashion get destroyed and have to be rebuilt by the player on the other side.<br />
*** This is fairly similar to how, when ship lines are swapped between fleets on different planets, the ships are scrapped and have to be rebuilt then, too.<br />
** It's worth noting that this sort of thing does allow for a lot of extreme focusing of tech lines in multiplayer, making MP even easier than it would have been before (you take all of the ships that benefit from tech X, give me all the ones that benefit from tech Y), but this was always a feature we were planning, regardless. Player flexibility and the ability to coordinate is more important.<br />
*** We could implement punitive-style tech costs in MP, to make it so that it was more costly to use techs, but that would probably just encourage even more specialization.<br />
*** In general, it's simply worth noting that a MP game is substantially easier than the equivalent game played solo. So either up the difficulty, or add more secondary foes to deal with, or enjoy the extra ease.<br />
*** The original AI War had a much more limited set of factions at the start, and only could ever have two AIs, etc. So it was important for that game to scale the difficulty up as more players were added. But in this sequel, the amount of other factions, and their power, make it so that you can really tailor it to your own needs, instead.<br />
** Huge thanks to NR SirLimbo for implementing this! This was on our list to do, but to have a modder implement it for us in advance is a great time saver.<br />
<br />
=== Multiplayer Performance Improvements ===<br />
<br />
* The multiplayer sync-repair of planets, with planet-factions included inside of them, was by far the largest amount of bandwidth being sent by the game during gameplay, and it has now been set up in a time-sliced fashion so as not to cause a bunch of lag on the client.<br />
** It's quite likely that, on some certain very heavy games on Steam, this was actually able to cause an exception where the amount of data being sent in one message was larger than what Steam allows.<br />
** At any rate, this was causing periodic lag on the client that was so severe in some games with larger counts of planets that it was making the entire game laggy.<br />
** We have not only started time-slicing the planets, but we actually split out the data for the planet factions themselves and also time slice THOSE now, too.<br />
** As a direct result, the performance of multiplayer games has skyrocketed when it's involving large number of planets and/or factions, but we're going to take this a bit further.<br />
<br />
* Previously, we had a system where ALL of the various types of network sync repair work shared one large time-slice.<br />
** This really only worked when we had fewer types of sync repair, and when they didn't also internally have lots of time-slicing happening.<br />
** As we have added more types of sync repair, and have started wanting to time-slice those, this would otherwise mean that the really core stuff -- namely ships/units -- could fall further and further behind, which is not good.<br />
** Therefore, we've moved both the "ship sync checks" and the "divergent ship fixes" out of the central time slice group, and they are handled every sim frame instead.<br />
*** For ships, these were already time-sliced, and so those happen over the course of a couple of seconds. Probably closer to 2 seconds now, rather than 4, but it depends on the number of ships in the game.<br />
*** For divergent ship fixes, those now don't wait on anything, and just get sent to clients asap after we realize that it is needed. This makes that far more reactive in a good way, and ultimately the data is small enough not to be concerning.<br />
**** As we get to fewer PKID conflicts in the future, this will dwindle even further, but having it be nice and reactive is good.<br />
<br />
* Now that we don't have to share the time-slicing with the time-sensitive ship fixes, we can make some of the rest of the sync repair data happen on a more relaxed schedule.<br />
** This actually is a dramatic reduction in the amount of data transferred, and even more importantly is a dramatic reduction in the amount of CPU processing on clients required to handle this.<br />
** Planet Faction sync is by far the slowest stuff to sync, and has the most data, so we're time-slicing it over 20 frames now, which is about 2 seconds, rather than 4 frames like earlier in this build (before this build, it all happened in a single frame every two seconds or so).<br />
** Planet other-data sync is not exactly small, either, so it's being time-sliced over 8 frames now instead of 4 frames like earlier in this same build. Again, prior to this build this AND the planet-faction data was all in a single giant laggy frame every 2 seconds in large games.<br />
** The data on these things is just not all that visible or important in this sort of time schedule, so cutting it down in this fashion keeps things from drifting over long periods of time without impacting game performance like it previously was.<br />
** We may add in extra time-slicing in the future if it really becomes needed, but at this stage it is seeming to be a good balance between keeping things up to date quickly and not draining performance.<br />
** Thanks to crawlers and Deadwood for providing an MP savegame where basically the performance was stop-and-start laggy; in this new version, we can run it at full sim speed with no waiting on the client, which is really awesome!<br />
<br />
* Non-new ships on tier 3 planets now get synced FAR more slowly, and are counted as skip-syncs.<br />
** These catch up at a rate of roughly "one full sync cycle multiplied by 1/10th the number of planets, rounded up). In practice in one large savegame with 12k stacked ships and 93k ships total on 120 planets, this winds up being about a delay of 68 seconds at most for any given ship. If players moved onto a planet that is slightly stale on the clients, that planet would be immediately updated.<br />
** The main cases where we might have a problem here is with strength calculations being off on planets where there are large numbers of reinforcements suddenly dumped into new ships. The host would always be correct, but the client would have some slightly stale data in the galaxy map for up to 60 seconds, which would be annoying.<br />
** There are some ways we can adjust for this for specific ships as they are updated, though, and the next step is to add that. This whole process at the moment does wind up saving a ton more bandwidth and CPU processing, though, which is excellent.<br />
<br />
* Added two new methods to GameEntity_Squad for ships:<br />
** FlagAsNeedingForcedFullSyncToClientsJustInCaseIfInMultiplayerAndWeAreHost() causes a ship to immediately be fully synced from the host to any clients. It is unused on the client side.<br />
*** This is a great way for mods in particular to, after having updated some sort of special mod-only data (like resources they are carrying) to cause a full ship sync.<br />
*** This should not be done too frequently! But if you have a mod that is gathering resources, and periodically updating information that would not normally be caught by the sim thread, then having this periodically called on the gatherers would keep the tooltips of clients up to date.<br />
*** In the escape menu networking details on the host, you can see how many of these have happened via the "Ship Syncs Forced" item.<br />
*** BUT, this may actually wind up never being needed, stay tuned. We're going to make some additions so that anything a client is hovering over to get a tooltip gives them up to date info without you having to be predictive about it.<br />
** FlagAsNeedingFullSyncCheckIfInMultiplayerAndWeAreHost() is specifically to say "ignore my tier3 delayed status," to work around the feature we just added today where background ships get ignored a certain amount.<br />
*** This is mainly something to use when something unusual changes (other than a ship existing at all) that would be visible on the galaxy map for client player, without them clicking into the target planet.<br />
*** So for now this is something that happens whenever a ship marks up, and it also happens whenever the AIReinforcementPointContents contents are changed (increasing, decreasing, transferring, deploying).<br />
*** This should keep the galaxy map accurate for clients, while at the same time not having so darn much data transfer for ships on planets where players are not active.<br />
<br />
== Version 2.630 Arbitrary Icon Inclusion And Weapon Exclusion ==<br />
(Released November 11th, 2020)<br />
<br />
* Add death effect damage a unit has sustained into the tooltip for it at or above Medium detail.<br />
** Each type of damage is listed separately, and displays the current damage, and the amount required.<br />
** Thanks to Puffin for adding.<br />
<br />
* Fix a Macrophage typo<br />
** Thanks to crawlers for reporting<br />
<br />
* Fixed a bug in Astro Trains where they were looking for a nonexistent variable in their custom xml. This was always a harmless bug, but newly showed an error while in the past it was silent.<br />
** Thanks to ussdefiant60 for reporting.<br />
<br />
* GetDefaultValueOfWhateverSort() on the SpecialFactionData object has been updated to match the way that the default values were returned on the faction screens.<br />
** Thanks to NR SirLimbo for reporting that this was not working consistently.<br />
<br />
* The CustomFieldValues array on faction objects is now private, so that people don't try to directly add or find data from it.<br />
** Instead, mods and factions and whatnot should set data through SetCustomFieldValue (which works the same as before), and they should get data via either GetCurrentIntForCustomField() or GetCurrentStringForCustomField().<br />
** Both of those latter two methods have a method that lets you pass in the specific field (more efficient), or which just takes the name of the field (less efficient).<br />
** Either way, the idea is that there's never confusion with not getting the default value back when there is a blank present in the main data (which might be an old savegame or quickstart, or various other valid conditions).<br />
** Thanks to NR SirLimbo for finding this accidental modder-landmine for us.<br />
<br />
* Fixes for Kaizers Marauders:<br />
** Instead of failing horribly when added as a Random Faction, or when loading older saves where old Marauders were enable (be it just as a beacon), which includes quickstarts they will now use somewhat defaulting values. It's not perfect, and not really intended for use this way (simply because of the sheer amount of options available) but it works.<br />
** Fixed a potential issue with Debugging global stuff for Marauders (such as logging Kaizer Updating or the Shared Planetary Cooldown List) where the debug could be turned on, but when only a specific Marauder Faction was set to be debugged it could re-overwrite with false later on, leading to no printouts.<br />
<br />
* Remove mentions of 'tiers' from the scourge unit hovertext, since it was confusing peoople. It was only ever a cosmetic thing.<br />
<br />
* Suppressed a pair of harmless-but-annoying exceptions that could show up in your log files if you were shutting down the game from the main menu in just the wrong way. These were related to the Slate cutscenes trying to stop at the same time they were being eaten alive by your OS taking back its memory. All is well, no need for a dying scream.<br />
<br />
=== Fix To Ship Weapons Mismatch ===<br />
<br />
* Added a new ArcenNonTableUniqueStringList class, which we can now use for keeping lists of arbitrary string that we want to serialize.<br />
** We're going to be using this for entity systems.<br />
<br />
* EntitySystemTypeDataTable has been removed, and EntitySystemTypeData no longer inherits from ArcenDynamicTableRow.<br />
** This was really old logic, and is the one instance in the codebase of us really not using dynamic table rows properly.<br />
** The result was slow during startup, in the best of times, and more recently it has been actually scrambling up the data for systems between different ships! That latter part may be new in the last few builds, or it might just be more common. Either way, this has needed a shift for a while.<br />
** The EntitySystemTypeData no longer has an InternalName, but instead has InternalName_Original (which is just the raw xml name like FusionBomb), and then an InternalName_Longer (which is the entity type appended in front of it, like "Mugger_FusionBomb").<br />
** The new serialization for these by index uses the shorter name, which just makes savegames a bit smaller. But it doesn't really matter what is used in the longer-term effect, because these are no longer stored in one central lookup. They are now properly full sub-entities of the GameEntityType.<br />
<br />
* With this change, shockingly, we have still NOT solved the issue of things like Mugger frigates sometimes getting Brawler weapons. So that's going to need even more investigation.<br />
** This overall change is still worthwhile, as it shrinks future savegames a bit (not ones from prior versions saved in the new build, though), and it also makes loading the initial game program a bit faster and less prone to potential issues... despite still having this particular issue.<br />
** Note from later: this actually solved 90% of the problem, but there was still a case of us managing something slightly wrong that let it keep bleeding over. So the last 10% is below.<br />
<br />
* The "copy_from" tag, which was never used on entity systems inside an entity, and which probably would not have worked well there if it had, has been removed.<br />
<br />
* Fixed a bug where our "dump data tables on load" debug option was no longer working (the hotkey was, but not the on-start version).<br />
<br />
* Fixed a very peculiar issue that only affected a couple of unit in the prior version (in the main game and DLC, anyhow -- more may have been affected in mods) where if there was a unit that had its systems altered on a child, and there were then other co-children, the other children would sometimes get those altered stats and sometimes not. Normally it should just pass to grandchildren and so forth, not to siblings.<br />
** Essentially, the way that we handle partial records is normally very explicit (is_partial_record="true"). And in fact, when we have a partial record like that, we WANT for it to inject itself into any other descendants later.<br />
** But in the case of entity systems, we have this kind of implicit "child partial record" system going on, where you just name the same system in the child as you had in the parent, and make some changes, and those changes then keep going in that lineage.<br />
** What we do NOT want to have happen is the siblings to also pick up those changes, which is what was sometimes happening here because of the funky way that we handle systems and systems alone in the game.<br />
** From looking at the raw data, without mods in play this mostly just affected muggers and brawlers, and a few spider turrets. Most everything else was already consistent properly. But if you play with mods on, you may have seen a lot of other chaos happening beyond these particular ones.<br />
** Thanks to crawlers, Ovalcircle, Spaz, Puffin, and Darkshade for reporting.<br />
<br />
=== Work To Allow Arbitrary Sprites In Game Text, Part 2 (Complete!) ===<br />
<br />
* The sprites in TextMeshPro have been updated so that their default index is 0, not -1. That way if no sub-name or image is specified, we are still able to figure out where they are.<br />
<br />
* We don't use the mspace monospacing markup, so we're keeping things simple and redefining that to mean "no advance"<br />
** This essentially lets us put <mspace>around things we want to all be on top of one another</mspace>, which is really useful for our compound icons.<br />
<br />
* Since we already use non-atlased sprites in every location in the UI, and have those present and available as needed, we're just going to go with that for the TextMeshPro sprite embeds as well.<br />
** There aren't any sprites that we only have in atlases but not also in asset bundles directly, although there are ones that are loose and not in bundles.<br />
** With that in mind, this lets us avoid the glyph metrics that were working so poorly with our sprite atlases, and the efficiency of the whole thing is not much changed given how compositing on the UI works and how infrequently (overall) we include extra sprites.<br />
** This actually turned out to be a particularly good move, because what we've discovered is that if there are two different sprites used in a single text area, the following happens:<br />
*** The draw order is based on the order of the first sprite dictionary used that is shared, not the order of the sprites in the text.<br />
*** When multiple sprites are in one dictionary, this can lead to funky results. When there are single sprites per dictionary, the only time this can mess up is when there is a single sprite used more than once AND you want them to overlap one another.<br />
*** It's worth noting that we don't care about the order of sprite drawing, normally, except for the new mspace markup.<br />
<br />
* The new custom TextMeshPro dll has been updated (by building the WorkingTextMeshPro project, as silly as that is) and the result has been put in ReliableDLLStorage so that we can compile against it and use those capabilities in ArcenUniversal, etc.<br />
<br />
* The copies of TextMeshPro code for the other three main projects that use it have all been updated to match the new capabilities.<br />
** This won't work in the main game build until it actually has a build done, though.<br />
<br />
* Added a new TextEmbededSprite and TextEmbededSpriteTable table, which are in ArcenUniversal and PARTLY filled by xml entries from the new TextEmbededSprites folder.<br />
** The rest of these are able to be filled programmatically as we load sprites from other locations, specifically when it comes to ships by name.<br />
** The purpose of these are to define sprites that can be used inline in text for improved display purposes. You can expect to see us doing more of this over time now that we finally have the capability.<br />
** It is possible for an auto-added sprite in here (such as for a specific unit type) to manually get some tweaks by adding xml for it. The order of that happening does not matter, which makes the system extra flexible.<br />
*** This does mean that, because of the lack of order mattering, this table intentionally allows for malformed entries (those defining some metadata but having no actual sprite assigned). That's a necessary byproduct, since other parts of the code are assumed to add those sprites later, but might not do so if they were themselves removed.<br />
** bundle_name and filename are optional, and specify the location of where to directly load the Unity Sprite or Texture2D from during game load.<br />
*** These are NOT used in cases where another class (like GameEntityTypeData) is creating new TextEmbededSprites on its own. In those cases, the sprite or texture2D is sent from the other class.<br />
*** In the case where these ARE used, we need to know whether we can load it as a Sprite (ideal) or a Texture2D (slightly slower). The xml tag bundle_target_is_texture2d defaults to false, and so tries to load the target as a sprite. Anything used elsewhere in the UI would work this way. But if you need to load a Texture2D and make a Unity Sprite out of it at runtime, you can set this to true.<br />
<br />
* Added a static CreateRuntimeSpriteFromTexture2D() method on the TextEmbededSpriteTable, which takes in a Texture2D and returns a Sprite.<br />
** This is something that is particularly useful, because it keeps track of ones that were previously created, and reuses them rather than creating extras. This can only happen on the main thread.<br />
<br />
* About 50 initial sprites have been set up as text embedded sprites for use coming up.<br />
** There is more metadata that we want to get in there, plus some other things to make these as simple as possible to call on, and we need to actually cross-wire this to the new TextMeshPro stuff that we worked so hard on. But that will come tomorrow.<br />
<br />
* Fixed the AIW2ModdingAndGUI project so that it now has the proper TextMeshPro code embedded within it and so that it won't erase our customizations every time it is reopened in the unity editor.<br />
<br />
* Fixed the WorkingTextMeshPro project so that it now has the proper TextMeshPro code embedded within it and so that it won't erase our customizations every time it is reopened in the unity editor. This is how we build our custom variations on that code, and now we're not at risk of random regressions from unity package manager automatically wiping our changes.<br />
<br />
* The following float options are now available on any of the text embedded sprites for manipulating how they fit into the text they are embedded in:<br />
** x_draw_offset, y_draw_offset, width_draw_offset, height_draw_offset, advance_draw_offset.<br />
*** All of those do the basics of what you might thing in tems of adjusting how the sprite draws, while advance says how much space to go over before the next character draws (or how it plays into word-wrapping or whatever else).<br />
*** All of these are in fairly abstract units, where roughly something like 100 is about the height of a line, regardless of how many pixels that line actually is. <br />
*** Most of the time you won't want to mess with these at all, but in some cases you may want to adjust the vertical centering by using y_draw_offset in particular. Beyond that, most people would not use any of these.<br />
*** Frankly, to get the kerning of the strength icon working perfectly, we will probably add a few more dials to this soon.<br />
<br />
* Our TextEmbededSprite sprites are actually loaded up into TextMeshPro sprites now, completing the main integration of arbitrary sprites.<br />
<br />
* default_color_hex is a new string option available on the text embedded sprites, for allowing a default color to be applied to sprites.<br />
** Please note that, unlike sprites we had in the past that were based on vectorized glyphs inserted into a wingdings-like font, these sprites can be full-color to begin with.<br />
** The one "downside" is that these sprites can't be infinitely zoomed-in-on like a font, but that's hardly a downside given that we could render these crisply on an 8K monitor or more.<br />
** The default text colors are nice for purposes of things like resource icons that are embedded in text.<br />
<br />
* For now, ArcenFormatting has been updated to stop using the old font-based resource sprites, and now use the new TextEmbededSprite sprites.<br />
** This is a major jump up in quality in general. Also, now all of the resource icons properly match all throughout the GUI.<br />
** One thing to note, however, is that these sprites no longer inherit the color from their parent font.<br />
*** So, in order to match the text color properly, we needed to add ArcenExternalUIUtilities.GetStrengthIconWithColor_Wasteful(), which hits the garbage colletor, and ArcenExternalUIUtilities.WriteStrengthIconWithColor(), which does not (use the latter if at all possible).<br />
<br />
=== Main Menu Further Refinement And Expansion Logos ===<br />
<br />
* The planet that scrolls by in the background of the main menu sometimes has been removed, as it was having some glitchy effects on it that we definitely did not want. In the end, we don't really need the planet in order for this to be a very interesting scene as it is.<br />
** Thanks to Badger and others for reporting the problem.<br />
<br />
* The material properties of the main game logo have been updated substantially so that they look more natural in the light and shadow of the main game.<br />
** Thanks to Badger for suggesting.<br />
<br />
* The main menu now has logos for all three of the current and upcoming expansions, and they are more lit-up if they are on (installed and enabled).<br />
** If they are not installed or not enabled at the moment, then they show much darker, but still with reflectivity of lights passing by.<br />
** Videos made during the making of this: https://youtu.be/p73bPBFsgoI and followup: https://youtu.be/K-uvfTH9tgk<br />
<br />
* The AIWarExternalCode library now links against ArcenThirdPartyCode so that it's able to make changes to certain things in the front-end game.<br />
<br />
* The main menu now uses a hook to go in and find our custom BetterRotationScript on the background that spins the space skybox, and slows it down substantially compared to prior releases. This saves us the wait of a 40-minute rebuild process, and in theory actually would let us have a variety of random rotations if we felt like it.<br />
** Thanks to Badger and Asteroid for suggesting.<br />
<br />
* In fact, since we can, the rotation of the stars in the main menu is now entirely random, but at a much lower overall speed than it was before. It can rotate at a combined maximum velocity that is still only 3/4 of what the prior maximum speed was, and almost all of the time it will be vastly smaller than that.<br />
<br />
== Version 2.629 Ship Cap Hotfix ==<br />
(Released November 10th, 2020)<br />
<br />
* Corrected the OpenGL launcher script on GOG, thanks to GOG support (it was our error -- thanks to them for figuring it out!).<br />
** It appears that the issue didn't affect all flavors of linux, but it certainly did affect some.<br />
** Thanks to rudhek for reporting.<br />
<br />
* A simple typo was breaking all of the xml parsing for sub-lists of data of the following types (unless they had the requirement of IsUnique on): fint, arcenpoint, vector2, vector3, <br />
** Most of these were new or unused in general, but fint was not new and is used for the scaling of ship caps in the game, as well as for the engine stun seconds progression.<br />
** All of our other list parsing, which are more commonly used, were all working fine.<br />
** Thanks to Wuffell, ArnaudB, ThyReaper, and other for reporting.<br />
<br />
== Version 2.628 Mod Proliferation ==<br />
(Released November 9th, 2020)<br />
<br />
* Fixed a bug where the Tame Macrophage Hack was not correctly responding on certain Quickstarts.<br />
** In actuality, the Enraged subfaction was entirely missing from those quickstarts! Very bizarre.<br />
*** Thanks to Smidlee and Metrekec for the bug report and saves for testing, and StarKelp for fixing.<br />
<br />
* Fixed Cloaked Transport Flagships from starting fleets having the default transport direct tech upgrade costs instead of the higher ones that captured cloaked transports do.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Adjusted the amount of Combat Engineers Support Factories get for both starter fleets and captured fleets, balancing them a bit and bringing both spawned and captured fleets more in line:<br />
** Rejuvinator: 8-13 (starter fleet remains at 10)<br />
** Overloader: 4-7 (starter fleet changed from 3 to 6)<br />
** Everything else stays the same, but the Combat Factory starter fleet goes up from 6 to 8 engineers<br />
** This hopefully kills the bug where Combat Fleets spawn in with 2 Sentry Frigates too.<br />
** Thanks to NR SirLimbo for making these changes.<br />
<br />
* Added 2 more tiers to Metabolization and Greater Metabolization in preparation to additions to ESV.<br />
** To clarify: This is NO new types of Metabolization but simply new conversion ratios damage/shot -> Metabolization points. By default Gangsaws for example deal 10x as many Metabolization points as they dealt damage.<br />
** The new tiers are "BigMajor" for a conversion ratio of 5x, and "SupportWithoutDPS" for a conversion ratio of 50x.<br />
** Thanks to NR SirLimbo for adding.<br />
<br />
* Some minor buffs to Shark B<br />
<br />
* Fix a typo in the Mesopotamia planet list description<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
=== Included Mod Updates And Additions ===<br />
<br />
* For modders reference: rename BadgerFactionUtilityMethods to FactionUtilityMethods.<br />
<br />
* Disabled mods and/or expansions that are installed on your machine no longer temporarily show up as enabled for just a few moments during the initial load of the game. That was confusing.<br />
** The Settings from any installed-but-disabled mods and expansions ARE loaded, so that those can be kept properly if you are enabling and disabling mods over time, but those are the only parts loaded when they are disabled.<br />
<br />
* KM / AMU mod fixes:<br />
** Fixed a very strange bug about fireteam debugging where for some reason it couldn't find the Fireteam.GetDangerOfPath() function.<br />
** Hopefully fixed another very strange null ref exception in the Marauder LRP<br />
<br />
* Civilian Industries mod:<br />
** Fixed a bug where Fireteams were being rude and not letting civilians use their danger pathing code.<br />
** Optimized a few pieces of code to hopefully help with the performance issues some people have been recently having.<br />
<br />
* Fixed a literal 1-symbol-bug in Kaizers Marauders where they would not accumulate AIP but instead reset their AIP to the most recent increase.<br />
** This also lead to the discovery of a bug for the Debug Mode where Marauders produce and use real AIP that multiply AIP by the number of AIs present.<br />
** Thanks to ussdefiant60 for noticing.<br />
<br />
* New content for the Extended Ship Variants mod and its counterpart for Fallen Spire. Do note that the latter now requires the base ESV installed!<br />
** Extended Ship Variants:<br />
*** Added 4 new types of Transport Flagships: Engineering (hybrid between a stronger engineer and a transport), Vanguard (hybrid between a Vanguard and a transport), Tugboat (has small drones accelerating everything to at least 700 speed and can slow down enemies) and Target Painter (long-range beam that amplifies damage dealt to a single enemies)<br />
*** Added 3 more types of Mobile Factories: Metabolizing (launches Metabolizing drones), Rescue (creates rescue-beacons that can revive ships), Translocator (good AoE explosion that pushes small ships back and paralyzes them)<br />
*** Added 6 new mobile starter fleets with ESV ships and transports included into them.<br />
*** Added 5 new support starter fleets, 3 with ESV mobile factories and 2 with vanilla mobile factories that did not have a starter fleet before<br />
*** Buffed the Agile Transport: +25% speed on entering a new planet for 5 seconds, -50% damage if attacked from >= 5000 distance, 21 gx engine to resist Black Hole machines<br />
** Extended Ship Variants for Fallen Spire:<br />
*** New Transport Flagship: Cyber Command (reduced hacking response, much more expensive, much more fragile hull but decent shields)<br />
*** New Mobile Factory: Acidic (launches drones spreading acid onto enemies)<br />
*** New Mobile Starter Fleet: Hacker Fleet (designed to deal with AI hacking responses)<br />
*** New Support Starter Fleet: Combat Engineers and Acidic Factory<br />
<br />
* Increased the timer on Kaizer's derelict to allow for a longer time period to save him. Instead of 1% health per second he now loses only 0.3%, which grants 334 instead of 100 seconds time to save him if the player so desires.<br />
** From a discussion with SilverLight on Discord.<br />
<br />
* Updated Kaizers Marauders to be compatible with this new AIW2 version (no functional change) so players should be able to hop back in as soon as the update drops, without having to wait for an update of the mod in response to an update of the game itself.<br />
** Updated the source files on AMU.<br />
** Worth noting that the Civilian Industries mod did not actually need an update for this new version because it didn't happen to be using the features that changed. <br />
<br />
* Fixed a type mismatch now exposed through the new External Constant Loading in Kaizers Marauders: AIAlliedInvertedTechBonusFactor was declared as FInt, but loaded as int. Is now also declared an int so it works.<br />
** Curiously this didn't seem to have any impact on the mod in any way... Strange, but ok.<br />
<br />
* ExampleMod and ExampleMod2 have both been removed from the game, as they were utterly pointless at this point.<br />
** There are more and better ACTUAL mods of all sorts for you to look at if you're thinking of getting into modding.<br />
<br />
==== New Micro Mod Collection By NR SirLimbo! ====<br />
<br />
* Added the Micro Mod Collection mod to the off-by-default mods.<br />
* Currently adds:<br />
** 4 types of Distribution Nodes: 6m metal for 1 AIP, 45 hacking points for 2 AIP, 3k science points for 3 AIP, 4m metal/30 hacking points/2k science points for 4 AIP.<br />
** Energy Converters (10 for Home Command, 5 for every Economic Command Station) that convert 50k energy to 150 metal/second<br />
** Research Expedition: Mobile science/hacking gatherer that can speed up gain on owned planets but also extract from allied/neutral worlds, scout adjacent planets and at higher levels decloak/cloak itself. Fragile, high-priority target for the AI, producing 20 AIP on death.<br />
** Reinforcement Seeder: AI ship dropping Minor Reinforcement Warp Gates that increase planetary reinforcements by 5% per gate.<br />
** 3 types of AI Command Stations with escalating levels of strength: Gravitic (slow aura), Tachyon (decloaking aura) and Pulsar (periodic paralysis aura).<br />
* Balance and general feedback required and sought after!<br />
<br />
=== Work To Allow Arbitrary Sprites In Game Text, Part 1 ===<br />
<br />
* Added a working testing project for altering TextMeshPro, while retaining compatibility with all the various unity scenarios in which we use it.<br />
** Attempted three different ways of updating it to have new sprite embeds, but so far those methods were all a bust. Going to try another method of injecting our own sprites, instead, and for that we need to start basing our things on having some sprites and then shoving them in. Thankfully we have a nice little isolated test project for this, which now has some added info in it.<br />
<br />
* Added some code in ArcenXml that lets us parse xml directly from TextAssets, mainly for testing.<br />
** This is also used now in parsing the sprite dictionaries that we are creating via TexturePacker.<br />
** Also set things up so that we can now have sprite dictionaries that are a single sprite loaded directly from a unity-style sprite with borders, etc, intact.<br />
*** This is useful for some of the other new icons-in-text that we want to do.<br />
** The general purpose of this is partly for test loading sprites of two different categories in a way that we can start trying to get them into TextMeshPro programmatically, but this also would be used long-term once the testing phase is past.<br />
<br />
* Made a change that makes it so that if a sprite material is destroyed (such as one that was created at runtime in the unity editor) it will now just display as a blank image rather than throwing errors inside TextMeshProUGUI. This is mostly helpful for our own internal testing of our injection of our custom sprites into TextMeshPro's rendering pipeline.<br />
<br />
* References to ArcenSprites are now stored on their parent ExternalIconDictionary.<br />
** We never needed this before, but now that we are translating entire dictionaries into use for TextMeshPro, it's a thing.<br />
<br />
* TextMeshPro has been expanded to allow for us to inject our own images at runtime, from any source (not just Resources, but rather asset bundles and whatever else).<br />
** We can inject unity Sprite objects, unity Texture2Ds, and our own custom ArcenSprites in their entire ExternalIconDictionary.<br />
** This new capability is set up so that we can also control things like how they are scaled and offset, and essentially how the kerning works.<br />
** Whether we use all those features or not is not really relevant, but it's good to have options.<br />
** This is far more powerful than our old method of drawing images in text in TextMeshPro, which was limited to a special "Arcen Icons" font where we had vectorized some of our icons into a font format and were using that to draw icons.<br />
*** In some respects that was nice because that gave us infinite zoom on those icons, and now we're using raster images with a fixed maximum resolution, but those other icons really did not behave well when it came to trying to line up with varied fonts. Often the offsets and kerning were terrible, and updating them at all required a rebuild of the central game executable, which is time-consuming to say the least (that's about a 40 minute wait).<br />
** This new approach allows for images to be inserted into text by mods, let alone just our own code.<br />
<br />
* We don't yet have the new TextMeshPro stuff integrated into the main game, but it should be tomorrow.<br />
** For now, we've got our new data formats and are testing the last of the capabilities we need, and trying to make sure that our sprite dictionaries translate properly to theirs, which is so far not quite working right but getting close. Single images are working great.<br />
<br />
=== Giant Overhaul Of Xml Parsing For Accuracy And Speed ===<br />
<br />
* exclude_children_from_copy was not an xml feature we were using, and it was slowing down xml parsing in general, so we've removed it.<br />
<br />
* The way that child nodes and attributes are determined to NOT be copied in xml is now vastly more efficient, and doesn't involve any GC churn.<br />
** This should lead to more accuracy when we pair it with some other changes, as well as faster loading times in general once we finish with our changes.<br />
<br />
* Really substantial xml processing speed improvements during game load. These have to do with our checks to make sure that the xml is correctly formatting and we are importing all the proper nodes.<br />
<br />
* The way that attribute-checking is logged and verified is now vastly more efficient than it was, so again loading is faster in the initial part of the game.<br />
<br />
* The xml parsers that were able to give back a list of children no longer do; there are instead DoForChildren methods that don't require a hit to the garbage collector, and which also make it so that they don't have to be wrappered more than once.<br />
** This is substantially more efficient in several ways.<br />
<br />
* Instead of copying xml attributes and nodes from parents to children in partial records and copy-from records, these are now linked, and calls like GetBool() and similar are able to process through them much faster and with accuracy.<br />
<br />
* Added a new EqualsCaseInvariant() overload to strings based on ArcenUniversal.<br />
** It turns out that this is very slightly more efficient than doing a ToLower() and comparison to the lower-case version.<br />
<br />
* Our xml parsing now gives visible errors when trying to parse integers that are not valid integers. Before, it was just failing silently and returning the default value.<br />
** GetInt32List was removed from our xml parsing, as it was inefficient and not something we've been using in AI War 2 in general. This was generally used in some of our older titles.<br />
*** Same with GetInt16List, GetByteList, and GetFloatList.<br />
** Also, a variety of duplicative methods that were concerned with complaining if a value was missing-or-default have been folded into the main methods for getting from xml. We also now only complain if the value is outright missing, as in basically any case where the default value is specified that is an intentional thing.<br />
*** We have now removed the ComplainIfAttributeNotFound() method, since that was only used when we were looking at complaints about "missing or default, but actually default is fine." This makes for far cleaner code.<br />
<br />
* Our xml parsing of vector3s is now much more efficient, although we do not process those very often anyway.<br />
** Our xml parsing of FInts is now a bit more efficient, and that is processed extremely often.<br />
** Our xml parsing of enums is now a bit more efficient, and more normalized (same with FInt actually), as these are processed very frequently.<br />
*** One change that may affect mods is that FillEnumIfPresent has been removed, and is now just FillEnum. Assuming you pass in false to ComplainIfMissing, it will act as you previously experienced.<br />
*** Another is that FillEnumAndComplainIfDefault has been removed, so now you'd just use FillEnum and pass in ComplainIfMissing as true.<br />
**** This is technically a difference in functionality, because this only checks to see if something is missing, not if it has a default value (usually None or whatever).<br />
**** Generally speaking, our experience has been that if someone sets up a default value in xml explicitly, then they probably have a reason to do so. We've been having to work around this with reading in xml in general, and now it doesn't complain about explicitly-set defaults with other data types, either.<br />
**** This should not negatively affect anything current, as any xml that was "invalid" by the old standard would have been complained-about already and preventing clean game launch. Any new xml that is created in such a fashion is probably on purpose.<br />
*** We also got rid of GetStringAndComplainIfMissing(), which had basically the same sort of issues. Just use GetString() or FillString() and complain if it's missing, but if someone sent in an empty string from xml, they probably meant to.<br />
<br />
* The way that we were previously handling "custom data sets" on xml rows was incredibly slow as well as kind of brittle, particularly when it came to modding.<br />
** This is seeing an entire rework, with the pattern for getting custom data becoming far simpler (but also more powerful, as mods and copy-from and partial records will now work correctly in all cases).<br />
** First of all, the CustomDataSet class and all its methods have been removed in general. ParseCustomDataIntoSet() and GetCustomAttributeNames() have also been removed. Also the CustomDataLookup class.<br />
** Custom attributes are instead something that code is able to parse as-needed later on from the xml, and the "requested attributes" code just ignores anything that begins with "custom_"<br />
<br />
* The ExternalCoreConstants, which was not actually used for anything, has been removed.<br />
<br />
* Vector2 xml processing is now consistent with Vector3, whereas before it had only a subset of the capabilities.<br />
** Same with ArcenPoint.<br />
** AngleDegrees has instead just been removed, as it's not something we use and we can store that in different formats more easily.<br />
** Loading DynamicTableRows from xml has also been given full parity, and in addition to that they are now able to take empty commands now to set null instead of the prior row reference. This is a new ability.<br />
<br />
* We were previously using various forms of XmlElement (which is a built-in-class) manipulation in order to handle copy-from and partial records cases.<br />
** This was not appearing to work as expected, and at any rate is generally something that is probably pretty slow.<br />
** We are removing our TotallyReplaceContentsOf, CopyAttributesIntoBlanksOf, and CopyChildrenTo methods entirely.<br />
*** The CopyChildrenTo, which affects child nodes, had some notable strangeness that it was overcoming when nodes were being copied from one document to another (aka two different xml files). We just don't need that sort of hassle.<br />
<br />
* The ArcenXMLElement RawElement entry on ArcenDynamicTableRows has been renamed to be OriginalXmlData instead. <br />
** This is far more clear, and is going to be very key for the later forms of parsing that we're doing.<br />
** ArcenXmlElements now have private DirectParentsICopiedFrom and PartialRecordsLaterAppliedToMeInOrder variables that get set as-needed. Internal processing handles these properly so that end-user modders or developers don't have to think about these details.<br />
*** These help to ensure that data is applied in the correct order, as intended, and that the data can be reconstructed as needed.<br />
** HasAttribute() has been removed from ArcenXMLElement, and instead we have GetMostRecentAttributeValueIncludingParentsAndPartials() and GetMostRecentAttributeValueFromSelfOnly().<br />
*** This will seem inconvenient in a variety of places for modders, but it saves us a ton of extra read calls into a potentially expensive method (especially now that we properly handle xml inheritance). Just read the value once, if it's a string, and if it's blank or null then that's your answer. Or use any of the fill methods and just say you don't mind blank entries (or only do if it's not a partial record, your choice). It will fill things properly.<br />
** During the read of nodes, it now causes either RegisterMyDirectParentsICopiedFrom() or RegisterAPartialRecordAppliedToMe() to be called, and/or OriginalXmlData to be set.<br />
*** From looking at this, in the past versions, most likely OriginalXmlData (aka RawElement) was probably being overwritten improperly once a partial record was applied, and this was probably where our errors were coming from in parsing certain mods.<br />
** Additionally, if a single xml record is defined as being both a partial record and a copy-from record, it will now throw an exception. That should not have actually been the case on any, but now it should check on them properly.<br />
<br />
* On ArcenAbstractExternalData and its descendant classes, like ExternalConstants for instance, there is now an ArcenXMLElement OriginalXmlData property.<br />
** This one works just like the one on rows, although in this case it's just used for partial records, mainly (there are not child nodes, and there's only one root node in these files).<br />
** This then lets us make direct calls to GetCustomFInt_Slow() on the ExternalConstants singleton and similar in order to get "custom" xml data that is added belatedly, as we see for a lot of the faction data and mod data.<br />
** This particular change will require changes to most mods, as the CustomData by namespace and all that is replaced by far more direct and efficient calls here, now. Though if the results are checked with any frequency, you should still be caching them for sure.<br />
** We are using wrappered methods, rather than giving direct access to OriginalXmlData, in order to control error handling and make sure that if your mod is looking for a field and fails to find it, it will yell.<br />
*** Bear in mind these particular fields are not found at game launch, but rather whenever the faction or mod initializes. So typos are likely to be cause errors during first unpause with a faction present, rather than during load of the initial game like everything else.<br />
*** The extra error handling that is in this is absolute crazy, incidentally, so if you're not getting the result you expect, then you automatically get an entry in the log with the details of what was present so that you can figure out what your typo was.<br />
<br />
* With external constants and similar dictionaries, it now ensures that the base data is now read in before any partial records are read.<br />
** It seems like someone was referring to this being hard to mod, and this would likely solve that. At any rate, with our new more-strict reading this also became needed in general.<br />
<br />
* With the new XML parsing, the game does a far better job of reporting problematic data from xml (aka something like a floating point number being imported into an integer field).<br />
** Why this was not working properly before is a bit of a mystery, but it works now, which is the important thing.<br />
** There were several bits of rogue data that we've thus fixed, including the amount of extra intensity the scourge gets from human science amounts. This may have some balance impact on the scourge, as those values were probably previously reading in as zero.<br />
<br />
* Full list of data fields now corrected that were previously not reading in properly and thus probably affecting faction performance in some fashion:<br />
** Scourge difficulty:<br />
*** AllowedBuildersIncreasePerScienceUnit (was always 0 because of type mismatch)<br />
*** BuilderIncomeIncreasePerScienceUnit (was always 0 because of type mismatch)<br />
*** SpawnerIncomeIncreasePerScienceUnit (was always 0 because of type mismatch)<br />
** Human Resistance Fighters<br />
*** RatioForFriendlyPlanet (was always 0 because of a typo - RxatioForFriendlyPlanet)<br />
<br />
* In the event of partially-mangled data from entity systems, the game now does a bit better job of reporting clearly what the problem is with the xml and setting some general defaults rather than just starting in a completely invalid state.<br />
** This is most notably with a missing range being set on a system.<br />
** Additionally, we've added a new WriteSystemDataToLogDueToError() onto GameEntityTypeData, to let us see what the state of all systems on an entity are when a problem arises.<br />
<br />
* There was some funkiness in how some of the passive systems were looking for ranges that they did not need to have, in ComputeBalanceStats_OneTimeOnly(). Those have been corrected/<br />
** This is a case where we wonder how this was not causing errors in the past, but whatever. Again, it works now.<br />
<br />
* Further cases of fields that had malformed xml and thus did not read in properly:<br />
** Settings:<br />
*** Windowed Mode Window Height maximum (typo of case Max instead of max led to it being infinite rather than 7000).<br />
*** Kaizer's Marauders Marauder_DebugID, same typo of Max.<br />
*** Hidden field of FullscreenHeight, same typo of Max.<br />
*** Kaizer's Marauders Marauder_FireteamDetailLevel, same typo of Max.<br />
** AI Types:<br />
*** SimpleEnsemble was not having its type_Difficulty read in, because it should have been type_difficulty<br />
<br />
* The game now allows any fullscreen resolutions that your OS/hardware reports as being available.<br />
<br />
== Version 2.627 Hotfix ==<br />
(Released November 5th, 2020)<br />
<br />
* Hopefully make Warden fleet ships less likely to turn to the Hunter when in combat<br />
** Noticed by a lot of people<br />
<br />
* Make reconquista a bit less one-dimensional.<br />
<br />
* Fix a bug where the galaxy map was showing the wrong faction colour for enemy units.<br />
<br />
* Fixed a bug in the prior version where the scrollbars and scrolling in any dropdowns was not working.<br />
** Thanks to JonnyH13, Karchedon, and Badger for reporting.<br />
<br />
* The selected status of the stance buttons in the bottom left of the screen have been adjusted once again in order to be dimmer and less distracting.<br />
** Thanks to Metrekec and crawlers for reporting.<br />
<br />
* Balance Adjustments to Kaizers Marauders:<br />
** Changed the budget income modifiers per intensity to be based off the 0.4 + (AI income/1.5):<br />
** Also increased higher-intensity base defense buildup cap: Medium Intensity from 40 strength to 50 strength, High Intensity from 70 strength to 125 strength to make them more defensive.<br />
** When their budget was increased gradually to compensate for the high growth of strength that high-ranking AIs had it made them too powerful when fighting lower-intensity AIs.<br />
** Now, hopefully, Kaizers Marauder intensity roughly follows the same scaling as AI difficulty, but lower ranks are still supposed to expand further and by comparison are stronger.<br />
** When picking the intensity for Kaizers Marauders I suggest: Think about their most likely adversary (the AI) and their difficulty as a base line, potentially increase to compensate higher-difficulty AI types and other minor factions to fight.<br />
** Kaizers Marauders definitely need balancing feedback!<br />
<br />
== Version 2.626 Kaizer's Marauders ==<br />
(Released November 4th, 2020)<br />
<br />
* Underlying mechanics now available for mods, but not used by any units at the moment:<br />
** Added the Classic (AI War 1 style) Hydra regeneration and Hydra Head mechanics.<br />
*** Regeneration is done with: seconds_to_fully_regenerate_hull="" and starts after the normal repair delay.<br />
*** Hydra Heads are done with build_points_per_damage_taken="" and unit_to_make_with_build_points_from_damage_taken=""<br />
*** A head will spawn when build points = total health, / current mark + 1. So a MK1 unit will spawn 1 head at 50% health, a MK2 will spawn every 33%, MK3 every 25%, so on.<br />
*** Current bugs with Hydra Heads: Build points are not serialised and so are lost on load. If a unit with a damage bonus shoots one of these, only the base damage adds to Build Points, not the bonus.<br />
** Thanks to Puffin for adding this.<br />
<br />
* Drone Fleets (Support Fleets, but most importantly Hive Golems) will now load their drones if ordered so even if enemies are on the planet left.<br />
** Thanks to NR SirLimbo for implementing.<br />
<br />
* Journals now allow for the insertion of [playername] in them.<br />
** Thanks to Badger for adding.<br />
<br />
* The FRS now uses a different icon from ARS, to avoid confusion and make it clear what is what.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Combat Factories of all sorts no longer use normal drones like before (those aggro guard posts in an annoying way).<br />
** Instead, hidden drone launchers trigger if there are enemies within a certain range of the combat factories. Letting them defend themselves, but not aggro enemy guards just by being on their planet.<br />
** It's worth noting that existing savegames will still have both kinds of drones present -- those in the fleet, and those from the launchers. So they will be double-powerful but still annoying. Any new campaigns will just have the launchers properly.<br />
** Thanks to several people for bringing up this issue with combat factories, and Puffin for helping fix it.<br />
<br />
=== UI Reskinning Part 4 ===<br />
<br />
* There are still some little things we want to do with the UI, mostly in the "nice to have" category. The general overhaul is complete, in terms of improving things that were already there.<br />
** There are a VERY few cases where the old resource icons are used in text, but that should still be easy enough to figure out. We're going to sort that out with new icon-embedding capabilities sooner than later.<br />
<br />
* Fixed an issue where the border bar on the selected ships window would move up and down as that window got larger or smaller.<br />
** Thanks to Badger for reporting.<br />
<br />
* The glowing states of the following icons in the new UI has been dimmed some:<br />
** Attack move (leftmost item), pursuit mode, stop and shoot mode, hold fire mode, scrap button. Group move has been left alone.<br />
** Thanks to Metrekec, crawlers, and Isiel for suggesting.<br />
<br />
* We missed updating the map tab left panel in the lobby, but it now has a proper background and fonts.<br />
<br />
* Updated some prefab buttons so that things like the font in the Tips window now use the expected new font.<br />
<br />
* The visual style of dropdowns in the game has been updated to match the new style of buttons and other elements, and looks much more sleek.<br />
<br />
* The visual style of horizontal sliders in the game has also been updated to match the rest of the new stuff.<br />
<br />
* The tooltip backgrounds have in general been updated to look more like the rest of the new UI.<br />
** We are opting not to do specific graphics for the planets versus the ships, at least not built into the UI panels per se. We'll handle that stuff via image insertion in text, most likely.<br />
<br />
* The icons for metal harvesters, and energy generation sources, have been updated to the new icons.<br />
** Same with science (not used as a ship icon anyhow) and "metal to energy," which is.<br />
<br />
* Color improvements to notifications in the top bar.<br />
** Essentially, notification colors being based on the faction that is discussed is something that looks like it means something else. It looks like red is extra bad, or things like that. We are using color to mean something with the backgrounds and icons up there, and so the text also having color is just problematic unfortunately.<br />
** We are largely moving the color that was on the text to instead be in the tooltip text.<br />
** Astro train faction color moved from notification text to tooltip text for notification.<br />
*** Ditto Dark Spire VG notification, although the timer colors are still there.<br />
*** Ditto Dark Spire Loci notification.<br />
** Things were fully changed with the color from the tooltip for the Dyson Antagonizer.<br />
*** Ditto exostrikes.<br />
*** Ditto exogalactic wormholes.<br />
*** Ditto AI eyes.<br />
*** Ditto raid engines.<br />
*** Ditto instigator bases.<br />
*** Ditto Zenith Trader.<br />
*** Ditto macrophages.<br />
*** Ditto AI relic trains.<br />
*** This was done previously for the Devourer.<br />
*** Relic search was already fine.<br />
*** Debris was already fine.<br />
*** Imperial Spire was already fine.<br />
*** Brownout was already fine.<br />
*** Nemesis was already fine.<br />
*** DLC2 AT civil war was already fine.<br />
*** DLC2 Nm were already fine.<br />
*** DLC2 Zm were already fine.<br />
*** DLC2 Zb were already fine.<br />
** AI Reserves are keeping their colors for now, in their countdown timer, but if it looks bad or you have feedback on them, please let us know with a savegame.<br />
*** The same is true for counterattacks. Additionally, the icon on these grays out when the counterattack is stalling. This may be confusing people, so we may change this up some.<br />
*** The same is true for hacking notifications. Please let us know if the timer colors look tacky, but the faction bit got moved.<br />
*** Also same for risk analyzers.<br />
** The planet attack notifications actually show the colors of the attacker and the defender, so keeping those makes a fair bit of sense. Let us know if it looks awful sometimes.<br />
** DLC2 AT warnings had some mild colorization based on severity, but we were already handling that with the background in recent versions, so the text color is now just always white.<br />
** Overall we need to do more things with the notification icons themselves very soon. This has been on our list since prior to DLC1.<br />
<br />
=== Additional Space Backgrounds By Puffin ===<br />
<br />
* Thirty new space box backgrounds for planets created by Puffin have been added to the game.<br />
<br />
* Six new space box backgrounds for the galaxy map created by Puffin have been added to the game.<br />
<br />
=== Revised AIP Mark Level Thresholds By Difficulty ===<br />
<br />
* The AIP amount required for an AI to go to a higher level used to be as follows: https://bugtracker.arcengames.com/file_download.php?file_id=15174&type=bug<br />
** We are making the following changes:<br />
*** Mark 3:<br />
**** Diff 4: 295 from 305<br />
**** Diff 5: 275 from 295<br />
**** Diff 6: 255 from 285<br />
**** Diff 7: 235 from 275<br />
**** Diff 8: 215 from 265<br />
**** Diff 9: 195 from 255<br />
**** Diff 10: 175 from 245<br />
*** Mark 4:<br />
**** Diff 4: 470 from 480<br />
**** Diff 5: 450 from 470<br />
**** Diff 6: 430 from 460<br />
**** Diff 7: 410 from 450<br />
**** Diff 8: 390 from 440<br />
**** Diff 9: 370 from 410<br />
**** Diff 10: 380 from 420<br />
*** Mark 5:<br />
**** Diff 5: 650 from 670<br />
**** Diff 6: 650 from 660<br />
**** Diff 7: 640 from 650<br />
**** Diff 8: 620 from 640<br />
**** Diff 9: 600 from 630<br />
**** Diff 10: 590 from 620<br />
*** Mark 6:<br />
**** Diff 5: 810 from 820<br />
**** Diff 6: 800 from 810<br />
**** Diff 7: 790 from 800<br />
**** Diff 8: 780 from 790<br />
**** Diff 9: 770 from 780<br />
**** Diff 10: 760 from 870 (the original was an error in general)<br />
*** Mark 7:<br />
**** Diff 6: 1100 from 1110<br />
**** Diff 7: 1080 from 1100<br />
**** Diff 8: 1060 from 1090<br />
**** Diff 9: 1010 from 1080<br />
**** Diff 10: 980 from 1070<br />
** Thanks to Ovalcircle for reporting the discrepancy, and to Badger for suggesting these numbers get a bit of a look in general.<br />
<br />
=== New Included Mods By NR SirLimbo ===<br />
<br />
* Uploaded the AMU (AI War 2 Modding Utils) and Kaizers Marauders mods.<br />
** Kaizers Marauders is a new spin on an old faction gone, for lack of a better word, insane. Expect an entirely new Marauder minor faction with its own unique ships, turrets, superstructures, new and improved raiders and tons more. The forum thread is here: https://forums.arcengames.com/ai-war-ii-modding/mod-kaizers-marauders/<br />
*** It started out as a request to the AIW2 devs to include journals. So I wrote some mods. Months later it's turned out to be a full rework with TONS of special stuff added and everything is in - except for a hand full of journals. Wow.<br />
*** Some highlights: Unique Marauder ships, turrets, forcefields, etc. Most of these can be acquired by the player for themselves.<br />
*** Some featured mechanics: A realistic metal economy, defectors, super-smart fireteams, tech upgrading, and even an alternate victory condition.<br />
*** For more check the forum thread.<br />
** AMU is a requirement for Kaizers Marauders and consists out of modding functions to be used by various other mods, even further reworks I'm planning todo, as well as any other modder. It will get a full documentation and forum thread, but for now simply ping me on discord (-NR-SirLimbo) for debugging it. A partial documentation is already distributed, along with the C# project itself.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed Lone Wolf fleets being excluded from the ability to load ships. If for whatever reason (mostly mods) ship lines end up in Lone Wolf fleets they will now obey loading/unloading orders entirely and not hug the centerpiece perpetually<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Updated StarKelp Civilian Industries for the latest version of the game.<br />
* Fixed a race condition that could occur when setting militia caps.<br />
** Thanks to various people for reporting, most notably SirLimbo.<br />
<br />
* Fixed multiple places not having reservations for Lone Wolf fleets (both officer and golem):<br />
** CalculateContentsCount(bool IsForNetworkSyncCheck)<br />
** CalculateHasAnyContents()<br />
** GetStrengthOfContentsIfAny()<br />
** GetEnergyCostOfContentsIfAny()<br />
** Noticed and fixed by NR SirLimbo when unloading a fleet of Kaizer's Marauders-boarded ships began to cause brownouts...<br />
<br />
* For Extended Ship Variants: Fixed the Strike Wing having its damage bonus based on target time on planet, not its own time<br />
** Thanks to zeusalmighty428 for wondering why it was raid tech<br />
<br />
* Put in a fix for various of the new shaders for UI glows logging "doesn't have _Stencil property" warnings logged into the player.log.<br />
** We aren't actually using this property, but then again we're not allowing for these buttons to interact with stencils and masks and so don't need it.<br />
** Thanks to Puffin for noticing this.<br />
<br />
== Beta 2.624 Revised Resource Bar ==<br />
(Released October 30th, 2020)<br />
<br />
* When AI units with Metabolization kill something, the AI now uses its extra metal to boost its reinforcement budget<br />
** Prompted by a discord conversation led by TechSy730<br />
<br />
* Tsunami CPAs are now the default.<br />
<br />
=== Roguelike Changes ===<br />
<br />
* By default, the Esc menu no longer tells you what factions are in the galaxy until you actually encounter them in game. The goal is to give the game a stronger feeling of exploration and finding the unknown. <br />
** You can have the old behaviour by enabling the Always Show Factions option under Scouting in the game lobby<br />
<br />
* Add a new Quickstart, "The Rogue Badger" taking advantage of this. You won't know what factions are in the galaxy till you find them<br />
** Please don't load this quickstart into a game lobby or it will ruin the surprise.<br />
<br />
=== Quality of Life ===<br />
<br />
* In an ARS, GCA or fleet you could capture, the number of ships for a given ship line is now coloured to let you know how good the roll was<br />
** If the number is a bright green you rolled close to the upper-end of ships you could have. If its a dark green, you rolled closer to the lower end.<br />
*** Only applies to newly started games<br />
** Thanks to ParadoxSong for pointing me in this direction<br />
<br />
* Capturable flagships adjacent to the player homeworld will always get good RNG with how many ships it has. <br />
** The goal is to make sure the player gets something to be excited about early. Also to make it harder to have games that are screwed by bad RNG<br />
<br />
* The selection window now shows the strength of the selected units<br />
** Thanks to TechSY730 for suggesting<br />
<br />
* Improve the hovertext for factories for more clarity. The name of the fleet now indicates how many losses it needs to rebuild<br />
<br />
* Improve the AI Reserves notification<br />
** If there are no wormholes spawned, it gives you the countdown of seconds until a wormhole spawns<br />
<br />
* Autosaves are now in a more readable format<br />
<br />
* The objective hovertext for ARSs is now in a better style<br />
<br />
* If you double-click a fleet's keybinding while in the galaxy map, it now centers the galaxy map at that fleet<br />
* Clicking a Planet Under Attack notification from the galaxy screen, it now centers you on that planet<br />
** Thanks to Vortex for these two bug reports<br />
<br />
=== UI Reskinning Part 3 ===<br />
<br />
* The bottom left icons on the main screen are no longer quite as glowy when you are not hovering over them. They light up the same amount while hovered, though.<br />
** The idea is to make it less visually distracting when you are just checking the game clock.<br />
** Thanks to Badger for suggesting.<br />
<br />
* The ship selection UI has been updated so that the icons are the same as before, but they now have similar glowy appearance to the buttons in the bottom left of the screen.<br />
** The "hotkey indicators" are now colored to match the button's general highlighted color, but the baseline color is now that same dull blue rather than bright white like it was before.<br />
** When these are highlighted, they now glow brightly in their specific color, and if they are moused over the same thing happens.<br />
<br />
* The sidebar backgounds have been reworked to better function with the different heights that they can all have, rather than looking really wrong and off when stretched.<br />
<br />
* In the top bar, the galaxy map icon has been reworked, and now looks like a galaxy rather than a map pin. It also now glows and reacts to mouseover.<br />
** The hover for the planet name now also highlights the background of that button in the top bar in general.<br />
** The metal icon has been replaced (anvil becomes metal pieces).<br />
*** Note that metal harvester icons still need to be updated, and metal icons in text.<br />
** The energy icon, and science icon, and hacking icon, and threat icon have also all been updated.<br />
** The old threat icon is the new AIP icon.<br />
** Thanks to Badger, Puffin, -NR-SirLimbo, Tzarro, and zeusalmighty for all helping figure these out.<br />
<br />
* The various fonts in the sidebars have been updated to be more legibile at smaller sizes in particular.<br />
** Some were returned to the way they previously were, others are new.<br />
** Thank to Strategic Sage for reporting the grainy appearance and eye fatigue with the other new bits we tried.<br />
<br />
* In the top resource bar, all of the text and numbers are in a new font that is a bit clearer and quicker to read.<br />
** In times where the metal would say "Starving" in the past, it now says "Drain" to save space.<br />
<br />
* The hacking and tech sidebars now use the correct image, and also react to hovering with a glow.<br />
<br />
* The background from the load menu has been kept the same, but is now vastly darker rather than being bright and in your face.<br />
<br />
* The background for the save menu has been made to match that of the load menu, and is also now darker like the other one is. The other one was particualrly tacky and distracting.<br />
<br />
* Fixed a minor issue with the notifications not being properly rounded up in the top area.<br />
<br />
* The game has been updated to actually set and use the fancy new priority level backgrounds for the notifications in the top bar.<br />
** Bear in mind that this is something that we may tune over time based on feedback, in terms of what gets what notification priority level.<br />
** The notifications are now sorted by priority level from OMG, major, medium, minor, informational, and then hacking, prior to whatever the rest of their sorting would be.<br />
<br />
* Wave notifications (of various sorts) now have the following notification levels:<br />
** All CPAs are major for now.<br />
** Any waves against not-a-player that are shown are considered minor for now.<br />
** Reconquest waves are all major for now, unless they are not aimed at the player.<br />
** If a wave isn't one of the above and also is not targeting a planet, it's considered minor for now.<br />
** If a wave is headed to a planet, but that planet isn't allied to the local faction or has no owner, considered minor for now.<br />
** If the wave is weaker than 2/3 of the combatants friendly to the local faction at the planet, then this is minor.<br />
** If the wave is stronger than 200% of the combatants friendly to the local faction at the planet, AND this is a player home planet then this is OMG.<br />
** If the wave is stronger than 150% of the combatants friendly to the local faction at the planet, then this is major.<br />
** Otherwise this wave is considered a medium priority.<br />
<br />
* Regular notifications that are created by whatever other means are now required by code to specify their priority level when they are being created.<br />
** Those shake out as follows for now:<br />
*** AI Reserves notifications are always major for now, given reports on the difficulty of these by players lately.<br />
*** Dark Spire vengeance strikes and loci are medium and major respectively.<br />
*** Dyson antagonizers are major.<br />
*** Nanocaust frenzies got removed from the code, since those aren't a thing since fireteams anyhow!<br />
*** Wormhole Invasions are always OMG level at the moment, we may adjust this.<br />
*** Devourer Golem is informational if it's on a planet that is not owned by anyone or which is not friendly to you. It's minor if it's on a planet of you or ally.<br />
*** Zenith Trader is always informational.<br />
*** Hacking events are hacking priority.<br />
*** Spire Relic Train is informational, and so are risk analyzers.<br />
*** Spire relics and debris are also informational. Same with imperial spire.<br />
*** Brownouts are OMG.<br />
*** Macrophage of 4 or more are medium, less than that are minor.<br />
*** Enemy nemesis is OMG, allied is now shown for the first time and is informational.<br />
*** DLC2 NP move is informational.<br />
*** DLC2 AT expansion is medium, civil war of it is major.<br />
*** DLC2 ZM mnrs > 0 is major, just probes is medium.<br />
*** DLC2 ZB are medium, unless all are in flight in which case are informational.<br />
*** When your planet is under attack, the priority is normally medium, unless:<br />
**** If it's a human homeworld, and enemies outnumber you and allies, then it's OMG.<br />
**** If it's a human homeworld, and enemies are more than 50% of your strength, then it's major (just in case).<br />
**** If it's a human homeworld, and enemies are less than 10% of your strength, then it's minor.<br />
**** On non-homeworlds, if you and allies are outnumbered 2:1 in strength, it's major.<br />
**** On non-homeworlds, if enemies are less than 50% of your strength, then it's minor.<br />
*** Exo strikes are major until they are 95% charged, at which point they turn OMG. MDC exos no longer exist (they do something cooler), so the code for that is just scrubbed.<br />
*** Raid engines are medium, unless they are targeting a non-player faction in which case they are informational.<br />
*** AI Eyes, since they don't spawn anything, are rated minor.<br />
*** Counterattacks are:<br />
**** Minor if they are stalled<br />
**** Still minor if the strength of the counterattack plus all local enemies at that planet is less than all the local allies and own ships at that planet (aka you are outnumbering even if the counterattack launches).<br />
**** Major if the strength of all those enemy forces noted above is at least twice what the allied local forces mentioned are.<br />
**** Medium if it's in the middle range.<br />
*** Astro Trains are generally minor, but if one is headed to a depot that does something once X number of trains have reached it, and there X-1 trains have already reached it, then it jumps up to major.<br />
*** Instigators are generally medium, but if a given instigator has done its thing at least four times, then it upgrades to major status.<br />
** Huge thanks to zeus for suggesting most of these, and Badger for helping figure out details, and Ovalcircle and DEMOCRACY? DEMOCRACY! for helping a ton also. And Puffin!<br />
<br />
* GetIsHostileTowards(), GetIsNeutralTowards(), and GetIsFriendlyTowards() on the planet faction now take in variants with a faction directly.<br />
<br />
* On planets, there is a new GetStrengthOfFactions_HostileTo() that gets the strength of all enemies of a faction at a planet.<br />
** There is also a GetStrengthOfFactions_FriendlyTo(), which lets a faction include itself in that total or not, as well.<br />
** There is also a new GetStrengthOfFactions_Self() that gets it just for the faction in question.<br />
<br />
* Fixed a pair of typos with astro train journals not firing properly.<br />
<br />
* The devourer golem no longer shows its warning with the color of its faction directly in the notification. That blends really poorly now in general.<br />
** In the tooltips it will now show that, but with deep blue in the tooltip it was a blurry smudge. We will have to make some more changes to notifications over time to make this all more clear.<br />
<br />
== Beta 2.622 Hangar Ship Diversity ==<br />
(Released October 28th, 2020)<br />
<br />
* Fix a typo in one of the Tips for returning players<br />
** Thanks to Breach for reporting<br />
<br />
* One can no longer manually click on a ship with active repair-delay and get your engineers to repair it<br />
** Thanks to Arides for reporting<br />
<br />
* Exos that are being sync'ed with Wormhole Invasions or CPAs now always have a notification<br />
<br />
* Slightly improve the nanobot center hovertext<br />
<br />
* The Esc menu now shows the "Display Name" of the map type instead of the "Internal Name"<br />
<br />
* Slight buffs to the AI on intensity 10. The goal is a bit more raw power.<br />
<br />
* Fixed a bunch of cases of "address" being spelled with three Ds.<br />
** Thanks to Ovalcircle for reporting.<br />
<br />
* CPAs are now a bit smarter at detecting when they planet they were going to is no longer relevant. CPAs for higher difficulties (AI difficulty >= 8) are now better at focusing their forces.<br />
<br />
* Add a new Game Lobby setting to prevent Beacons from spawning in the game<br />
** Intended for people trying for Pure 10 runs, and for anyone who hates beacons<br />
<br />
* Add a setting for 'Hide Undiscovered Factions from Esc menu'.<br />
** This is mostly for people who like surprises and have a poor memory of what was going on in their games<br />
<br />
* If some piece of UI doesn't load properly, the main menu should no longer freak out and throw endless errors.<br />
<br />
* If you are adding a new faction in the game lobby and that faction has the same FactionCenterColour as an existing faction, the new faction gets a random colour<br />
<br />
=== Astro Train Changes ===<br />
<br />
* Astro Trains now count as 'Large Ships' for the 'planet in combat' notification hovertext<br />
<br />
* Astro Trains get fewer guards. Guards now attrition (quickly) if their train is dead, and they attrition slowly if their train is on a different planet<br />
<br />
* Astro Trains are now better at heading to their Stations, and not getting distracted<br />
<br />
* This section thanks to feedback from GreatYng<br />
<br />
=== Refinements To Main Menu ===<br />
<br />
* The reflection probe on the main menu is now located more to the side, so that it is not in the path of ships that go flying through out. <br />
** This makes it so that the reflection of the ships is shown, but there is not a giant flash on the entire screen as a ship exits the view.<br />
<br />
* The AI War 2 and Arcen Games logos are now subtly on the wall in 3D in the background on the main menu.<br />
<br />
* The old ship that was being used for the main menu animation in yesterday's build is no longer used at all. That was a junky dark ship that was never actually used in the game.<br />
** Now we are using spiders, bombers, raiders, and MLRS corvettes.<br />
** There are two different animations for each one leaving the hangar, and the quality of the animation is now higher, as well.<br />
** The overall idea here is to give a lot more of a sense of life and personality to the scene, and make it clear that these are multiple ships launching instead of just one repetitive animation on loop.<br />
** There are also now point lights on these ships, which helps give even more of a dramatic bit of motion that interacts with the rest of the scene as they exit the hangar.<br />
<br />
* Added a new ArcenFramerateTracker that now let's us track the framerate of the game at any time. We've previously been tracking sim performance, but not the actual framerate.<br />
<br />
* Also added a new ArcenCutscenePerformanceManager class that lets us react to poor framerates during a cutscene by reducing the reflection probe load.<br />
<br />
* On the main menu, next to where it shows the amount of time it has taken to load the game, it now also shows the FPS of the game on the main menu.<br />
<br />
=== UI Reskinning Part 2 ===<br />
<br />
* Fixed an unsightly bit of extra partially-transparent white pixels in the corner of the rounded menu backgrounds.<br />
<br />
* The textbox used throughout the game has been updated to look much more attractive than it has in the last few beta versions.<br />
** Actually, then we updated it yet again to make its construction vastly more complicated, but to show the halftone pattern undistorted, the borders cleanly, the interior drop shadow properly, and all that at a variety of sizes as need. Whoof, that took forever.<br />
<br />
* Updated fonts on the tutorial screen, and the background to help differentiate it more from the other similar screens.<br />
** And gave the same treatment to the load quickstart window, but with a different background that is more golden and different shapes to help tell this one apart from others.<br />
** And also the load game menu, where it looks like a bunch of microprocessors and similar.<br />
<br />
* The following windows have had their fonts updated, but no special backgrounds as they are not used all that frequently and don't need differentiating:<br />
** Controls window.<br />
** Credits window (also updated it so that the names on the right-hand screen are not cut off).<br />
** Kickstarter backer credits window.<br />
** Background story window (this also has been updated to have a more readable and better-sized font for the central story).<br />
** Add/edit profile window.<br />
** Color picker (team and border based).<br />
** MP client connect by IP and List windows.<br />
** MP client connection status window.<br />
** Same for the two general "popup list option" window components.<br />
<br />
* The chat/log window has been updated like the others, but also with a dark blue background in there to set itself apart a bit more.<br />
** The factions window has also been updated and has a new different background, but it's a very subtle one.<br />
*** The sectional factions and galaxy options tabs in the main menu has been updated to match a combination of this and the chat window, since it incorporates elements from both. This really helps to make them stand apart.<br />
**** The standalone chat on the right in the map tab in the lobby in multiplayer then matches the chat colors and such from THAT.<br />
** The personal settings window now has different visuals, slightly, from the galaxy-wide settings menu. Again to help with people knowing where they are at a glance.<br />
*** The tips window also now has its own variant off the personal settings.<br />
** The settings sidebar popout has also now been updated (this is mainly used for fleets, but can be for other things also).<br />
<br />
* The notifications images have been updated a bit to have a slight bit of extra detail in their background.<br />
** These also now have different background images that we can swap in for minor, medium, major, OMG, informational, and hacking events.<br />
** Right now all the notifications are just set to medium, but we will hook them up to use different backgrounds later.<br />
** Thanks to Badger, zeus, Tzarro, Ovalcircle, and NR SirLimbo for helping figure these out.<br />
<br />
* Updated the visuals for tabs, and the top bar in general in the lobby.<br />
** Also updated the tabs on the left of the main screen to match this new style, including slightly different spacing for the tabs themselves.<br />
** Updated the build sidebar's fonts slightly, and in general its backgrounds and so on.<br />
** Same for the fleets tab.<br />
** Same for the hacking tab, except for the header part that has the hacking icon. That bit will be updated later. The button color here has also become green.<br />
** Same for the journal tab.<br />
** And outguard tab.<br />
** And intel tab.<br />
** And science tab. Here again the header icon has not yet been updated.<br />
** And the planet tab. Later there will be many updates here, but those will have to wait.<br />
<br />
* The selected ships window has been updated except for its icons, which are going to be replaced and improved.<br />
** Same for the main header resource bar in the game.<br />
** These will get some more work done on them tomorrow.<br />
<br />
== Beta 2.621 Gorgeousification ==<br />
(Released October 24th, 2020)<br />
<br />
* It is now possible to set up material swaps on a list of images related to a given button, which in turn lets us make the glows more intense or even different colors.<br />
** We're now using this for the buttons in the lower left corner of the main view, so that as you hover over them it's super clear what you are hovering over. This feels far more interactive, and has a lot more in common with what we are doing with other buttons elsewhere in the game.<br />
<br />
* Added a new "pre-canvas LDR camera" that makes sure to do a no-algorithm tonemapping from the HDR range to the LDR range.<br />
** This essentially does add an extra compositing step, but makes it so that anything that might peek into the HDR range from things like hovering over certain faction icons can't possibly interact with the new bloom effect that is used for buttons.<br />
** Because we have a number of special extra cameras for things like the effects where we have not scouted or don't have current intel, this was the cleanest way to make sure that nothing else goes wrong.<br />
** Thanks to NR SirLimbo and Puffin for reporting.<br />
<br />
* The asteroid belt ring that goes around the playing area on planets has been updated so that it has full lighting effects on it, with a dark side and a light side that also matches the direction of the sunlight hitting the planet.<br />
** On dark starfield backgrounds, you'll mostly just see the brighter side of these asteroids, but you'll still finally be able to see them.<br />
** On light starfield backgrounds (lots of nebulas), you'll mostly see the shadowed side, which then looks a lot like before.<br />
** On areas of transition and contrast, you still have something to visually pick out in either situation.<br />
** Thanks to a lot of folks for reporting this over the years. I tried this a while ago and couldn't get it to look acceptable, but this time it worked out.<br />
<br />
* The timer text in the bottom left corner of the main view is now a bit smaller so that it can hopefully always fit its contents in there.<br />
** Thanks to NR SirLimbo for reporting. <br />
<br />
* The new background image behind the right window in the escape menu was actually too far forward, and was also set as a raycast target. Consequently, it looked slightly wrong and also caused the scrollbar to not be clickable.<br />
** Thanks to Badger for reporting.<br />
<br />
=== Revised Key Scenes ===<br />
<br />
* The victory screen has been completely overhauled in terms of the visual background style, and the fonts used, and the composition of where text is, etc.<br />
** The overall color scheme and the visuals are based on what the main menu has been for the last few years, except it's more dramatic than before in the sky and the lighting.<br />
** We were fond of that old main menu screen, and so wanted to keep it around in some fashion, but also to make it more dramatic in a way that is fitting for a victory screen.<br />
** We were NOT fond of the old victory screen visuals, so those are just tossed out.<br />
<br />
* Fixed a typo in the victory text.<br />
** Thanks to Venger for reporting.<br />
<br />
* The loss screen has been pretty cool for a while, and it was based on an even older version of the main menu (go figure), but it still needed some work.<br />
** First of all, the armada in the background has been repositioned and also doubled in size, to better fit with the composition of where the AI overlord is located and not distract from certain other elements of the image.<br />
** Secondly, the background visuals are far more vicious and red and angry, and have even more visual interest, in terms of how and where they are positioned.<br />
** Thirdly, the blue planet now has an even stronger glow off its atmosphere, but more pale and more in the background.<br />
** Fourth, the lens flare and glare has been turned off of the bloom effect being used here, to keep things more consistent with the rest of the game.<br />
** Lastly, the text has been moved around a fair bit, and the fonts changed and button repositioned, etc. It's more similar to the loss screen, but not the same.<br />
** This screen is not the super most legible text, just by nature, but it's at least attractive now and it definitely is readable. But if any screen is going to cause a bit of eye strain while reading, it's this one. We figure that's okay, as you don't really need to read the parts that would be at all that way, anyhow.<br />
<br />
* The main menu scene is now completely overhauled, and shows a scene from inside the hangar of one of your fleet leaders.<br />
** This ship is moving around in such a way that the starfields outside are spinning past, and you can see the reflections of these, and the planet that goes by, affect the dark metals of the large ship you find yourself inside.<br />
** Through the floor, ship after ship is raised up from the bowels of the structure and accelerated out into space. Those who have been playing the game for a really long time will recognize this ship from being the "mascot ship" on the main menu 2-3 years ago. It had the game logo and company logo in 3D on the side of itself back then, but no longer does.<br />
** As part of this change, now that this scene is so much darker than the old main menu, the buttons fit in better in general. We are no longer tilting those backwards in order to make them fancier. It has always introduced aliasing issues around the edges of those buttons.<br />
** To make the ship move and accelerate properly, we have now integrated Slate Cinematic Sequencer by Paradox Notion. We've had that for years, but never had anything worth integrating it for in this project. We're aware that Unity Timeline exists, but this was a quick and familiar thing.<br />
** This overall scene is pretty heavy, so if it's causing lag on the main menu, please let us know.<br />
*** On an i7 from 2016, and with a GTX 1070, at the moment we seem to only be getting around 40fps, which is a surprise. In earlier testing with this scene we were getting 130fps or so.<br />
*** We're not sure if this is related to the Slate cutscene stuff, which was the most-recent-added, or if it's something else that we're not clear on. At any rate, the realtime reflection probe at a really high quality doesn't help matters, but boy is it gorgeous.<br />
** At the moment, the main menu scene (after the loading scene, which is the same as it has been for a really long time) does not include the AI War 2 logo or any other logos.<br />
*** Later it would be nice to include the main logo and expansion logos, but perhaps integrated into the scene in some fashion.<br />
** Overall this, plus the changes to the other two scenes, are requiring about 300MB more disk space, and something along those lines in terms of RAM. It doesn't have any effect on the speed of loading the game.<br />
<br />
== Beta 2.620 Hotfixes ==<br />
(Released October 24th, 2020)<br />
<br />
* Fixed an error in the most recent beta where the lobby was broken if you didn't have DLC2.<br />
** Thanks to cml and UFO for reporting, and Puffin for pointing us to where the issue was.<br />
<br />
* Fixed a known issue from the last beta where the settings and chat visible buttons in the lower left corner of the main screen were not working.<br />
<br />
== Beta 2.619 Quality Of Life And Polish ==<br />
(Released October 23rd, 2020)<br />
<br />
'''Since there are many visual changes in progress, to save confusion this is only on the beta branch on steam and gog right now.'''<br />
<br />
* Marauder Outposts now have more health<br />
<br />
* The faction list of the Esc menu is improved. It is now sorted for easier reading, and the 'allegiance' section of the Esc menu is color coded and simplified.<br />
<br />
* Updated the galaxy map camera view to now use a 4-camera stack instead of a 3-camera stack. The new camera on the stack is just for rendering the space background, and it now uses a field of view of 60 rather than 40 so that it has the proper perspective and scale on those background starfields and nebulas versus seeming super zoomed-in. The field of view of the map parts itself remains at 40, to avoid distortion on them.<br />
** Thanks to Puffin Emeritus for suggesting.<br />
<br />
* Harmonic turrets must be fully constructed in order to apply their "Strengthen other harmonic turrets" buff. Turrets under construction no longer count, and neither do remains<br />
** Reported by ArnaudB<br />
<br />
* Updated Harmonic mechanic to be able to increase per Mark. Harmonic turrets gain 10% of the original value per Mark.<br />
<br />
* Vengeance Generators now prioritize other VGs close to deploying ships when sharing energy. The goal is to get multiple battles going at once. Also improve the hovertext for VGs with some colour<br />
** Thanks for GreatYng for prompting<br />
<br />
* Astro Trains guards now spawn pre-stacked if appropriate<br />
<br />
* Add a new setting to not show the Dotted Lines between player planets and AI planets without wormholes. I like being able to see the colour gradient better.<br />
** Off by default<br />
<br />
=== Journal Tweaks ===<br />
<br />
* The game now does a better job of telling you when journal entries appear through their Chat text<br />
<br />
* When there are new journal entries to read the "Journal" tab on the sidebar now changes colour to make it easier to notice<br />
<br />
* Add a few journal entries for the astro trains<br />
<br />
=== UI Reskinning Part 1 ===<br />
<br />
* Textboxes throughout the game now go to an ellipsis if there is not enough room for their contents, rather than looping to a second line in a strange way. This rarely came up because of character limits.<br />
<br />
* When you go from hovering over a textbox to then clicking it, it no longer flashes a different color for a moment.<br />
<br />
* Designed some new UI shaders that allow for us to use HDR blooms on icons.<br />
** Added a post-processing stack bloom item on the GUI-layer camera that is specifically for anything that is still in the HDR range when it is post-processing there. <br />
** This should not apply to anything except the UI itself, since everything else should have been mapped back down to the LDR range by the tonemapping prior to now.<br />
** At any rate, this then lets us use, very selectively and carefully, some glows on icons and similar in the UI and have that behave properly and give a much better sci-fi effect.<br />
<br />
* We've been working on this all week, but at this point the various UI elements are about... maybe 1/3rd updated to a new and improved style.<br />
** The escape menu, and all of the popup yes/no windows, are all done. The main menu buttons area is done (but not the actual main menu scene in the background or the angled-buttons stuff).<br />
** New font selections for headers and buttons are done, but they're not universally applied everywhere yet.<br />
** The bottom-left corner buttons and timer on the main view is fully updated, but the sidebar and resource bar and selection windows and such are not at all.<br />
<br />
== Version 2.618 Astro Reserve Tuning ==<br />
(Released October 21st, 2020)<br />
<br />
* Add some warning text to the X map saying it has balance issues<br />
<br />
* Fix a bug where ai-allied factions like the scourge or marauders weren't correctly allied to things like Astro Trains. This was causing a number of issues, like 'Astro Trains never spawn'<br />
<br />
* CPAs will group-move more often<br />
** Suggested by Crabby on steam<br />
<br />
* Change the way Threat numbers for the resource bar are counted.<br />
** AI and AI-aligned factions (Instigators, CPAs. Not AI-Allied Marauders or the like) are the only factions that now count as Threat.<br />
<br />
* Add an Experimental setting under "Game" to allow Hunter ships required to go after a specific faction to go through other factions on the way<br />
** The most usual case was if you owned the center of an Octopus map, and the AI homeworld on one of the legs was building up Threat against a Nanocaust on another leg. The AI really didn't want to send attack you with its Anti-Nanocaust ships, so they would just sit around.<br />
** I'm not sure how well this works, and whether it has potential problems, so I'm making it an opt-in setting to get feedback.<br />
<br />
* AI Reserves ships now attrition much more slowly<br />
** Attritioning is done as a neat thematic, and also to make sure that the reserves will die if they can't get back to their wormhole, but it was going much too quickly<br />
** Thanks to GreatYng for pointing this out.<br />
<br />
* Fixed an issue where command stations and NPC fleet leaders could be seen to be in the new "stationary flagship" mode.<br />
<br />
* The new "stationary flagship" status now defalts to off, and for all savegames prior to this one will have them all set to off.<br />
** Thanks to Strategic Sage, Metrekec, Smidlee, Asteroid, TechSY730, crawlers, and others for weighing in on this.<br />
<br />
* For the included "Extended Ship Variants" Mod:<br />
** Fixed the Oculus not having a limit on the damage modifier, which meant that it could deal an amazing 1430x damage to them (assuming the 2.5x multiplier based on time also applies). A single Oculus Mark 7 could do 926,640 points of damage - per shot (120 x 5.4 x 1430).<br />
** Found by ArnaudB, when his Spire Great-Shield Emitter got eaten in an instant.<br />
<br />
* For the included "Extended Ship Variants" Mod and the Fallen Spire version as well:<br />
** General Change: The AI ship group weight of all variants was reduced by 50%. So now they should be spending much less budget on them, and more on base variants<br />
** The Void Bomber's full-invulnerability fortification effect has been nerfed<br />
*** It now only applies to shield, and reduces damage to 0.1% (so only 1 in 1000 points of damage applies). Shields were also buffed from 250 to 500 points.<br />
*** Hull was increased from 500 to 2500 to resist at least a bit of fusion damage, which (along with melee) is king against them<br />
*** The defense buff now activates at a range of 350 instead of 1000<br />
** The Vex Guard had its cost increased: AI Budget cost up a quarter from 80 to 100, Metal cost from 4500 to 6500 and Energy cost reduced from 800 to 500<br />
** Also from a discussion with ArnaudB on Discord.<br />
<br />
* For the included "Extended Ship Variants Fallen Spire" Mod and the Fallen Spire version as well:<br />
** Buffed the EMP Missile Frigate up again, increasing its paralysis potential<br />
*** The description now (accurately) states that it has 10 shots (instead of 5, it always had 10), but it now also gains 2 shots per mark level beyond 1 for a full 22 at Mark 7. This is because, as fights expand, more missiles will inevitably get shot down.<br />
*** The maximum amount of targets hit per EMP missile is 7 instead of 5<br />
*** EMP Missiles have an albedo of 0.6 instead of 0.3, making them immune to most tractor beams (if not all).<br />
*** The base cap has been increased from 1-2 to 2-3 ships, or from 2-3 to 3-4 ships in the Frigates-With-Support fleet template.<br />
<br />
==== Astro Train Buffs ====<br />
<br />
* Astro trains mark level goes up based on the number of trains spawned. When they begin spawning stronger variants the mark level resets to 1.<br />
** Previously the astro trains had just taken on the mark level of the AI, which meant it generally stayed low all the time. <br />
<br />
* The astro trains can now have Guards; each train can have some Guards who will deploy when there are enemies, and will return to the train when there are no longer enemies <br />
* Astro Trains can get more guards when they reach a Station. They also can heal a bit on reaching a station.<br />
** Guard strength increases based on trains killed (regardless of who killed the trains) <br />
** Guards are intended to make trains a bit harder <br />
<br />
* Astro Trains can spawn stronger variants after enough trains have been killed by the player <br />
<br />
* The largest balance change is letting the train mark level increase more readily. Guards are intended to be a bit of extra cool/flavour with some balance impact.<br />
<br />
== Version 2.617 Calming For The Nerves ==<br />
(Released October 16th, 2020)<br />
<br />
* Should now be a new Journal message for AI Relic Trains.<br />
<br />
=== Quality of Life Improvements ===<br />
<br />
* Add a new Galaxy Map Setting to change how the links look. Instead of using Red for "these two planets are hostile" or Blue for "these two planets are friendly", the game can now show a color gradient between the faction owners<br />
** The old style version is still available as an option.<br />
<br />
* There is a general problem with "churn" in ships and stacks being so fast that if you have many ships selected it was almost impossible to remove a status effect based off of a simple toggle.<br />
** Our overall logic was "if at least one of the selected items doesn't have the status, then add the status." But this gets intensely confusing, and we introduced transports that is part of why we made L be load and U be unload.<br />
** So let's revisit our older standing orders, too, because this is just problematic with trying to toggle them.<br />
*** G is no longer "toggle group move" it is now "Enable Group Move"<br />
**** You now have to use Ctrl+G to remove ships from group move. None of this toggling business!<br />
**** Additionally, on the interface for the game where it shows the icon under selected ships, right-clicking that button now removes, while left-clicking enables. The tooltips are updated to say all this. <br />
*** The same exact setup is now true for "Stop To Shoot Mode" and the K key, including its button and Ctrl+K and all that.<br />
*** Exact same thing again with "hold fire/disable" functions and the N key, and Ctrl+N, the interface button, etc.<br />
*** Ditto again for Pursuit mode and the V key.<br />
*** And a final ditto for attack-move mode and the X key.<br />
** This is something that has been reported since at the very least February, and even before that, apparently. Somehow or other this still frankly just slipped past our attention. The amount of information overload that we sometimes face is kind of intense when it comes to bug reports.<br />
*** But with that said, holy cow this was incredibly annoying. There's nothing like pressing a button and not having it do what you want to induce rage. We just don't really use these options all that much, or when we do they are with only one fleet selected, and it was working well in single-fleet situations. Something about multiple fleets in one selection was particularly throwing this off, but it's hard to be sure of the exact full reasons.<br />
*** At any rate, we're glad to have it fixed now, and thanks to folks for bringing this up again so that it finally registered in our attention properly. This feels like a major frustrating oversight.<br />
** Thanks to Strategic Sage, Asteroid, Arides, and TechSY730 for reporting.<br />
<br />
* The escape key no longer clears your selected ships and fleets. There really was no good use case for this, and it was annoying to at least some folks.<br />
** Thanks to Asteroid for suggesting.<br />
<br />
* If you are on a map that is large enough that you can zoom out so far that the "Icons By Planets Hides At Distance" setting kicks in (default is 1.5, but you can change that up to 10 if you prefer), then now it will still show any fleets or other on-galaxy-map-units that you have selected. Later we can customize other display modes to show things in this scenario in various ways.<br />
** Thanks to Asteroid for suggesting.<br />
<br />
==== Stationary Flagship Mode ====<br />
<br />
* New setting in the Ship Controls section of the controls: Hold To Give Orders To Stationary Flagships<br />
** Normally flagships that are unarmed will not listen to any orders that you give them. This is because usually you select their entire fleet, and you mean 'everybody but you.' <br />
** However, there are times when you definitely DO want to give them orders to move somewhere, perhaps transport some ships for you, and holding down this key while giving those orders will make them listen to you.<br />
** The alternative is to take them out of stationary mode, but this is far simpler. Movement orders on the galaxy map screen are always obeyed.<br />
** Default keybinding: control key.<br />
<br />
* The pre-existing "Flagship Movement Mode" option in the fleet options panel is now renamed to "Flagship Roaming" for the sake of clarity.<br />
<br />
* A new "Flagship Orders" option in the fleet options panel has been added.<br />
** It is either "Follow All Orders" or "Stationary Flagship Mode".<br />
*** Unarmed flagships are by default stationary, while armed ones by default will follow all orders.<br />
** Description in the tooltip:<br />
*** Some flagships are meant for fighting, while orders meant for hanging back. How far back is up to you.<br />
*** When this is set to 'Follow All Orders', it acts like any other ship in your fleet. This is great for Golems and Arks. Not so hot for unarmed transports.<br />
*** When this is set to 'Stationary Flagship Mode' mode, the flagship will just sit there and ignore all orders you give it. The assumption is that the orders are meant for the rest of the fleet.<br />
*** To override this while staying in stationary flagship mode, hold Control down while issuing orders to the flagship. It will follow them as if this mode was not even on. This is perfect for rapidly giving different orders to your unarmed transports and the rest of the fleet they are supporting. Movement orders on the galaxy map screen are always obeyed.<br />
<br />
* If a flagship is in this new stationary mode, then they will show up with the "guard" shield icon behind them, which we don't really use for other purposes much.<br />
** This should help players who are jumping right into this new version realize that something is going on when their ships are not listening to them.<br />
** When Ctrl is held, then this shield status icon goes away and whatever the normal status icon would be appears. This is immediate visual feedback of what is happening, and also lets you check to see that your flagship is indeed in pursuit mode or what have you.<br />
<br />
* When a flagship is in the new stationary mode, and you are not on the galaxy map (where that is irrelevant), the tooltip for the flagship now shows "Stationary Flagship Mode!" even in the super brief tooltip, and then has more details if you go to medium and then full detail.<br />
<br />
* This whole thing with the flagships sometimes rushing to their deaths has definitely been one of the most singularly-annoying things since we introduced the concept of fleets, way back in the middle of Early Access.<br />
** At first, more fleets than not had big weapons (Golems and Arks), so it seemed like less of a thing. But over time, it has become more and more annoying.<br />
** This was something we have thought about for a long time, but for whatever reason we never could come up with a good solution for it despite how much it annoyed us directly, let alone player reports.<br />
** Thanks to Strategic Sage, nas1m, Asteroid, and others for contributing to this discussion since last December, and then more acutely more recently when this solution was arrived at.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a bug where the AI Reserves journal message was playing incorrectly when loading a sufficiently old game save.<br />
** Thanks to Metrekec for reporting<br />
<br />
* Fix a typo in the AIP hovertext in the resource bar<br />
** Thanks to Puffin for reporting<br />
<br />
* Don't let Exos sync with a wormhole invasion if the AIP is too low for wormhole invasions<br />
** Thanks to NRSirLimbo for reporting<br />
<br />
* Fix a bug where the AI was telling you where its major structures are, even on unexplored planets<br />
** Thanks to TechSY730 for reporting<br />
<br />
* Add some defensive code to the DoOnAnyDeath code path for the player<br />
** Problems were reported here in several multiplayer games.<br />
<br />
* Fixed a bug in the nanocaust where any savegames that included them and which were from version 2.614 would fail to load in 2.616.<br />
** Thanks to Cyborg for reporting, although we also ran into it ourselves.<br />
<br />
* It turns out that in some older savegames, we already had the wrong data types on certain other objects, such as having DoomData on certain ships.<br />
** We fixed this in later versions of the game and had them become more strict with how they are loading the related data in order to now allow for this sort of wrong data to persist, but in turn this made some older savegames (from the 1.3x timeframe and prior) unreadable.<br />
** For those older savegames, we've now relaxed the restrictions to allow for the bad data to be read in, and it will throw a warning message as you load those saves but should still actually get them open properly (the example save that we have now loads fully).<br />
** Thanks to Strategic Sage for reporting.<br />
<br />
* Fixed an exception that could happen in certain circumstances after failing to load a bad savegame.<br />
<br />
* Further updates: after a savegame with old bad data is loaded in, it now discards that old bad data after it loads it. This has no effect on gameplay, it was data that wasn't being used anyhow. But this does make it so that if you save it in a newer version of the game and then try to load the NEW save, you aren't just right back in the same boat with it not loading the save because of that bad data.<br />
<br />
* Updated the TimeBasedPool class to no longer expand, but rather to start large and just use the parts that it needs, throwing any excesses away if there really are any that are that far out of bounds.<br />
** There was an exceptionally rare exception that could happen when shutting down the game or going to the main menu out of the game with the way it worked before, but much more common was some extra slowness in how it was having to resize arrays to handle those events in general. That is all faster now, and can't have that sort of exception.<br />
** Thanks to Endovior for reporting.<br />
<br />
* Also put in some changes to further distance ships from pooling, and somewhat start a road toward prepping them more for the new style of PKID generation.<br />
<br />
* Fixed a cross-threading exception that could happen in UpdateEntitiesShownAtPlanetDirectly() if you were on the galaxy map view and a ship died at just the wrong time.<br />
** Thanks to UFO for reporting.<br />
<br />
== Version 2.616 Stop Printing Money, AI! ==<br />
(Released October 14th, 2020)<br />
<br />
* Grappler Guardian balance updates from zeusalmighty, for those new units that come as a unique thing in the new AI Reserves mechanics Badger added yesterday.<br />
<br />
* Added a new Dire Singularity Guardian by zeusalmighty, for basically boss-level seeding in the new AI Reserves mechanics.<br />
<br />
* Fixed an issue where black hole generators that were not also on a ship with a gravitic core of some sort would not work.<br />
<br />
* Fix a bug where the scourge were spawning unlimited builders<br />
** Thanks to a number of people, including Sombre and ArnaudB for reporting. Thanks to Badger for fixing even after retirement.<br />
<br />
* Fix a bug where right-clicking a journal entry could cause an Exception<br />
** Thanks to Ahnold for reporting. Thanks to Badger for fixing even after retirement.<br />
<br />
* You can read all about [[AI_War_2:Sunset_of_The_Badger_Era#The_Badger_And_Puffin_Legacy|The Badger And Puffin Legacy]], if you like. Puffin retired earlier this year, and Badger is retiring now, so this is a good time to pay some respects.<br />
<br />
* The reinforcements seem to have a math bug in them, so we put in extra detail and formatting in how we export them.<br />
<br />
* Fixed a math bug in reinforcements that was basically "printing money" once the game really got going, and would let planets of the AI reinforce almost infinitely.<br />
** We're not sure if this is fully a new bug, but it has certainly found new expression in the new reinforcement logic.<br />
** This may have been an older bug that was somewhat suppressed by the old reinforcement logic, or it's a brand new typo, but because of how much code has changed it's hard to be sure.<br />
<br />
* For the first time, we now have a way for the budgets of the AI to dump their details to log files. What we found was a bit surprising and definitely horrifying.<br />
** First of all, for quite a long time, apparently the logic for partially-neutered planets has been horribly wrong.<br />
*** If a planet was neutered down to 1 reinforcement point, then the budget would be 5% of usual, no problem.<br />
*** If a planet had not lost any reinforcement points, then the budget would be 100% of usual, no problem.<br />
*** If a planet had lost some reinforcement points, then the budget would... be multiplied by whatever the number of reinforcement points are.<br />
**** So, you killed reinforcement points down to 4 left out of 7 original? Congrats, the cap is UP by 400%.<br />
**** The correct number should have been 57% of normal, and now that works properly.<br />
** Then there was a really harsh AIP multiplier that was being applied. It was adding far too much based on whatever the budget was, and larger budgets were more affected.<br />
*** Now it only adds budget for each AIP above 100, which is softer to begin with, and then it also only adds it based on 10% of the current running total, rather than on the entire running total.<br />
** Finally, there was a portion that was added based on time (number of 10 minute increments).<br />
*** This was also too harsh. This is now based not on the running total of budget, but 1/10th of it, instead. Making this also a much gentler slope.<br />
** None of these were new errors, but they were showing up now more because the reinforcement logic calling these budgets was so much more effective.<br />
** Without these in place, AND with the above actually-charge-me-the-budget fix in place, now reinforcements happen at a rate we would expect.<br />
** Thanks to ArnaudB and Crabby for the saves where we could verify it, and others also for reporting.<br />
<br />
== Prior Release Notes ==<br />
<br />
[[AI War 2: Sunset of The Badger Era]]</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=41156AI War 2:Zenith Onslaught Patch Notes2020-11-14T01:45:01Z<p>Democracy? Democracy!: /* New Golems */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
''' Nota Bene '''<br />
<br />
Please don't discuss anything you learn from this page with others unless Badger or Chris has publicly talked about those features already.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
There are also a focus on pushing the Roguelike elements of the game. You can now start a game not knowing what factions are in the galaxy, or even what most of the map looks like. The game becomes much more about Exploring the Unknown and surviving its terrors. And if you use Ironman mode, it only takes one mistake to end your campaign permanently.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New AI Features ===<br />
<br />
==== AI Types ====<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types (Brutal)<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types (Hard)<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types. Unbalanced until Chris does unit design, but functional. <br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types. Unbalanced until Chris does unit design, but functional. <br />
** NOTE FOR CHRIS: I'd love if this was a Moderate so we have more variety<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you (Brutal)<br />
<br />
* Aedile AI Type: This AI has a somewhat stronger praetorian guard which is allowed to roam a bit further from its Homeworld. (Hard)<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam much further from its Homeworld. (Brutal)<br />
<br />
* Reservist AI Type: This is a defensively focused AI. They some extra reinforcements and they can detect your deepstrikes better, so they will send out their reserves one hop earlier than other AIs. They also turn their defense into offense with very large CPAs. (Moderate)<br />
<br />
==== Other ====<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
* AI Layouts: In the Game Lobby, you can now influence how the initial AI owners of each planet are selected <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
** First AI Is Largest: The first AI gets most of the planets; other AIs get a small set of planets around their homeworld. <br />
<br />
=== Galaxy Features ===<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* Cubular Map Type: This map type is like Snake, but can be multiple planets thick. Spiral Snake's real problem is that there's no way to bypass very strong enemy planets, so this will be easier and more varied. It also has a cube-based appearance.<br />
** With all the tunables on all the map types, there are > 100 unique combinations<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships (requires both DLC1 and 2)<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships (requires both DLC1 and 2)<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* We had time to do voice lines for DLC2 and in the process we also recorded voice lines for DLC1 since there wasn't time in that release.<br />
<br />
* The AI Reserves rework draws significantly on tech developed for DLC2<br />
<br />
* Allow the Nanocaust to do a 'delayed invasion' at a random time, using some techniques from DLC2<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
=== New Cheat ===<br />
* Putting here so it doesn't get lost <br />
**zmhere: Spawn a zenith miner probe on the planet you are looking at<br />
<br />
=== Stuff pushed to DLC3 ===<br />
<br />
* Champions<br />
<br />
==== Galaxy options ====<br />
* Hidden Galaxy<br />
** Available in the Game Lobby as a setting under Scouting. Only Explored planets, or planets adjacent to Explored planets are visible. As you explore more planets the rest of the galaxy will appear.<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Dissonance Map Type: This map type has areas that are rich in planets, and areas that are empty. It's trying to evoke the Simple/Realistic map types from AIWC<br />
<br />
<br />
<br />
==== Roguelike Features ====<br />
<br />
* Ironman Mode is now available as a Galaxy Setting under Permadeath. It can be enabled in the Game Lobby.<br />
** When enabled, you lose the ability to manually save the game. Instead, the game autosaves very frequently, while keeping only the most recent autosave.<br />
** You will have only ever the most recent save game to work with. You are allowed to reload your save as many times as you like though, and still consider a resulting victory 'Ironman'<br />
** All cheats are disabled in ironman mode<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** You can also ask for "Bonus Random Factions" in the Galaxy Design section of the Game Lobby, to make it really easy to have a bunch of unknown factions<br />
<br />
* Implementation notes for Random Factions: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
** For the Bonus Random Factions, there are extra tuning options to say "How impactful should the bonus factions be" and "What sort of allegiances should they have"<br />
<br />
= Bug Reports =<br />
<br />
* bug with nomad planet. Galaxy map doesnt show that theres a connection between XFA and nomad 4, but I have a wormhole connection on the planet maps (noted by Zeus) https://discordapp.com/channels/240637654717300736/698572497171251200/759900272226336819<br />
<br />
* bug with "Fat snake" generation -- galaxy setup won't allow me to zoom all the way out, so I can't see the full map. To be clear, it will show the full map at first, but any adjustment to zooming prevents zooming back out (noted by Zeus). Check map seed 711896468 more context here: https://discordapp.com/channels/240637654717300736/698572497171251200/761795350510960670<br />
<br />
* Several bugs/oddities (reported by Zeus): 2) Miners destroyed some of ZA territory; ZA chose a non-contiguous planet to compensate.<br />
<br />
<br />
* Redundant option in lobby for the scourge -- duplicate "pick first armory". See here: https://discordapp.com/channels/240637654717300736/698572497171251200/766146485963194388<br />
<br />
*DLC 2 (plus DLC and Base Game) Journal reviews/criticisms https://discordapp.com/channels/240637654717300736/698572497171251200/767947419887075370 - Ovalcircle<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Spire fleets being eaten by miners cause errors<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
= Chris TODOs =<br />
<br />
From Puffin, for the DZ planets:<br />
<br />
<spacebox name="Puffin_SmokeSpiral" weight="50000" visuals="assets/spacebg/materials/forusing/puffin_smokespiral.mat" /><br />
<spacebox name="Puffin_GreenTrapped" weight="50000" visuals="assets/spacebg/materials/forusing/puffin_greentrapped.mat" /><br />
<spacebox name="Puffin_RedTrapped" weight="50000" visuals="assets/spacebg/materials/forusing/puffin_redtrapped.mat" /><br />
<spacebox name="Puffin_BlueTrapped" weight="50000" visuals="assets/spacebg/materials/forusing/puffin_bluetrapped.mat" /><br />
<br />
= Patch Notes =<br />
<br />
== 2.634 ==<br />
<br />
* Add Reservist AI Type<br />
<br />
* The Ragnarok and Gladiator AI types are now functional. They aren't balanced at all, but they are functional.<br />
<br />
== 2.623 ==<br />
<br />
* Add Ironman mode<br />
<br />
* Add Hidden Galaxy mode<br />
** Thanks to Puffin for reminding me that I liked this idea<br />
<br />
* Fix a bug where the ZA wasn't defending its territory properly, leading it to just build up giant forces sitting around<br />
* ZAs now spawn fewer Pioneers<br />
** Thanks to Arnaud for reporting<br />
<br />
* Geneticist scourge armories are now one mark level lower than the planet, and can't spawn on mark 2 planets anymore<br />
<br />
* Add quickstarts for both Ironman and Hidden Galaxy<br />
<br />
== 2.622 ==<br />
<br />
* Make it harder for random factions to be intensity 0<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add a new setting for the Bonus Random Factions to allow for a player to influence their allegiances. Improve the faction tooltip for Random Factions to mention the Bonus Random Factions option<br />
** From a discussion with Mac<br />
<br />
== 2.619 ==<br />
<br />
* Add Faction Additional Randomness galaxy option<br />
** Roguelike mode!<br />
<br />
== 2.618 ==<br />
<br />
* The ZA now properly updates its overall power level. Pioneers spawn much less frequently<br />
** from a discussion with Oval, Arnaud and Zeus<br />
<br />
== 2.617 ==<br />
<br />
* Buff the shields on some spire hammer units<br />
** prompted by ArnaudB<br />
<br />
* The Nanocaust now has an "Invasion Time" option that's going to replace all the previous time-related settings.<br />
** Needs testing. I'll backport this to the base game once DLC2 is out.<br />
<br />
== 2.615 ==<br />
<br />
* Fix a bug with cubular map generation<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the ZA wasn't defending their planets<br />
** Thanks to ovalcircle for reporting<br />
<br />
* Adjust the game-lobby description of the Praetor AI types to match actual difficulty<br />
* Rename the weaker Praetor to Aedile<br />
** Thanks to Arnaud for the feedback<br />
<br />
* Zenith Miners no longer count as threat. Remove some leftover text in a ZM hack<br />
** Thanks to Puffin Emeritus for reporting<br />
<br />
== 2.609 ==<br />
<br />
* Make the ZA better at detecting war.<br />
* The DZ overall power level is now 0 when the DZ is dead<br />
** Thanks to zeus for reporting<br />
<br />
* The Nomad Planet Notification can now use a different icon when a nomad planet is crashing (once chris does the new icons)<br />
* The Nomad Planet Notification hovertext now gives you an approximate "time till we crash"<br />
** Suggested by zeusalmighty<br />
<br />
* Improve the ability of the ZA to respond to pioneer spawn time interruptions by decreasing the spawn timers when the interruption stops.<br />
** Reported by ovalcircle<br />
<br />
== 2.608 ==<br />
<br />
* The Nanocaust can no longer get ZA ships<br />
** Suggested by Ovalcircle and seconded by zeus<br />
<br />
== 2.607 ==<br />
<br />
* The Nomad Planet to move soon Notification now also colour-code the planet name by owner<br />
** Suggested by Mac<br />
<br />
== 2.606 ==<br />
<br />
* In a nomad galaxy, a planets first move is now 5-15 minutes later, to prevent low-mark planets from running away from the player before they can capture the resources<br />
** Thanks to zeus for suggesting<br />
<br />
* Nomad planets now say 'Will move in Xmin Ysec' in the planet hovertext instead of just the number of seconds<br />
<br />
* The countdown timer till a nomad moved (in both the Notification and the planet hover text) now uses different colours when the Nomad is close to moving<br />
<br />
* Rename Fat Snake to "Cubular".<br />
** Cubular must be at least two planets wide<br />
<br />
* Resolve some problems with the ZA having too many friends<br />
** Thanks to ovalcircle for reporting<br />
<br />
== 2.605 ==<br />
<br />
* Buff Spire Guard Posts (unique for Spire Hammer AI Type)<br />
** Thanks to NRSirLimbo for suggesting<br />
<br />
* Fix a bug where during their initial expansion, the DZ would decide to go target ZA planets across the galaxy.<br />
<br />
== 2.603 ==<br />
<br />
* Fix a bug that was causing games saved while the ZA was trying to expand to have a hiccup in their strength buildup<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Fat Snake changes<br />
** The snake can now go clockwise or counterclockwise<br />
** Add a "Varied" number of planets per chunk<br />
<br />
* Make sure the Fallen Spire regenerates a new Relic if the Miners ate a planet with an undiscovered Relic<br />
** Thanks to zeus pointing this out<br />
<br />
* Improve the ZA journals and tooltips to clarify some mechanics<br />
** Thanks to a conversation with zeus<br />
<br />
== 2.512 ==<br />
<br />
* Add a new variant of the Squares map type, where all the little clusters are also laid out in squares<br />
** This also includes some minor improvements to the LinkPlanetLists code, to try to make more interesting linkages<br />
<br />
* Add a new Fat Snake map type<br />
<br />
* Improve post-civil war ZA behaviour<br />
** The ZA has more time to retreat before being hostile to the AI, and is better at not triggering threat against the player in the process.<br />
** The ZAs who were at war will keep shooting at eachother as they retreat (so if you had 3 ZAs ganging up on one, as soon as the 1 is weak enough there will be a bloodbath)<br />
*** Thanks to a bug report from Ovalcircle<br />
<br />
== 2.509 ==<br />
<br />
=== Zenith Architrave Updates ===<br />
<br />
* ZA should regrow territory eaten by Miners<br />
** Pointed out to me by zeus<br />
<br />
* Quiet some leftover ZA debug logging<br />
** Thanks to Oval for reporting<br />
<br />
* ZA bonus civil war attacks (mini wormhole invasions by the ZA to make sure a civil war ends eventually) now only kick in after 15 minutes<br />
** Thanks to oval for pointing out that this previous code didn't actually wait the requested time, and zeus for suggesting increasing the time to 15 minutes<br />
<br />
* Weaken the ZA hacking response.<br />
** Thanks to zeus for suggesting<br />
<br />
* Tweak the ZA notitifaction a bit<br />
** Thanks to Puffin for suggesting<br />
<br />
=== Nomad Planet Updates ===<br />
<br />
* The AI's response to a nomad planet hack now also allows it to send ships after miscellaneous player targets (generally things like GCAs and economic command stations) to distract the player<br />
<br />
* The Nomad Planet crash response now scales based on the overall power level of the player(s) and their allies<br />
<br />
* You can now say whether you want the nomads to move Fast, Medium or Slow (this controls how often they move)<br />
<br />
* Nomads now must move a bit further<br />
<br />
== 2.507 ==<br />
<br />
* Continued improvements to how the DZ manage their ships in the early game<br />
<br />
* When killed, a Zenith Miner will leave behind wreckage, in the form of a slightly-better-than-usual metal generator.<br />
** This is intended to be a cool little tidbit but not to impact balance<br />
*** Thanks to a discussion with starkelp for this feature<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
(Released April 21st, 2020) <br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
* For balancing, I think making sure the Gladiator AI type is a "Moderate" difficulty is good; most of the other new AI types are Hard/Brutal, so having one that's easier sounds like a good idea. The easiest approach to this is probably to just nerf the AI copies of the ZA's units significantly<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
*** Volatile Shock Frigate (Splash)<br />
**** Varient of the Volatile Tesla Frigate, it exchanges it's damage bonus against higher energy targets for a faster fire rate of 7 second reload.<br />
** Chain Lightning Frigate (splash)<br />
***Tesla Frigate without the volatile or energy multiplier. Default 15 second weapon fire reload but has the burstfire mechanic -- it can fire up to 3 times in quick succession before a long cooldown (30 seconds). Does bonus damage to stacks<br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units (the concentration mechanic could also replace these multipliers). <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses. (Badger notes: I don't think golems are the corpses of zenith, are they? Regardless, that theming isn't appropriate for the ZA or DZ, since these are living Zenith societies.)<br />
(Demo): Afaik, golems are indeed dead zenith. Humans are simply installing the equivalent of control cybernetics to reanimate them. I suppose it wouldn't be fitting if they're "dead" but they're still zenith, so I kinda thought it'd be appropriate that some new golems were added to the DLC centered around the Zenith.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Shockwave Golem: A Golem equiped with a tesla style weapon (aoe blast centered on ship) that takes a long time to reload (10 seconds maybe), but once charged it knocks anything below mass 6tx away from the Shockwave Golem. The shockwave itself deals high damage, and strikecraft that survive can be expected to be pushed all the way across the gravity well, while guardians and frigates will only be pushed a moderate distance away.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
*Hammer Golem: Has a single target rapid fire weapon. Said weapon deals high damage and has a small aoe. It also has a longer than average range.<br />
<br />
* Attritioner Golem:<br />
** Same as Classic's Spire Attritioner, but as a Golem. Does x amount of attrition damage to all enemy units on the planet per second. No guns (or very tiny guns just as a basic placeholder), and relatively fragile with low shielding.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus<br />
** Garrison: This unit gains more shots as more units are loaded inside of it. Think AI war classic carriers or assault transport. <br />
** Heroic: This unit ignores any detrimental effects, such as weapon jam, gravity, tractors, etc.<br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
For Consideration <br />
<br />
* Genecist AI has Dire Guard Posts replaced with Scourge Fortresses or Dire versions of the scourge guardposts (suggested by Zeus)<br />
<br />
* Spire Hammer AI has dire version of Spire guardpost (tries to seed at least one) (suggested by Zeus)<br />
<br />
* Ragnarok AI has a AI version Jormangadur in its praetorian fleet (suggested by Zeus)<br />
<br />
* Gladiator AI has upgraded Usurpers based on the Pioneers -- seems like this would be an interesting way to help this AI type standout. Like the idea of the new AIs incorporating not only the units but the personalities (suggested by Zeus)<br />
<br />
* Praetorian AI gets extra Borers or can use them more frequently -- the idea is that it likes to use Borers to shorten distance of its HW and yours so it can use its Praetorian fleet more aggressively. I saw this happen in a game and it was really cool to see it camping a world away from my HW (suggested by Zeus)<br />
<br />
* Option to allow human HW to spawn on nomad. Perhaps this will be unbalanced but it could be a fun feature and potentially lead to some interesting mods. (suggested by Zeus)<br />
<br />
===Quickstarts===<br />
Introductory level<br />
<br />
Zenith Doorways of Doom: Some new Zenith exogalactic invaders have arrived in our galaxy! However, it seems like they are not a unified force. While we have noticed them engaging both the AI and us, they seem to focus on destroying each other, especially when one appears to get stronger than the others. Perhaps we could use the chaos these to our advantage?<br />
Features: 100 planets simple, 5 intensity 5 ZA, AI difficulty 7.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40836AI War 2:Zenith Onslaught Patch Notes2020-10-14T22:23:05Z<p>Democracy? Democracy!: /* New Golems */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
''' Nota Bene '''<br />
<br />
Please don't discuss anything you learn from this page with others unless Badger or Chris has publicly talked about those features already.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Cubular Map Type: This map type is like Snake, but can be multiple planets thick. Spiral Snake's real problem is that there's no way to bypass very strong enemy planets, so this will be easier and more varied. It also has a cube-based appearance.<br />
** With all the tunables on all the map types, there are > 100 unique combinations<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* We had time to do voice lines for DLC2 and in the process we also recorded voice lines for DLC1 since there wasn't time in that release.<br />
<br />
* The AI Reserves rework draws significantly on tech developed for DLC2<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
=== New Cheat ===<br />
* Putting here so it doesn't get lost <br />
**zmhere: Spawn a zenith miner probe on the planet you are looking at<br />
<br />
= Bug Reports =<br />
<br />
* bug with nomad planet. Galaxy map doesnt show that theres a connection between XFA and nomad 4, but I have a wormhole connection on the planet maps (noted by Zeus) https://discordapp.com/channels/240637654717300736/698572497171251200/759900272226336819<br />
<br />
* bug with "Fat snake" generation -- galaxy setup won't allow me to zoom all the way out, so I can't see the full map. To be clear, it will show the full map at first, but any adjustment to zooming prevents zooming back out (noted by Zeus). Check map seed 711896468 more context here: https://discordapp.com/channels/240637654717300736/698572497171251200/761795350510960670<br />
<br />
* Several bugs/oddities (reported by Zeus): 2) Miners destroyed some of ZA territory; ZA chose a non-contiguous planet to compensate.<br />
<br />
*The ZA doesn’t seem to be too keen on protecting the territory it gained from the pioneers. It builds up units, and then they sit there. The ships move when the ZA's default territory is attacked. https://discordapp.com/channels/240637654717300736/698572497171251200/765741580375162951<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Spire fleets being eaten by miners cause errors<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
*ZA can generate 100s of strength very quickly ... this is occurring with only 1 ZA (5 intensity) enabled after it is reduced to 3/4 of its territory I think this is part of the reason it has been so hard to hack the ZA even with a massive fleet. In this save, I have forces either side of Kleinrock, the border world of the ZA. I can take this pretty simply. But within minutes, the ZA generates 2K+ strength and will assault my planet in a counter-attack that is quite silly (noted by Zeus) https://discordapp.com/channels/240637654717300736/698572497171251200/759906431867551775<br />
<br />
= Patch Notes =<br />
<br />
== 2.609 ==<br />
<br />
* Make the ZA better at detecting war.<br />
* The DZ overall power level is now 0 when the DZ is dead<br />
** Thanks to zeus for reporting<br />
<br />
* The Nomad Planet Notification can now use a different icon when a nomad planet is crashing (once chris does the new icons)<br />
* The Nomad Planet Notification hovertext now gives you an approximate "time till we crash"<br />
** Suggested by zeusalmighty<br />
<br />
* Improve the ability of the ZA to respond to pioneer spawn time interruptions by decreasing the spawn timers when the interruption stops.<br />
** Reported by ovalcircle<br />
<br />
== 2.608 ==<br />
<br />
* The Nanocaust can no longer get ZA ships<br />
** Suggested by Ovalcircle and seconded by zeus<br />
<br />
== 2.607 ==<br />
<br />
* The Nomad Planet to move soon Notification now also colour-code the planet name by owner<br />
** Suggested by Mac<br />
<br />
== 2.606 ==<br />
<br />
* In a nomad galaxy, a planets first move is now 5-15 minutes later, to prevent low-mark planets from running away from the player before they can capture the resources<br />
** Thanks to zeus for suggesting<br />
<br />
* Nomad planets now say 'Will move in Xmin Ysec' in the planet hovertext instead of just the number of seconds<br />
<br />
* The countdown timer till a nomad moved (in both the Notification and the planet hover text) now uses different colours when the Nomad is close to moving<br />
<br />
* Rename Fat Snake to "Cubular".<br />
** Cubular must be at least two planets wide<br />
<br />
* Resolve some problems with the ZA having too many friends<br />
** Thanks to ovalcircle for reporting<br />
<br />
== 2.605 ==<br />
<br />
* Buff Spire Guard Posts (unique for Spire Hammer AI Type)<br />
** Thanks to NRSirLimbo for suggesting<br />
<br />
* Fix a bug where during their initial expansion, the DZ would decide to go target ZA planets across the galaxy.<br />
<br />
== 2.603 ==<br />
<br />
* Fix a bug that was causing games saved while the ZA was trying to expand to have a hiccup in their strength buildup<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Fat Snake changes<br />
** The snake can now go clockwise or counterclockwise<br />
** Add a "Varied" number of planets per chunk<br />
<br />
* Make sure the Fallen Spire regenerates a new Relic if the Miners ate a planet with an undiscovered Relic<br />
** Thanks to zeus pointing this out<br />
<br />
* Improve the ZA journals and tooltips to clarify some mechanics<br />
** Thanks to a conversation with zeus<br />
<br />
== 2.512 ==<br />
<br />
* Add a new variant of the Squares map type, where all the little clusters are also laid out in squares<br />
** This also includes some minor improvements to the LinkPlanetLists code, to try to make more interesting linkages<br />
<br />
* Add a new Fat Snake map type<br />
<br />
* Improve post-civil war ZA behaviour<br />
** The ZA has more time to retreat before being hostile to the AI, and is better at not triggering threat against the player in the process.<br />
** The ZAs who were at war will keep shooting at eachother as they retreat (so if you had 3 ZAs ganging up on one, as soon as the 1 is weak enough there will be a bloodbath)<br />
*** Thanks to a bug report from Ovalcircle<br />
<br />
== 2.509 ==<br />
<br />
=== Zenith Architrave Updates ===<br />
<br />
* ZA should regrow territory eaten by Miners<br />
** Pointed out to me by zeus<br />
<br />
* Quiet some leftover ZA debug logging<br />
** Thanks to Oval for reporting<br />
<br />
* ZA bonus civil war attacks (mini wormhole invasions by the ZA to make sure a civil war ends eventually) now only kick in after 15 minutes<br />
** Thanks to oval for pointing out that this previous code didn't actually wait the requested time, and zeus for suggesting increasing the time to 15 minutes<br />
<br />
* Weaken the ZA hacking response.<br />
** Thanks to zeus for suggesting<br />
<br />
* Tweak the ZA notitifaction a bit<br />
** Thanks to Puffin for suggesting<br />
<br />
=== Nomad Planet Updates ===<br />
<br />
* The AI's response to a nomad planet hack now also allows it to send ships after miscellaneous player targets (generally things like GCAs and economic command stations) to distract the player<br />
<br />
* The Nomad Planet crash response now scales based on the overall power level of the player(s) and their allies<br />
<br />
* You can now say whether you want the nomads to move Fast, Medium or Slow (this controls how often they move)<br />
<br />
* Nomads now must move a bit further<br />
<br />
== 2.507 ==<br />
<br />
* Continued improvements to how the DZ manage their ships in the early game<br />
<br />
* When killed, a Zenith Miner will leave behind wreckage, in the form of a slightly-better-than-usual metal generator.<br />
** This is intended to be a cool little tidbit but not to impact balance<br />
*** Thanks to a discussion with starkelp for this feature<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
(Released April 21st, 2020) <br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
*** Volatile Shock Frigate (Splash)<br />
**** Varient of the Volatile Tesla Frigate, it exchanges it's damage bonus against higher energy targets for a faster fire rate of 7 second reload.<br />
** Chain Lightning Frigate (splash)<br />
***Tesla Frigate without the volatile or energy multiplier. Default 15 second weapon fire reload but has the burstfire mechanic -- it can fire up to 3 times in quick succession before a long cooldown (30 seconds). Does bonus damage to stacks<br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units (the concentration mechanic could also replace these multipliers). <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses. (Badger notes: I don't think golems are the corpses of zenith, are they? Regardless, that theming isn't appropriate for the ZA or DZ, since these are living Zenith societies.)<br />
(Demo): Afaik, golems are indeed dead zenith. Humans are simply installing the equivalent of control cybernetics to reanimate them. I suppose it wouldn't be fitting if they're "dead" but they're still zenith, so I kinda thought it'd be appropriate that some new golems were added to the DLC centered around the Zenith.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Shockwave Golem: A Golem equiped with a tesla style weapon (aoe blast centered on ship) that takes a long time to reload (10 seconds maybe), but once charged it knocks anything below mass 6tx away from the Shockwave Golem. The shockwave itself deals high damage, and strikecraft that survive can be expected to be pushed all the way across the gravity well, while guardians and frigates will only be pushed a moderate distance away.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
*Hammer Golem: Has a single target rapid fire weapon. Said weapon deals high damage and has a small aoe. It also has a longer than average range.<br />
<br />
* Attritioner Golem:<br />
** Same as Classic's Spire Attritioner, but as a Golem. Does x amount of attrition damage to all enemy units on the planet per second. No guns (or very tiny guns just as a basic placeholder), and relatively fragile with low shielding.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus<br />
** Garrison: This unit gains more shots as more units are loaded inside of it. Think AI war classic carriers or assault transport. <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
For Consideration <br />
<br />
* Genecist AI has Dire Guard Posts replaced with Scourge Fortresses or Dire versions of the scourge guardposts (suggested by Zeus)<br />
<br />
* Spire Hammer AI has dire version of Spire guardpost (tries to seed at least one) (suggested by Zeus)<br />
<br />
* Ragnarok AI has a AI version Jormangadur in its praetorian fleet (suggested by Zeus)<br />
<br />
* Gladiator AI has upgraded Usurpers based on the Pioneers -- seems like this would be an interesting way to help this AI type standout. Like the idea of the new AIs incorporating not only the units but the personalities (suggested by Zeus)<br />
<br />
* Praetorian AI gets extra Borers or can use them more frequently -- the idea is that it likes to use Borers to shorten distance of its HW and yours so it can use its Praetorian fleet more aggressively. I saw this happen in a game and it was really cool to see it camping a world away from my HW (suggested by Zeus)<br />
<br />
* Option to allow human HW to spawn on nomad. Perhaps this will be unbalanced but it could be a fun feature and potentially lead to some interesting mods. (suggested by Zeus)<br />
<br />
===Quickstarts===<br />
Introductory level<br />
<br />
Zenith Doorways of Doom: Some new Zenith exogalactic invaders have arrived in our galaxy! However, it seems like they are not a unified force. While we have noticed them engaging both the AI and us, they seem to focus on destroying each other, especially when one appears to get stronger than the others. Perhaps we could use the chaos these to our advantage?<br />
Features: 100 planets simple, 5 intensity 5 ZA, AI difficulty 7.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:The_Paradigm_Shift&diff=40802AI War 2:The Paradigm Shift2020-10-13T22:59:12Z<p>Democracy? Democracy!: /* Turret Rebalance */</p>
<hr />
<div>== Known Issues ==<br />
<br />
* Any bugs or requests should go to our [https://bugtracker.arcengames.com/ mantis bugtracker]<br />
** 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.<br />
** 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:<br />
*** Windows: C:\Users\username\AppData\LocalLow\Arcen Games, LLC\AIWar2\Player.log<br />
*** macOS: ~/Library/Logs/Arcen Games, LLC/AIWar2/Player.log<br />
*** Linux: ~/.config/unity3d/Arcen Games, LLC/AIWar2/Player.log<br />
<br />
* '''Multiplayer is in public alpha, as noted below.''' There is a [[:Category:AI War 2: All About Multiplayer|detailed multiplayer guide]] that we are working on building up.<br />
<br />
* Feel free to [https://discord.com/channels/240637654717300736/242012213580136448 join discussions on discord]!<br />
<br />
== What Does Multiplayer Alpha Mean? ==<br />
<br />
[[:Category:AI War 2: All About Multiplayer#Initial Caveats And Related Resources|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.<br />
<br />
== What's this phase all about? ==<br />
<br />
We've been preparing for this for months, tightening up the codebase and getting everything ready as much as possible. Now it's time to start having machines actually talk to one another, and then refine from there. At this point, LiteNetLib, Steam, and GOG Galaxy are all fully working as communication frameworks, and the game is in an alpha state (as of September 9th) where not all of the functionality is there, but the game can be played together. <br />
<br />
It's important to remember what an alpha is! There are glitches and inefficiencies, and we'd like to know more about those. There are also glaringly missing features. Beta means feature-complete but not bug-free, and we're not there yet. Please don't assume that we will implement some feature you want, like the ability to share X between players. If you're testing the alpha and want something, please do drop us a message and ask for it, just in case.<br />
<br />
We expect to be into beta of multiplayer in late September. Hopefully the alpha and beta periods are both short due to all the work of the last phase, but we shall see how it shakes out.<br />
<br />
Once we get into a stable beta period for multiplayer, then we'll let the clock run a bit and Chris will work on adding interplanetary weapons to the base game as a free update (that's the last of the kickstarter stretch goals). This phase should wrap up all our kickstarter promises (including a laundry list of other smaller items).<br />
<br />
Badger has already done the bulk of his work for the second expansion, Zenith Onslaught. Chris has done none of his work for that, as yet. Once multiplayer is in the "let it exist in beta and have people bang on it" phase, then Chris can circle in and get his work done for DLC2 along with those base game bits for interplanetary weapons, etc. The full version of multiplayer should launch alongside of DLC2, but we're not sure exactly when. October?<br />
<br />
Either way, multiplayer will be in a solid state that is "beta but just because we want more time with more people testing it" for a month or so while the DLC2 work from Chris's end happens. None of the actual multiplayer stuff is delayed in any fashion for DLC2, it's been the other way around.<br />
<br />
== Version 2.613 ==<br />
(Not yet released -- we're still working on it!)<br />
<br />
* In the settings menu, in the game tab, hovering over the enable/disable button for mods and expansions now gives a very brief tooltip with just the name of the item in question, and brief instructions on what will happen. It then has a note that for the full explanation, you should hover over the name of the thing, to the left. <br />
** The descriptions of many mods were so long that it was impossible to see what you were doing as you tried to click things, previously! This works around that while still allowing for the long descriptions.<br />
<br />
* When you are viewing the list of major AI structures on a planet, it no longer just gives you this jumbled unsorted list of every item.<br />
** Now it sorts them by name, and for any that have multiples, it shows you x2 or x3 or whatever rather than just writing them multiple times. Yay legibility!<br />
<br />
* Hovering a planet in the Game Lobby now tells you that you can click on it to make it your new homeworld<br />
** Suggested by the Puffin Emeritus, thanks in part to discussion by Asteroid, Arnold Schwarzenegger, and others.<br />
<br />
=== Turret Rebalance ===<br />
<br />
* Upped base Turret type count of RaidOffensiveTurrets and GeneralTurrets Battlestation/Citadel fleet design templates.<br />
<br />
* Seeker Turret base damage reduced to around a third. Versus things such as normal Guardians and Starships, it does less than a Nucleophilic Turret would, but would still start to outscale it on larger targets.<br />
** Said larger targets is around mass 8.<br />
<br />
* Ruffian Turret range increased 25%, damage increased 50%.<br />
<br />
* Scrap Turret reload time 2s -> 1s, damage doubled, shots to self destruct 15 -> 20.<br />
** Results in it doing 4x the DPS it was before, allowing it to get more shots out overall if under enemy fire. Double damage and 33% more "shots until self destruct" result in an overall 2.6x damage increase before being destroyed, assuming no enemy fire.<br />
<br />
* Blaster Turret damage increased 30%.<br />
<br />
* Counter Sniper damage reduced 20%.<br />
<br />
* MLRS Turret damage increased 20%.<br />
<br />
* Tripled Harmonic Turret base damage, doubled Harmonic effect damage and cap.<br />
<br />
* Increased Fortified Tesla range and AoE radius by 50%.<br />
<br />
* Decrease firing rate of Plasma Turrets<br />
<br />
* Changes contributed by Puffin Emeritus<br />
<br />
Please note, turrets are still being rebalanced. We are updating them one chunk at a time so everything doesn't radically change overnight.<br />
<br />
=== AI Reserves Rework ===<br />
<br />
* When a player starts deepstriking, there's a notification that the AI reserves will start spawning "soon" (a minute or two). <br />
<br />
* Once the reserves are ready to start spawning, they will begin creating wormholes on planets near the place you are attacking. Each wormhole will periodically release AI Reserves ships that will fly to any deepstriking planets you have and begin attacking. Each wormhole has a separate budget, and will spawn more ships the longer it exists. The strength of the ships spawned is based on AI Wave size, so AIP/AI difficulty are factored in.<br />
<br />
* When you stop deepstriking, the AI reserves ships will fly back to their wormholes and vanish. Once all the ships are gone, the wormholes will persist for a short while (3 minutes at release time), then vanish.<br />
<br />
* If you are deepstriking at multiple planets, a new Wormhole will be randomly placed near one of the planets you are deepstriking. As a result, deepstriking multiple places at once can split the reserves response.<br />
<br />
* The ships spawned are based on the sort of ships the AI uses at a given planet (so hopefully you'll get a good amount of variety). There's also a unique new ship for the Reserves designed by zeusalmighty.<br />
<br />
* Goals: <br />
** Make the AI reserves have some new, unique behaviour, to make them more interesting/exciting.<br />
** Make it so that 'Oops, I triggered the Reserves' feels less like a coin flip where sometimes you get crushed out of nowhere<br />
<br />
* Definitely needs some balance feedback<br />
<br />
* Note: This is technically a DLC2 backport, since it reuses tech from DLC2<br />
<br />
* New field in the AI Behaviors section of the galaxy options: AI Reserves Grace Period<br />
** If you lose a planet deep in AI territory, how many seconds will you have to recapture the planet before the AI Reserves start anti-deepstriking attacks against you?<br />
** The default is 60 seconds (1 minute), to give you a moment to collect yourself, but still probably have the deepstriking attacks kick in at least a bit if the AI snipes you off a forward planet base.<br />
** This is vastly reduced from the 20 minute grace period (1200 seconds) that the game gave you as of last version, but the AI Reserves attacks are more gradual now in general. And you can still increase this to 20 minutes if you want (but that will not be considered a "pure" 10/10/10 win if you're aiming for that).<br />
** Thanks to Badger and Smidlee for suggesting.<br />
<br />
=== Strength Calculation Revisions V2 ===<br />
<br />
* The strength calculation constants have been moved into the ExternalConstants xml file so that those can be modded or so that players can tweak them.<br />
** We have balance_strengthcalculation_hull_divisor, balance_strengthcalculation_shields_divisor, and balance_strengthcalculation_final_divisor from the prior build.<br />
** We also have a new balance_strengthcalculation_dps_multiplier, which allows us to weight DPS higher.<br />
** Thanks to Puffin for suggesting.<br />
<br />
* A new "GameEntityStrengthList.txt" file is written, which just exports the ship names and their strengths.<br />
** This allows us to do quick diffs with different values for the strength calculations and see how those affect overall strength amounts.<br />
<br />
* The new DPS multiplier is now set to 2, which winds up having the strength values in this version be more like what they were in 2.609 and prior in overall scale, but with things more appropriately weighted towards DPS.<br />
** There are a lot of ships that have almost identical strength to before, some golems and such that now report nearly double the strength they did before, and other things which have far less strength.<br />
** The spread is different, but remember that these are for informational purposes (and AI decision-making on where to put stuff and if it can win a fight) only. These don't actually make the units stronger or weaker, it's just how it's estimating their stats translate into a single "strength" number.<br />
** Thanks to Puffin for suggesting that DPS was still under-represented.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an issue from the tooltips that show how long it has been since the humans last owned a planet, where it was showing information based on when the AI last reinforced the planet instead.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* The "major AI structure" field now only counts for ships that belong to the AI Sentinels.<br />
** So this means that ships from Civilian Industries, or Scourge, or whatever else, won't ever have this flag on them in a way that matters (the flag will still be set to true, but it won't count for the rollups).<br />
** Essentially, if you are playing with allied scourge or just civilian industries in general, they could block ownership of your own planets by accident and cause deepstrike warnings really fast.<br />
** Thanks to CRCGamer for explaining what wasa happening, and Endovior for the report.<br />
<br />
* Fixed an issue where savegames were incorrectly deserializing how long it had been since the humans or the AI had last controlled a planet, leading to nonsensical results all over the place.<br />
** This data all gets wiped out for older savegames now, since it was gibberish anyhow.<br />
<br />
=== Updates To Included Mod: Civilian Industries By StarKelp ===<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where various Militia Buildings could be caught by functions checking for Guardposts or AI structures.<br />
*** Chris fixed this on the game end as well, but this was some pretty poorly done entity code all things considered, so its better now.<br />
*** This may additionally fix a weird bug that Waladil was experiencing where Astro Trains would attempt to path to Civilian structures.<br />
** Fixed a bug where Militia would always try to expand with your allies even when disabled.<br />
*** Thanks to many individuals for reporting.<br />
** Fixed a bug where some cleanup code in the mod could get too aggressive, causing out of index exceptions.<br />
*** Thanks to Endovior on the Forums for reporting.<br />
<br />
== Version 2.612 Divide By Zero Hotfix ==<br />
(Released October 12th, 2020)<br />
<br />
* Fixed a bug in the most recent version where if there were no planets valid to reinforce in a category, it could have a divide by zero exception.<br />
** Thanks to Metrekec and Badger for reporting.<br />
<br />
== Version 2.611 AI Defensive Huddle ==<br />
(Released October 12th, 2020)<br />
<br />
* There are now Journal entries for Hunter/Warden/Praetorian, which pop up when you see that faction.<br />
<br />
* There's now an Advisor journal entry suggesting that players should use some of the Automations settings, if they haven't used those and they are 5 minutes into the game.<br />
<br />
* The 'Auto-Build Assault Frigates option is now an int-slider, so you can ask all your planets to build up to a specific number of assault frigates.<br />
** Suggested by ParadoxSong<br />
<br />
* Slight buff to CPA movement speeds. CPA ships from further away now move a bit faster, to try to increase the peak CPA incoming ship rate.<br />
** From a discussion with Democracy<br />
<br />
* Hacking a Tech Vault now shows the tech line to be granted in the tooltip for the Hack<br />
** Thanks to Asteroid for suggesting.<br />
<br />
* Spire infested macrophages now turn to Liches when nanocausted<br />
** Reported by GreatYng.<br />
<br />
* Player allied scourge can create an extra builder, thus allowing them to do more upgrading<br />
** Thanks to GreatYng.<br />
<br />
* Human Resistance Fighters will no longer attack planets with AI Eyes on them<br />
** Their appearance had a bad tendency to alert the eyes <br />
** Suggested by Strategic Sage.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a problem with the GCA hack text<br />
** Thanks to ParadoxSong for reporting<br />
<br />
* Added a new "savegames_from_this_version_are_broken_message" field, which lets us specify when a given game version is broken, and what is broken about it.<br />
** This should be something that is hopefully very rarely used, but it does eliminate confusion about something like the fact that games saved in 2.600 are all broken, for instance.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Change the 'Hack DS for ships' hacking hovertext<br />
** Reported by GreatYng.<br />
<br />
* AI Eyes no longer give you an alert if you aren't Watching the planet. Previously you would get alerts if you'd even explored the planet<br />
** Thanks to Asteroid for the bug report.<br />
<br />
* In the StrengthCounting code, if there are any planetfactions missing for factions that exist in the game, it now complains about this in more detail so we know what is happening.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed a bug where the game would not correct for missing planetfactions on destroyed planets. This could interact with factions that were added belatedly after planets were already destroyed.<br />
** Thanks to zeus for the report and save.<br />
<br />
=== Dyson Anti-Hacking buffs ===<br />
<br />
* Each time you hack a dyson sphere, the antagonized sphere gets more powerful<br />
* The Antagonized Dyson Sphere now attritions all enemies on its planets<br />
* The Antagonized Dyson Sphere now takes the safest path to the player homeworld, not the most direct, once its been hacked a few times<br />
* Decrease the number of Sentinels you can have from hacking the Dyson; they were felt to be too powerful<br />
** Prompted by GreatYng<br />
<br />
=== Strength Calculation Revisions V1 ===<br />
<br />
* Changes to how strength is calculated:<br />
** Previously, hull health was added in based on a formula that included dividing it by 12. That is now divided by 28.<br />
** Previously, shield health was added in based on a formula that included dividing it by 20. That is now divided by 30.<br />
** The DPS portion of the strength calculation has been left alone for now.<br />
** The final step of the strength calculation was dividing it by 20, but now we're dividing by 16.<br />
** Hopefully this leads to more accurate strength values that better reflect the fact that firepower is king in determining battle results.<br />
** We may need to keep adjusting this, but didn't want to go too far in one direction right away.<br />
** Having increasingly-accurate strength values will lead to better AI decisions, as well as making the odds more clear to human players as well.<br />
** Thanks to Puffin for the suggestions that led to this change.<br />
<br />
=== Overhaul of AI Sentinels Reinforcements And Alert Levels ===<br />
<br />
* The concept of "alerted planets" in this game has always been a bit on the loose side, particularly compared to the first AI War.<br />
** It was hard to tell what planets were alerted, for one thing, and for another, planets were not allowed to reinforce planets that were not on alert. It was a very binary system.<br />
** This in some ways really made it so that deepstrikes were more powerful than they should have been (thanks to those planets never having been reinforced), and even made surprise homeworld assaults too effective.<br />
** In general it could cause issues with too-few reinforcemetns on the map as a whole, which would then lead to tsunami CPAs actually draining the galaxy of AI sentinels mobile ships.<br />
<br />
* We have now added a new AISentinelAlertLevel table, which can be customized or modded, but has alert levels defined in four tiers:<br />
** 1: Lowest Readiness<br />
*** Reinforcement cap: 30%<br />
*** Reinforcement priority: 50%<br />
*** Sentinel command at this planet is unaware of any credible threat to itself within the galaxy.<br />
*** This is most planets until the AI has lost a few planets.<br />
** 2: Distant Readiness<br />
*** Reinforcement cap: 60%<br />
*** Reinforcement priority: 100%<br />
*** Sentinel command at this planet is aware of threats elsewhere in the galaxy, but does not judge that any special precautions need to be taken at this location.<br />
*** This is most planets after the AI has lost a few planets.<br />
** 3: General Readiness<br />
*** Reinforcement cap: 80%<br />
*** Reinforcement priority: 250%<br />
*** Sentinel command at this planet is not aware of any direct threats to itself, but feels that it has a general duty to remain prepared for the unexpected.<br />
*** This is triggered by certain AI structures on planets, such as troop accelerators, raid engines, or an AI overlord.<br />
** 4: High Readiness<br />
*** Reinforcement cap: 100%<br />
*** Reinforcement priority: 600%<br />
*** Sentinel command at this planet is aware of direct and credible threats, and requests aid to defend itself or repair from past assaults.<br />
*** This is triggered in much the same way that the "alerted" status previously was, but now you can actually see it. This is based on having been attacked recently, or being on the front lines against an enemy planet (such as humans, not only humans).<br />
<br />
* A bunch of extra instrumentation has been put into planet serialization logs, to help with any issues we may run into with that.<br />
<br />
* Planets now not only track their current alert level, but also keep track of the last time a reinforcement happened, how strong the last reinforcement was, how many reinforcement events have happened so far this game, and the total strength of all the reinforcements so far this game.<br />
** Note that since this data is only being tracked starting now, it won't have any useful information about savegames that were started prior to this version. It will just tell you how much has happened since you resumed playing in this new version.<br />
<br />
* A new xml tag, triggers_general_readiness_on_ai_sentinels, has been added to unit definitions in general.<br />
** If any unit with this set to true is on an AI planet, then the sentinels on that planet will have a minimum alert level of 3. Even if neutral or hostile to the AI sentinels.<br />
** This is currently applied to: troop accelerator, raid engine, magnifier, superterminal, coprocessor, major data center, risk analyzer, exo wormholes, overlords phase 1 and 2.<br />
<br />
* There is a new CalculateAISentinelAlertStatus() that happens every sim frame and which determines what the SentinelsAlertLevel is on each planet.<br />
** It's valid for SentinelsAlertLevel to be null, which basically is it saying "not relevant."<br />
** "The Distant Readiness" status is calculated instead of "Lowest Readiness" if the AI has lost more than 3 planets.<br />
*** This could trigger immediately, or very nearly so, in galaxies where there are a bunch of other factions, even if they are allied to the AI. The AI does not like losing planets, and doesn't care who took them.<br />
*** A faction having influence over a planet won't trigger this, so generally the other faction would have to be hostile to the AI to cause this to tick up.<br />
<br />
* Previously, the logic for AI Sentinels reinforcements to planets was kind of stupidly simple.<br />
** Essentially if the planet was on alert, which was an invisible status, then it would get an even portion of the reinforcement budget that the AI is working with at the moment. This was... extremely simplistic. In the impossible event that no planets were alerted, it would reinforce the king planet. But that was impossible, so never happened.<br />
** This is being entirely reworked as follows:<br />
*** First, roughly a third of the budget is allocated to alert-level 4 planets.<br />
**** This is divided evenly between all of the tier 4 planets, so the more of them there are, the less of an effect this has. Remember, these used to be the ONLY planets getting any reinforcements.<br />
*** Then, roughly 10% of the budget is allocated to alert-level 3 planets.<br />
**** This is divided evenly between all of the tier 3 planets, so the more of them there are, the less dangerous this is.<br />
*** Lastly, the remainder is applied to planets at random, based on the probability of them needing reinforcement in general as defined by their alert level.<br />
**** So in this step, tier 3 and 4 planets might get more budget from this portion, and in fact are very likely to.<br />
**** This remaining budget is broken up into 10 allotments, which are given out based on whatever pops up.<br />
** Previously, if there was any remaining reinforcement budget after trying to give it to all the planets in question, it would donate this to the CPA budget. This no longer happens. It just saves it for a future reinforcement cycle, now.<br />
** Also a change is that, previously, a reinforcement booster (like troop accelerators) would cause extra budget to be used at the planet in question (thus taking from other planets, in effect). That is no longer the case.<br />
*** Now that extra "reinforcement boost" is just free extra budget, which is how it worked in the original AI War. That's way more in keeping with the theme of what those units are actually supposed to be doing, anyway.<br />
** Additionally, there were a lot of cases where a planet that was "full" could wind up wasting quite a bit of budget that then would just get thrown towards a CPA later on. Instead, that budget is now thrown over to another planet in whatever the current budget category is.<br />
*** So for example, an alert level 4 planet that is already full will wind up donating its unused budget to be spread evenly among the other remaining planets that are alert level 4. And then that cascades on down the priority chain.<br />
<br />
* IAIDefensePlacerImplementation's Reinforce method now requires an int AddedStrength reference parameter, which should be incremented inside that method to let the caller know how much strength actually went up in this case.<br />
** This is a big deal for our proper monitoring of how much strength actually resulted from each reinforcement event, as opposed to how much AI budget was spent on the event (those are two different things, and the latter wouldn't mean anything to the average player).<br />
<br />
* Same with PlaceGuardPosts() on IAIGuardPostAndCommandPlacerImplementation.<br />
** This is used only for reconquest events, but still should be counted in the information that the player can see on reinforcements that happened at a planet.<br />
<br />
* Added a new "Log Reinforcement Event Details" option in the debug section of the personal settings menu.<br />
** Writes the details of each AI Sentinels reinforcement event into your main log. If you suspect something is off with how budgets are being spent or allocated, then this is a way to check up on that.<br />
** This is of particular relevance right now, with the logic all being so new!<br />
** So far, everything that is popping out in the log looks very sensible, so this is good -- that means we can actually release this.<br />
<br />
* In the planet tooltip, the text "AI Reinforcement Points" now says "AI Reinforcement Spots" to be less ambiguous.<br />
** In that same tooltip, it now gives some general information about the time of the last reinforcement of the AI sentinels at that planet, and what its strength was.<br />
** It also shows you the alert level of every AI planet. (Of course, planets you have not explored yet show none of this.)<br />
** If you hold any of the hotkeys that give you medium-or-more details about the planet, then it will show you the description of the alert level, and more details about all the reinforcements that ever happened at that planet.<br />
<br />
* It is possible that, given how reinforcements are being spread out now, that they may need to get a buff to their budget.<br />
** It's worth noting that, given the nerfs we made to the AI budgets in the recent past where the AI can't gift to the reinforcement budget if another budget fills up, this may need a boost anyhow.<br />
** That said, the budgets are being distributed so much more effectively now, and never just shunted over to the CPA budget, so it may actually be okay. We need some feedback on this.<br />
*** This change, of course, may mean that CPAs are substantially less frequent now since the reinforcement budget isn't being diverted to that anymore. It's hard to know just how much that was happening before.<br />
** We don't want to give the AI an unintentional mega buff to their reinforcements, so for now we're leaving the actual budget amounts alone. We suspect it's too low, but look forward to hearing from folks on that.<br />
<br />
* Added a new AIUtilityMethods static class, for ease and efficiency of access of certain things.<br />
** GetGuardingUnitAICostPurchaseCap() has been moved there.<br />
** GetAICostPurchaseCapForBudgetType() has also been moved there.<br />
** And GetAIToPurchaseCostPresentForBudgetType().<br />
<br />
* Previously, the cap on strikecraft strength at AI homeworlds was always 2x that of any other planet. This was insanely too high.<br />
** This has been changed so that it thinks this way for the initial seeding of the galaxy only (so that it starts out strong), but after that it isn't applied at all.<br />
<br />
* Previously, the cap on strikecraft strength guarding an AI-owned former human homeworld was 67% of normal. A nice penalty that makes sense.<br />
** This now applies to the other categories of reinforcements at those sorts of planets, so also turrets and guardians and so on.<br />
<br />
* The AI homeworlds are now constrained a bit by gametime in terms of what their total caps can be.<br />
** They start out at the 0 second mark with their cap set at 50% of the max cap that they will later have.<br />
** Over the course of the first 3 hours of the game, in 10 minute increments, their cap raises from 50% of what it would normally be up to the full 100% amount.<br />
** This keeps the AI homeworlds from getting overly reinforced during the early game in particular, since there are far fewer alert-level-3-and-4 planets at that stage.<br />
<br />
* The reinforcement logic for planets is now more efficient, in that it now early-on discards any planets that don't have open budget for strikecraft or guardians.<br />
** If a planet has reached its "cap for now" as the game progresses, then it basically makes it more likely that a budget event will properly use that budget somewhere else.<br />
** The idea is a bit on the side of efficiency, but it also makes it more likely that the full 10 planets will get their reinforcements at other locations.<br />
<br />
* Thanks to Puffin, Badger, Democracy, StarKelp, Ovalcircle, Burner, and others for the discussions that led to all this.<br />
<br />
* In order to avoid situations where certain planets -- particularly level 4 alerted ones -- get absolutely overpoweringly reinforced, we are making a few changes.<br />
** First of all, the changes in general to reinforcements in this release already help with that a lot by distributing the reinforcement budget to not be SOLELY to alerted planets.<br />
*** Previously, if you had 1 alerted planet, then all of the reinforcement budget for the entire galaxy went to that single planet, and any overflow went to the CPA budget. That could lead to mega-death planets right next door to you.<br />
*** Also previously, if you had 6 alerted planets but had neutered 5 of them and so they were at cap, then the 6th and final one would be in that same situation again of getting all of the reinforcement budget for the entire galaxy and becoming a mega-death planet.<br />
*** Largely our existing changes in this new system already work around this, because those planets would at most be getting 30% of the budget for the reinforcements for the entire galaxy, and the rest rolls over to the rest of the galaxy. That said, it might actually often work out to more frequently be something like 36%, because of the extra weight to these planets in the "random other planets" section.<br />
**** Even so, having 36% of the budget for the galaxy going to one or a very few planets is just bad juju, frankly. Even with the 10% budget for alert-level-3 planets, we were seeing some internal test cases of homeworlds going absolutely wild because of them being too aggressively filled with reinforcements when there were not enough alert-level-3 planets to share the load.<br />
** With that in mind:<br />
*** If there are no alert level 4 planets that are free for reinforcement, then all of that budget (30% of the total) just gets used for random planets.<br />
*** If there are fewer than 10 alert-level-4 planets that are free for reinforcement, then it will shrink the budget proportionately.<br />
**** So in the case of there being 9 valid planets that can receive reinforcements at alert level 4, it will give 90% of the usual alert-level-4 budget. In the case of 4, it gives 40% of that budget.<br />
**** In the even that there are fewer than 2 planets, it will never give less than 20% of the budget. So for 1 or 2 planets, those both get 20% of the overall 30% slice, aka 6% of the final galaxy budget. And they may pick up an additional (100-16 = 84/10 = ) 8.4% from the "random assignment to planets" logic.<br />
*** If there are no alert level 3 planets that are free for reinforcement, then all of that budget (10% of the total) just gets used for random planets.<br />
*** If there are fewer than 5 alert-level-3 planets that can receive reinforcements at alert level 3, then it will shrink the budget proportionately.<br />
**** So if there is 1 out of the 5, then the budget is naturally 20% of the full 10%, and so on.<br />
** Additionally, if there are fewer top-tier (alert level 4 or 3) planets being reinforced, then the number of "desired unique random planets" now goes up by an equivalent amount.<br />
*** So for instance, if there are no alert-level-4 planets at all that have room for more reinforcements right now, then the number of random planets being reinforced goes up by 10 (from the original count of 10 to 20).<br />
*** With this, it keeps the overall "ambient reinforcements" more widespread, rather than giving a larger budget to just a few random backwater planets.<br />
*** This may be overly cautious, partly because those planets already have an alert-level-based cap on their total reinforcement amounts allowed, but we figure it can't hurt to be too cautious.<br />
** Overall, depending on how things play out, these changes should help to make it so that no one single planet gets so overwhelmingly strong, but the overall danger of the galaxy grows more realistically instead.<br />
*** Do bear in mind that the same number of units are being sent out anyhow, so this is just about where they go. Although in the past, sometimes it was sending the excess budget to CPA budget instead of units, so there may be more raw units in actual practice in some games (late into those games).<br />
*** Also please bear in mind that this doesn't create a "doomsday clock" where the entire galaxy will fill up. Rather, instead a CPA will come through and periodically clear out a LOT of these units, since CPAs specifically use existing guards rather than generating new units of their own.<br />
**** This will probably work best with the Tsunami CPAs on, which might should be the new default, but we shall see with time.<br />
**** It may also be that without the budget coming from stuck-reinforcements, that CPA budgets feel too small now on their own. It's hard to say. If that's the case, then we can up the CPA budget.<br />
*** At any rate, with Tsunami CPAs on, in recent versions we could sometimes run into cases where the galaxy was literally empty of any mobile guards right after a (smaller than it should have been due to lack of guards to free) CPA. That should no longer be a concern, but it should still thin out the guards in a way that helps counterbalance what would otherwise be a doomsday clock.<br />
*** Some of this will still just frankly take some testing, to see if we're missing anything. A lot of the variables here are based on your playstyle, the map types involved, how high the AI difficulty is, and many other difficult-to-predict factors. We did our best to account for as many edge cases as possible.<br />
** Thanks to UncleYar, smidlee, Strategic Sage, and arnaud_defrance for pointing out some of the issues that could happen with the old alert system, so that we could account for those in this system.<br />
<br />
* The description for the Troop Accelerator has been completely rewritten.<br />
** It used to say: The AI gets additional reinforcements on this planet.<br />
** It now says: The AI Sentinels are far more likely to reinforce this planet, and every time they do any reinforcements here, they get an extra 50% budget for free.<br />
** We are keeping this functionally the same for now. These will likely be intense, which is the idea. They are also rare.<br />
<br />
* GetIndexOfMostAnnoyingFaction no longer takes a boolean as its second option, but instead takes a AnnoyingFactionFlags flags parameter. <br />
** This allows for us to make more precise requests for what kind of annoying faction is required.<br />
** The two options at present are:<br />
*** DefaultToRandomNonHumanHostileFaction, which works the same as the boolean used to.<br />
*** AIMustBeAbleToSendWavesAgainst, which excludes a few factions like the macrophage and devourer, which might be very annoying at a planet but which the AI can't send waves against.<br />
**** We now use this new flag on raid engines to prevent them from getting into a situation where they want to fire, but cannot because the most annoying target on their planet is something that they can't fire at. Now they will fire, if a less-annoying-target on that planet is present that they can launch a wave against.<br />
<br />
* Raid engines previously were set to fire as soon as there were any hostile enemies on the planet with the raid engine, which was WAY too sensitive. That isn't what raid engines used to be.<br />
** Updated their description from this: Causes extra waves to be sent against anyone who has units on this planet, after a short delay.<br />
** To this: While the AI Sentinels on this planet are at alert level 4, they will spawn waves against the strongest viable aggressor every two minutes or so.<br />
** Additionally, raid engines now trip after being aggro'd for only 2 seconds, rather than the previously-required 30. Now you have to actually get them to a state of alert level 4, which takes far more doing, so they need to respond faster.<br />
<br />
=== Deepstriking (AI Reserves) Updates ===<br />
<br />
* Planets now keep track of the last time they were owned by a human, the last time they were owned by the AI sentinels, and the number of "major AI structures" that are currently on a planet.<br />
<br />
* There is a new is_major_ai_structure boolean that can be set on ships. If this is true, then they will count as "major AI structures" for the above.<br />
** Guard posts, the AI King command station version (not phase 2 mobile), AI command stations (normal and reconquest) all automatically get counted as this.<br />
** Other major structures for the AI are explicitly defined as: warp gates, AI eyes, troop accelerators, black hole machines, AI fortresses, AI superfortresses, raid engines, alarm posts, and magnifiers.<br />
<br />
* The way that "a deepstrike is happening" is calculated is a lot more complicated now, but actually does a better job.<br />
** Previously it was "players have a big force X distance away from planets they own."<br />
*** That might sound elegantly simple, but the problem is that if you have a planet you own way out in the middle of the AI empire and you lose that planet, suddenly you're deepstriking and getting hit by AI Reserves unexpectedly.<br />
** Now, if the humans own the planet, or have owned the planet within the last 20 minutes, then for purposes of deepstriking calculations it acts as if you still own it.<br />
*** That gives you 20 minutes (gametime) to get your planet recaptured before it starts thinking of you as being in enemy territory. Even if the AI recaptures the planet during that 20 minute period, it doesn't matter.<br />
** But wait! What if you are using "aggressive command station" placement? Basically, where you go hard into an AI planet, pop their command station, and throw your own up as fast as possible... before dealing with the entire rest of their planet.<br />
*** That's fine, but it will now still count as deepstriking. So if the AI Reserves were going to come for you, they'll still come for you if you use this tactic.<br />
*** Essentially, if there are any "Major AI Structures" (as defined above) on a planet, then it will NOT count as a human planet, even if it is currently a human planet. And this overrides the grace period, too.<br />
*** Actually, this means that if the AI recaptures the planet, it will be overriding the planet while it has its new command station and guard posts there. You have to kill those first, and then your grace period resumes (if you had 5 minutes left after doing that killing, then you have those 5 minutes left).<br />
*** It also means that if somehow the AI buys something from the Zenith Trader on a planet that is neutral that you then take, or something crazy like that happens, then it could wind up blocking you. That's way less likely, though.<br />
** The overall goal of these changes is to make deepstriking detection more accurate, and prevent the AI from sniping your command station and taking advantage of you... and to keep you from sniping their command station and taking advantage of them.<br />
** Thanks to Badger, zeus, Strategic Sage, Smidlee, and others for ideas on this, and Arides and Asteroid for reporting the initial issue.<br />
<br />
* In the planet tooltip, if a planet has any major AI structures on it, it now shows that number.<br />
** If you hold any of the hotkeys that show more than basic detail, then it will also list what those structures are.<br />
<br />
* In the planet tooltip, if a former AI homeworld is now owned by nobody or owned by someone else, it now says it was a former AI homeworld.<br />
** Same deal for if the planet was once a human homeworld.<br />
<br />
* In the planet tooltip, if a planet was owned by humans within the last 20 minutes, but is not currently owned by them, it shows how long ago it was owned by humans.<br />
** It also tells you that "Deepstriking reprisals, if relevant, will not take place until it has been 20 minutes"<br />
** If humans owned the planet longer ago than that, it now shows how long it has been since humans owned it, but in a drab sort of green, and without the nice message about deepstrikes.<br />
<br />
=== Mod Updates: Extended Ship Variants by NR SirLimbo ===<br />
<br />
* Fixed the "Elctro-Strike Corvette" (typo).<br />
** Thanks to crawlers for reporting on Discord<br />
<br />
*Fixed the Oculus being overpowered. Its damage modifier to enemies over 2 minutes at the planet has been reduced from 3 to 2.5, and its energy use per 1x added multiplier increased from 2500 to 3500.<br />
** If this needs further adjustments, feedback is welcome.<br />
** Thanks to ArnaudB for reporting on Discord<br />
<br />
'''For the Fallen Spire Extended Ship Variants Mod:'''<br />
<br />
* Reduced the health and shield of the EMP Missile (from the EMP Missile Frigate) from a base of 5000 each to a base of 100 each (reduced by 98%) since there was no way to shoot them down, ever.<br />
** Also disabled the EMP Missile from having Strike Craft status, which means health (unless default settings were changed) goes down to actual 200 combined instead of 20000 (wow, 99% reduced health now!) and damage goes down from 750 to 500.<br />
** Background is that these missiles come in a swarm that's supposed to get some missiles shot down. Which, at the speed versus time to kill was impossible unless the entire enemy fleet had nothing to do other than point defense.<br />
<br />
== Version 2.608 MP Deduplication And Bugfixes ==<br />
(Released October 7th, 2020)<br />
<br />
* Make it even harder for the zenith trader to be killed improperly<br />
** Thanks to Mckloshiv, Fritz1776, and GreatYng for reporting<br />
<br />
* Made the "Coroutine container not configured... did you forget to call Init?" message not something that just goes to the player log, as that was really confusing.<br />
** That actually now self-repairs, in cases where it may have had a problem for whatever reason. This had to do with dropdowns hiding themselves and not always doing it properly.<br />
** This was probably invisible as an actual error, but probably left the dropdown visible when it should not have been.<br />
** Thanks to A Classy Mushroom for reporting.<br />
<br />
* Fixed another bug that could happen during "UIBehaviour.IsActive()" when dropdowns were being hidden in some contexts.<br />
** This was probably invisible as an actual error, but probably left the dropdown visible when it should not have been.<br />
** Thanks to A Classy Mushroom for reporting.<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a potential source of multiplayer desync in the trade code.<br />
** Fixed a long standing source of 'stutter lag' in the Trade Station Creation code.<br />
*** 'Stutter lag', for lack of a better term, is when ship movement looks to be moving like a power point presentation.<br />
*** It was notably frustrating to hunt down because it can happen even without any slowdown, at 100% speed even!<br />
<br />
* Fixed a very unexpected error that could happen in DoAICounterattackForcesPerSecondLogic(), which we instrumented yesterday in order to find where the error could be, but did not actually fix anything with. Turns out that ShipGroup_WavesFromHere_Normal's draw bag could sometimes return a null result. We now continue trying to pull a non-null result for 30 tries if this happens for some reason, and then if it is still null then skip the parts that would throw errors.<br />
** Thanks to Democracy and Puffin for reporting.<br />
<br />
* Fixed a severe multiplayer bug that was leading to a wide range of issues, mostly involving having a lot of extra ships that should not exist on the client.<br />
** These involved unloading ships from transports, ships coming out of guard posts, ships spawning from waves, ships spawning in hacking responses, turrets being placed in bulk batches by the player, and assumedly other cases as well.<br />
** Essentially in all of these cases, the client and the host wind up with different values for their PKIDs of those units, and thus on the client the units get deleted and the host sends over the proper copies that they have created.<br />
** The problem was, the client was doing the deletions in INCREDIBLE slow motion. It would remove those ships at a rate of about 1 per 3 seconds, rather than "all of the ships that are erroneous go away every 3 seconds."<br />
** The reason for this is how we are ruthlessly scrubbing out the existence of these ships; it was breaking out ability to loop over the full list of ships properly. So we instead gather up the list of ships first, then ruthlessly delete them, and all is well.<br />
** There are still going to be spurious brownout notices that pop up at the moment, and extra ships that appear, but they should only last about 3 seconds and so should not cause any major lag or other problems, unlike what was happening before.<br />
** Our PKID allocation chain is going to be revised in order to completely bypass this sort of problem in general, but we first wanted to fix this issue since whenever there IS a problem, the game is supposed to be able to repair itself, and so these problems sticking around longer and being easy to reproduce (in the end) were a golden opportunity for us to make sure all that works. Now it does.<br />
*** When the PKID allocation chain is reworked, there won't be those spikes of deletions and recreations, or those spurious brownout notices. Until then, that will be an ongoing minor annoyance.<br />
** Thanks to OzoneGrif, Puffin, Democracy, 𝔳☆𝔩𝔱𝔞𝔤𝔢, and probably others for reporting.<br />
<br />
* Added in a variety of logging on deserialization and serialization surrounding "MinorFactionCommon Data," so that we can tell by manual review a bit better if something is off.<br />
** Same for all of the various AI faction externaldata, for the common case, sentinels, warden, hunter, PG, AI budget item current config, and AIP history.<br />
** Then same for the external factioncommon data. And fireteam data. And some ship stuff. And some transported ship stuff. Wow.<br />
<br />
* Made some improvements to how the deserialization logging works for super old-school data formats from back in April and before (April of this year was like 10 years ago, right?).<br />
<br />
* Fixed some very old savegames not being able to load because of missing "Lesser ZenithMatterConverter".<br />
** There are a few spotty savegames from a long time ago (1.302 and 1.304), or from right around 2.600, which don't load for mysterious reasons.<br />
** This seems probably to have something to do with the changes to how we started reading ExternalData in during the post-2.600 betas, but we can't find any errors in code review, and looking at the actual data in the serialization logs isn't giving us anything useful.<br />
** We're not sure if it's possible to actually cause a broken savegame with the current builds or the last few builds that have been public. And most other older savegames except right around those exact version numbers also seem to work just great.<br />
** There was a much wider range of older version numbers that were breaking until today, based on some things that could be null, but those are all fixed now. The remaining issues are all centered around those specific versions.<br />
** Oh man! Wait, we just wasted a fair bit of time. Actually, version 2.600 saves were known-bad and we can't fix those because of the nature of that error: https://wiki.arcengames.com/index.php?title=AI_War_2:Multiplayer_Alpha_And_Beta#Version_2.601_Savegame_Hotfix<br />
** However, the version in the 1.302 to 1.304 range we're not sure what is wrong with. Those are old and don't seem to affect much of anyone, though.<br />
** Thanks to myrion1 for reporting.<br />
<br />
== Version 2.607 MP Stability, Exo Syncs, And Limbo Mods ==<br />
(Released October 6th, 2020)<br />
<br />
* The Imperial Spire is now better at ending games with crazy-strong AIs<br />
** Thanks to Isiel for reporting<br />
<br />
* The Nanocaust's ability to get turrets and some bonus ships is now the default behaviour<br />
<br />
=== Exo Syncing with AI attacks ===<br />
<br />
* If an Exo is pretty close to done when a CPA or a Wormhole Invasion is also close to being ready, the Exogalactic Strikeforce will sync itself to the AI attack so they'll launch at the same time. The goal of this is to get some particularly epic moments, where the Exo punches a hole in your outer defenses and the CPA floods through to your backline (or the CPA distracts your fleet while the Wormhole Invasion destroys your backline).<br />
<br />
* Once the sync happens, the Exo Notification will begin to lie to you about the charge percentage; instead of measuring its actual strength it will instead fudge numbers so that it will hit 100% when the CPA hits.<br />
** The goal is to make sure that you can't tell easily that the sync has happened before it's announced<br />
<br />
* When the CPA/Wormhole Invasion is announced, the Exo notification will tell you that it's sync'd to the strike, but until the CPA/Wormhole Invasion notification appears you won't know.<br />
<br />
* Exos that are syncing are still capped at their intended strength (so if the Exo waits an extra 5 minutes, it won't be stronger than usual. If an exo launches early then it will be weaker than usual)<br />
<br />
* This behaviour is only available for AIs at difficulty >= 7<br />
<br />
=== New Off By Default Mod: Extended Ship Variants by -NR- SirLimbo ===<br />
<br />
* Adds 13 more Strike Craft and 4 Frigate ship lines.<br />
** Ship variants are balanced further towards Medium Hull and less-used Weapon Tech groups to make them an alternative to the default Fusion-Generalist-Concussion combo.<br />
** The FRS Ship Lines do not have fleet-wide bonuses but are low-AIP by comparison and very powerful, and offensive damage multipliers increase with mark level.<br />
<br />
* Strike Craft:<br />
** Obstructor Wing -> V-Wing variant which deals more damage to slow enemies.<br />
** Strike Wing -> More agile and higher-damage but lower-durabiltiy raid-VWing variant<br />
** Oculus -> Eyebot variant with improved damage to a planet's idle defenders<br />
** Vex Guard -> Shieldless Vanguard variant that deals more damage the lower its health goes<br />
** Cannon Bot -> Higher-range and very high-damage Gunbot variant with very slow reload during which it can re-cloak<br />
** Elctro Strike Corvette -> Inhibiting Tesla Corvette variant dealing full damage every attack distributed to all enemies hit<br />
** Fortified Agravic Pod -> Uncloaked Agravic Pod variant which is almost invulnerable from afar<br />
** Ablative Artillery -> High-range and damage variant of the Ablative Gatling with higher damage if the target is further away<br />
** Metabolizing MLRS Corvette -> MLRS Corvette variant that grants metal when enemies it attacked enough die<br />
** Tracker -> Shorter range Raptor variant with decloaking capabilities and longer-lasting ambush modifier<br />
** Space Bomber -> Uncloaked Space Plane variant with better radar dampening and high damage against heavy enemies<br />
<br />
* Frigates:<br />
** Translocator Sniper Frigate -> Tritium Sniper Frigate variant which knocks back even larger targets and deals bonus damage if the target very far away, at the cost of other damage<br />
** Shredder Frigate -> New Melee-Frigate type with very durable shields and high damage, even more if the target's hull is low<br />
** Sharpener Frigate -> Shredder Frigate variant with much lower damage but the ability to amplify all allied attacks upon its target<br />
** Wedge Frigate -> Anti-Large Shredder Frigate variant with greatly improved hull and damage against heavy targets, but no shields<br />
<br />
* FRS-Only Strike Craft:<br />
** Alpha Strike Wing -> Strike Wing variant with much higher stats and longer-lasting buffs, and of cause greatly enhanced ship cap for a mere 20 AIP<br />
** Void Bombers -> Space Bomber variant with perfect and very-close-range radar dampening, combined with overall enhanced stats for a mere 30 AIP<br />
<br />
=== New Off By Default Mod: Extended Ship Variants For Fallen Spire by -NR- SirLimbo ===<br />
<br />
* Requires The Spire Rises (DLC1)<br />
<br />
* Adds 5 more Strike Craft and 1 Frigate ship line for any player's taste, similar to the Vanilla variant. Naturally it requires Fallen Spire to be installed and enabled.<br />
<br />
* Strike Craft:<br />
** Beam Bombard -> Bombard variant with a higher-range multi-railcannon attack well suited to destroy Strike Craft and strong shields, though slower and with very low hull<br />
** Compact Bombard -> Smaller, lighter, faster, cheaper and lower-range Bombard variant with on average higher ship counts. Attacks are weaker but faster too, intended for players who dislike the Bombard's lethargy<br />
** Cloaked Viral Shredder -> Viral Shredder variant with cloak and the ability to attack up to 6 times without revealing itself. Naturally its replicants are able to do the same. In return loses a lot of durability<br />
** Parasitic Viral Shredder -> Replicates everything: Itself when attacking, and enemies via Zombification. Naturally its replicants are able to do the same. Has lower damage and ship counts to compensate<br />
<br />
* Frigate:<br />
** EMP Missile Frigate -> Similar to Lighting Torpedo Frigates or Tackle Drone Launcher Frigates launches very fast EMP Missile-Drones that disable enemies, even up to underweighted Frigates<br />
<br />
* FRS-Only Strike Craft:<br />
** Rail Bombard -> Very high-range Beam Bombard variant that deals high ambush and anti-Strike-Craft damage. Much slower, but in the middle of a planet can just about attack everywhere at once for a mere 35 AIP<br />
<br />
=== Bugfixes ===<br />
<br />
* Since Steam networking has a 512kb limit per message, kind of arbitrarily baked in from what we can tell, we're working around that by splitting any messages that are larger than (512kb minus 100 bytes) into multiple fragments for reassembly on the other side.<br />
** The only known way to hit this right now is with a sufficiently large savegame, and so this should probably only happen from client to host. But technically it can happen in either direction.<br />
** Our logic for doing the fragmentation and adding extra header information onto each fragment for reassembly on the other end seems to be successful, but we have not yet taken the steps to actually reassemble it and read in the interior message yet on the receiving end.<br />
** Another challenge we ran into before that is that we get a mysterious "limit exceeded" result back when we are sending two large messages (aka the two fragments) too close behind one another. The documentation just has a cutesy "too much of a good thing" note as an explanation, so no idea what is actually happening there, or what the real limits are.<br />
*** To work around THAT, we hang onto whatever the fragment is that it is failing to send, sleep the current thread for 10 milliseconds, and try again. We do this for up to 400 times if required, but so far in our testing it takes between 42 and 46 tries before it actually gives us a proper result.<br />
*** It's important to stress that this would have been an incredibly roadblock if we were actually having during-gameplay code running into this more, but for now this seems to be a minor annoyance in some edge cases.<br />
*** Next step is actually reconstituting the internal message on the receiving end from the fragments.<br />
<br />
* Added a new setting to the Network section of the personal settings screen: Log Fragmented Messages<br />
** Depending on the networking framework you are using, there may not even BE any fragmented messages (or rather, there are, but they are handled well below our code). In certain cases, such as anything over 512KB being sent on Steam, we have to do our own fragmentation. <br />
** This fragmentation is pretty much limited to just the initial sending of exceptionally large savegames across the network. When this option is on, then any fragmented messages that are sent or reconstituted will be written into the PlayerData/NetworkFragmentedMessages folder. If there is some sort of problem, then by enabling this on all the involved computers and then comparing the files with the same names helps us figure out what is going on.<br />
<br />
* The fragmented messages that are able to be sent now are properly reconstituted on the other end.<br />
** Several messages from difference sources can be sent or received at the same time, if needed.<br />
** This really should only apply for basically one message (initial world sync on Steam on some savegames) during a typical session, but it makes it so that those savegames once again finally work.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Previously it was possible for GetCurrentDefensePlacer() or GetAIDefensePlacerForPlanet() to throw an exception during map generation in various circumstances.<br />
<br />
* Previously it was possible for two instances if GenerateMap to be called simultaneously in some circumstances when you started the game from the lobby or started a quick start, which led to all sorts of chaos.<br />
** At worst, it should now run those back to back. But in general it should avoid the second call and save you something like 0.8 to 1 seconds of load time.<br />
<br />
* The "A Twisted Enemy" quickstart has been replaced with a version that no longer has “Super Strong” accidentally enabled on it.<br />
** Thanks to Ovalcircle, smidlee, and ArnaudB for reporting.<br />
<br />
* GenerateMap() now gives better errors if it has any, and there are several more places where it repairs bad data if it can't find things it was expecting.<br />
** This often applies to something like trying to load a savegame into the lobby for editing when it includes explicit content from DLC or mods you don't have.<br />
<br />
* If you try to load a savegame or quickstart into the lobby and it requires mods or expansions you don't have installed or enabled, then it will give a nice error message complaining about that rather than a hodgepodge of death error messages.<br />
** Thanks to Spyrooooooo for reporting.<br />
<br />
* Fixed a longstanding oversight where the "number of times a save has been loaded" was not being incremented if you loaded it via the continue button.<br />
<br />
* Made it so that if a savegame metadata file line fails to parse, it will not be treated as a fatal error and will instead just move on past it.<br />
** Thanks to Ovalcircle for reporting.<br />
<br />
* Put in a bunch of improvements to UpdateVisualObj() to prevent cross-threading exceptions that could still happen, and also put in more instrumentation so if a future error happens we will know more where it is. Also this should be less disruptive to gameplay if it ever does happen, now.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Put in a bunch of extra debug logging in DoAICounterattackForcesPerSecondLogic() for if there are any errors in there. It won't fix any of them, but will make them less disruptive to game flow, and also will give us more information on what to fix.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Fixed one more oversight in DoForSelected() that could still lead to cross-threading exceptions.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Previously, if you had multiple AIs and then removed one of them, it would leave behind an extra Praetorian Guard faction that would then error out. Now, when you remove the extra AI faction it will also remove the extra PG subfaction.<br />
** For existing lobbies that are unable to start, you can hit Reset To Defaults in order to work around this.<br />
** Thanks to Fenrakk101, Badger, GreatYng, and Asteroid for reporting.<br />
<br />
* Added a new remove_if_more_than_one_per_ai_prior_to_this field for factions, which is set to true for the hunter, warden, and praetorian guard sub-factions.<br />
** This causes any extra of those sub-factions to be removed when you load up your lobby settings or quick start or whatever it is that you're loading into the lobby.<br />
** This makes it so that existing bad data doesn't require resetting to defaults to get back to it.<br />
** Thanks to GreatYng for the settings file that let us fix this.<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where some turret types were using incorrect tech types.<br />
*** Thanks to crawlers on Discord for the report.<br />
** Fixed a bug where some External Data values that could sometimes be negative were always assuming they were positive.<br />
*** Thanks to SirLimbo for the report.<br />
** Finally fixed a bug that could result in the raid notification causing an error on mouseover/click.<br />
*** This was due to a race condition that I was failing to account for.<br />
*** Thanks to Badger³ for helping to finally fix this.<br />
<br />
* Fixed a variety of client-side issues in multiplayer that were triggered by building custom fleet leaders on the client.<br />
** Prior to now, those would cause the game to lose sync fully and spam errors to death.<br />
** There was a whole huge cluster of things that could probably cause this, but the custom fleet leaders was the simplest reproduction case. All of the other cases should also be resolved now.<br />
** Thanks to RocketAssistedPuffin and 𝔳☆𝔩𝔱𝔞𝔤𝔢 for reporting.<br />
<br />
== Version 2.606 Lurking And Influencing ==<br />
(Released October 5th, 2020)<br />
<br />
* Improve hunter fleet lurk planet finding logic<br />
<br />
* Improve Astro Train depot/train spawning logic to prevent them from spawning on weird places<br />
** Thanks to GreatYng and GophTheGreat for reporting<br />
<br />
* Improve fireteam logic at detecting when their ships are ready to attack<br />
** Thanks to Democracy for the bug report<br />
<br />
* Fix a several bugs where CPAs could wind up allied to seemingly random other factions. <br />
** Note this fix applies only to freshly started games; in progress games will still have this<br />
** Thanks to Isiel and Ovalcircle for reporting<br />
<br />
* Fix a bug where click on a Notification for a Dark Spire Locus you couldn't see would still show you which planet it was on<br />
** Thanks to GreatYng for reporting<br />
<br />
* A planet can now have multiple minor factions with Influence on it. The game will automatically sort the factions with influence and use the strongest minor faction as the thing to show on the galaxy map.<br />
** This should solve periodically seen problems with planet colour flickering between faction colours.<br />
<br />
* Hopefully high-level astro train carrier variants now will produce drones.<br />
** Thanks to GreatYng for reporting and Puffin for suggesting a solution<br />
<br />
* Fix a bug with the Nanocaust getting units they should not, including Astro Trains and Antagonized Dyson units<br />
** Thanks to GreatYng for reporting<br />
<br />
* Minor buff for the nanocaust if it's stuck on one planet<br />
** Thanks to ovalcircle for reporting<br />
<br />
* Add a new Galaxy Setting under 'scouting' to allow your allies to share vision with you<br />
** Thanks to the appropriately named Lux Imperia for reporting<br />
<br />
* In the science screen, there are two new numbers on the bottom row which are 'number of offensive ship lines that can be upgraded' and 'number of defensive ship lines that can be upgraded'.<br />
** Badger found himself often wishing for that information, since the strength estimator doesn't tell me how many lines there are.<br />
<br />
* Put in changes to the Facepunch Steamworks wrapper to change k_cbMaxSteamNetworkingSocketsMessageSizeSend from 512 kb max send size to instead be 512 MB.<br />
** As feared, this did not work. To override this limitation we would instead have to recompile the C++ client-side files for Steam itself, and we're not sure we could actually do that, since only the networking portion is open-source.<br />
** We could ask Valve about this, but the nearest time a change would be in place that could affect this positively would be "whenever they next do a developer SDK update," which is a very different schedule from their public client update schedule.<br />
** It's possible that we could also use some form of decompiler to alter the existing .dll (windows), .bundle (OSX), and .so (OSX and Linux) files and change the value of this one precompiled constant int32 in the version that we distribute with the game, but that risks messing up other things that are working fine right now. And it's probably a TOS violation for us to do that, though it would likely be a harmless one. Then again if someone started using that in a way that adversely affected Valve's networks, we'd be in major trouble, so best to punt on that entire line of thinking.<br />
** So with that in mind, we're going to just have to work around the 512kb-per-message send limit on Steam as a hard limiter for now. This will take a bit more engineering to do, but it's not the end of the world. We used to have such things for the original AI War because network card drivers were such that this volume of data often swamped their internal buffers, so this is not a new problem. It's just unexpected in this context since we missed this obscure reference in the documentation of one of our three network libraries in use here.<br />
<br />
== Version 2.605 Hunter Intelligence ==<br />
(Released October 2nd, 2020)<br />
<br />
* Planet In Combat notification improvements<br />
** The Hacking notification tooltip now includes strength data about the enemy hacking response, so you can just hover the tooltip without going to look at the hack, if you are multitasking<br />
** Planets with at least 5 strength in your turrets are now eligible for Planet In Combat notifications, even if you do not own those planets.<br />
*** The goal is to also cover Beachheads, and planets where you are still fighting but the AI just sniped your command station.<br />
** Thanks to Burner for the suggestion<br />
<br />
* New cheat codes:<br />
** 'instacpa' --> spawns a CPA in 30 seconds. Perfect for trying out the new tsunami CPAs.<br />
** 'destroyp,planet name' --> destroys the planet listed. Works like findp. <br />
<br />
=== Flavor Improvements ===<br />
<br />
* The ARS and Tech Vault now have more flavour in their description, and their associated hacks. <br />
** The ARS updates contributed by Puffin<br />
<br />
* Thanks to UncleYar for reminding us about this<br />
<br />
=== Intelligence Buffs ===<br />
<br />
* Hunter Intelligence improvements at higher difficulties (specifically when targeting player) at higher difficulties (>=7)<br />
** Hunter fleet now prefers to go after critical targets like GCAs, MDCs, Zenith Power Generators, etc... rather than just thinking EXTERMINATE! EXTERMINATE!. <br />
** The AI will begin to prefer critical targets over just killing player planets at 6 and 7, but the effect is weak and entirely absent in the early game. It's a much stronger preference at difficulties 8-10.<br />
** If loss of a particular command station would put the player into brownout, that is always a valid target.<br />
*** As a result of these changes, the hunter fleet should be less willing to attack you except over something you really care about, so baiting the Hunter to wear them out should be harder unless you really take a risk with the bait.<br />
<br />
* Note this behaviour is controlled by the Hunter Fleet Difficulty, so you can play AI 9 Hunter 7 if you don't enjoy this behaviour. <br />
<br />
* Fireteam intelligence improvements<br />
** Make Fireteams willing to wait a bit longer between switching targets. I think this was preventing them from properly gathering their strength to strike<br />
** Improve Fireteam intelligence for determining whether they should take a battle and when they should reteat. Should be a buff to all fireteam-using factions. They were often attacking players in particular without enough strength to break them<br />
*** Done as an additional improvement when updating the Hunter<br />
<br />
* This section brought to you by Burner, who wanted the Hunter to be more evil<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an error in the tooltips for CPAs where non-tsunami and tsunami tooltips were reversed. Confusion!<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Fix 2 problems with the Nanocaust Lich. First, its guns now have at least as long of range as its tractors. Secondly, its tractors are slightly nerfed to no longer be able to grab Battlestations <br />
** Thanks to crawlers for reporting<br />
<br />
* Fix a number of bugs related to the allegiance of AI-allied minor factions during a civil war, causing them to ally with one AI in particular<br />
** Thanks to Nyteblade and GreatYng for reporting<br />
<br />
* Fixed an issue with the Dark Spire ships that humans were able to hack for. Essentially, the does_not_use_multipliers_from_mark_level flag was being inherited from the dark spire faction versions, so this made all faction levels act the same. Now they properly upgrade their stats over mark level increases.<br />
** In addition, all of the dark spire human ships now get upgraded by the Heavy tech type. But they still remain without weapon techs (you have to use fleet upgrades to get them the rest of the way).<br />
** Thanks to julian509 for reporting.<br />
<br />
* Fixed a bug in multiplayer faction sync that would mess things up quite royally if you had much in the way of tech history for a faction and also speed groups.<br />
** Thanks to Tzarro for reporting.<br />
<br />
* Fixed a general nullref exception that could happen in cross-threading cases in SquadWrapper's GetSquad() method.<br />
** Why NRSirLimbo always hits these is a mystery, but thanks to him for reporting it!<br />
<br />
* PreCalculateAllRepairableTargetsForPlanetFaction now actually gives better error messages if something goes wrong.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Data is probably very broken is this happens anyway, but it should no longer be possible for exceptions to happen during GetHasRelationshipWith() checks between two factions.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* There are several groups of spurious "we had a network error" messages that should no longer appear when clients and hosts disconnect while in the middle of trying to send a message.<br />
<br />
* It was not super common, but it was possible in multiplayer to have it silently fail to send a message from the host to the client for various reasons, and no error was shown anywhere and it just looked like they were connecting infinitely.<br />
** This now actually shows an error message, so that we know what's up and people don't waste time just sitting there.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Our serialization buffers in general now do a more accurate and efficient job of expanding their capacity when they need to.<br />
<br />
* Discovered that Steam networking is only willing to SEND up to 512kb of data at a time, thanks to a const k_cbMaxSteamNetworkingSocketsMessageSizeSend, even though it's willing to take in more data than that and can send messages that are larger than that if not for this one random constant.<br />
** This is... really irritating, to be honest. We'll have to see how to best work around this, but this was not clearly documented at all and in fact seems to have gone against what we thought their networking protocol was.<br />
** Our other two networking libraries don't have this limitation, so building in a workaround for just Steam (admittedly the majority case) is annoying either way.<br />
** This is going to take us a bit to figure out how best to handle; this is literally a limitation purely based on a config setting that is hardcoded into the Steam API at the moment, so that's... not our favorite thing. We may simply be able to recompile the wrapper libraries, though, we're not sure.<br />
** Thanks to Andyroo for discovering this limitation.<br />
<br />
=== Included Mod: Civilian Industries By StarKelp ===<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where hacking a Civilian Beacon when there were already existing Civilian Subfactions would sometimes fail to activate yours.<br />
** Fixed a bug where Traders would try to trade with crippled structures.<br />
** Fixed a bug where Resources could randomly be regenerated as the game goes along.<br />
*** This fix may result in one more resource regeneration upon loading an old save. One day these resources will cool off.<br />
<br />
* Fixed a bug where civilians wouldn't stance to help allied attacks.<br />
** This was a conflict of interest with the new logic that was put in place to make them group up around wormholes before attacking, instead of trickling in and dying constantly.<br />
** Thanks to ussdefiant60 on Discord for the report and save.<br />
<br />
== Version 2.604 A Thousand Screaming Idiots ==<br />
(Released October 1st, 2020)<br />
<br />
* Add a Tip of the Day reminding players they can change their starting planet in the custom game lobby<br />
** Prompted by a discussion with Fenrakk101<br />
<br />
* Make the 'bait the hunter into a meatgrinder on a player planet' strategy a bit less effective on Hunter difficulty 8 or higher<br />
<br />
* The hunter fleet type that was previously Kamikaze has been renamed to Reckless. This avoids some confusion.<br />
** Thanks to crawlers and Puffin for suggesting.<br />
<br />
* The "overconfidence ratio" of the AI is something that has it overestimate the competence of its own forces and charge in in various situations where the strength values are not exactly equal-or-in-its-favor.<br />
** For difficulty 6, the value has long been 2.0. For all other difficulties above that, it has been 1.0.<br />
** For difficulties 8 and above, the value is now 0.9.<br />
** It has been pointed out to us that not all strength is equal, and leaving some margin for error in there to account for potentially strengths and weaknesses playing a bigger role is a good idea. Let's really make sure the AI is going to smash them.<br />
** Bear in mind that this only applies to the regular threat controlled by the sentinels, and the hunters and warden use their own separate logic.<br />
** Thanks to TechSY730 for suggesting.<br />
<br />
* In external constants, there is a new field called strength_multiplier_for_turrets. It is by default now 2.<br />
** This basically makes the apparent strength of all turrets twice what they have previously been estimated to be. Turrets are observed to have a number of advantages when absolutely wrecking enemies, so this should more accurately reflect reality. We look forward to future suggestions on more accurate numbers here.<br />
** Individual turrets are still able to have their own strength_multiplier, and this is still added in for those on top of the general turret bonus.<br />
** Thanks to Badger, Puffin, zeusalmighty428, and others for helping with this idea.<br />
<br />
=== "Tsunami" CPAs ===<br />
<br />
* Add a new Galaxy Setting, "Tsunami CPA". This setting can be applied to ongoing games, but is off by default. If people like it, this can become the default mode (and the old mode can be enabled with a setting)<br />
* When enabled:<br />
** CPA units are now ineligible to join Threat or the Hunter.<br />
** The units for a CPA will just charge straight at you. No quarter asked or given. They try to be reasonably clever about it, but they will just come at you in an unstoppable tide until you or they die.<br />
** Twice the number of units will be sent as a normal CPA, roughly.<br />
<br />
* From a discussion started by UncleYar on Steam. Badger thinks this is really cool and will be playing with it in all his games from here on.<br />
<br />
* The description for the galaxy options setting:<br />
** Enabling this changes the Cross Planet Attack logic. Ships released by a CPA now flood into your empires from all over the place in a jumbled and exciting rush, rather than joining the Hunter fleet and waiting for an opening.<br />
** This reckless attack can create surprising openings for the rest of your enemies to exploit, or it can lead to you mopping up a lot of ships that arrive haphazardly. One way or the other, it's going to be an event.<br />
** Additionally, because the CPA is using such a staggered approach that you can defend against piecemeal, it's going to send twice as many ships as usual. This can be really good for you, in terms of greatly weakening the defenses of AI planets, but it comes with inherent dangers.<br />
<br />
* The tooltips for CPAs have been rewritten in general. At best it was confusing before.<br />
** When tsunami is NOT on, it now says:<br />
*** Cross Planet Attacks free a massive amount of AI guard ships all at once across a large area of the galaxy. It does not generate new ships, but it turns ships that were guarding various planets into active Threat against you. You don't know what will be in the CPA, or even exactly how strong it will be, until you see it. The higher the AIP, the stronger the CPA, though, as a general rule. The most likely result of these ships turning to Threat will be that they join the Hunter Fleet and strike at you at a much later time, but you never know. If you want far more exciting and interesting CPAs, consider enabling the 'Tsunami CPA' option in the Galaxy Options.<br />
** When tsunami is on, it now says:<br />
*** Cross Planet Attacks free a massive amount of AI guard ships all at once across a large area of the galaxy. It does not generate new ships, but it turns ships that were guarding various planets into a staggering barrage of attackers who will arrive from all directions and over a varied span of time. You don't know what will be in the CPA, or even exactly how strong it will be, until you see it. The higher the AIP, the stronger the CPA, though, as a general rule. Since you are using the exciting Tsunami CPA option, you'll have the chance to mow down lots of AI ships in your own defenses... but at the same time they may create dangerous openings for the Hunter to exploit, or may burst down your defenses by sheer volume over time.<br />
<br />
=== Lore ===<br />
<br />
* The game now has a Lore journal for the backstory of the AI (and thus AIW2 in general)<br />
<br />
* When you start a game with Zenith or Spire factions, there's now a Journal Entry with Lore about the Zenith or Spire race giving some flavour/background.<br />
<br />
* Also Risk Analyzers and Scourge have Lore sections as well which explain some of their mechanics and give flavour<br />
<br />
* Eventually I'd like to have Lore entries for all the factions in the game, and this is a start.<br />
<br />
* Updated the Zenith introductory lore to talk about their biology and a lot of information about their golems as automatons and so on.<br />
** It's not clear if we ever published anything about this before in a canonical sense, but we were writing up a lot of this sort of thing for Stars Beyond Reach. At any rate, now we've got perhaps the best look at the Zenith -- including the massive amount of things we don't know -- actually in the game!<br />
<br />
* Update the lore for DLC2's Zenith to mention that they are LIKELY from another universe in the multiverse, but not to make it absolutely rock solid certain that they are interdimensional.<br />
** This lore bit now does establish in-game for the first time that the existence of the multiverse is known to scientists to be a definite fact... but that so far there hasn't been any evidence of beings traveling between universes. This may be changing for the first time in DLC2...<br />
<br />
=== Included Mod: Civilian Industries by StarKelp ===<br />
<br />
* Fixed a bug where Civilian Resources were reset upon saving and loading.<br />
* Made it so Civilian Units would load up into their patrol posts when they have no active orders.<br />
** This change in particular is an absolutely massive speed improvement, increasing late game speed from 30~% to 90~% in stress tests.<br />
<br />
* Added Beacon Support to Civilian Industries<br />
* A large number of optimization to militia movement code.<br />
** Units will no longer go on a battle rage and immediately fly to another adjacent planet after winning a fight.<br />
** Units now chill out and wait for 66% of their forces to ready up before attack instead of the old 33%.<br />
*** This is still ignored when reinforcing other Militia or Allies.<br />
** Units that are At Ease in their patrol post will no longer sleep through apocalyptic levels of danger when they could stop being lazy and help.<br />
** Units that are loaded up into their patrol posts are now more accurately counted.<br />
** Militia HQ units should now be far better at keeping up with their assigned Battlestation/Citadel.<br />
* Some more multiplayer-specific fail safes were put in place.<br />
* Fixed a bug where planets were improperly saving their resources.<br />
** This will be retroactively 'fixed', but the fix will simply be them regenerating their resource on load. There is no way to get their prior resource I'm afraid, sorry about that.<br />
<br />
=== AI Budget Planning ===<br />
<br />
* Adjust the way most AI spend their budgets by a bit.<br />
** Most AIs actually gets to reinforce the praetorian guard early; previously if you kept your AIP to 50 or less the praetorian guard would get essentially no reinforcements over time, which meant that very low AIP games would find the homeworld easy pickings. <br />
** Also shift a bit of AI income from Waves into CPAs, since there were reports that CPAs weren't particularly scary<br />
** This doesn't affect AIs like the Tsunami that do unique budget allocations.<br />
<br />
* AI Budgeting Overhaul: Allocations!<br />
** So, basically, the AI has a variety of budgets for different things (various forms of defense and offense, reconquest, etc).<br />
** In the first AI War, these budgets were all independent and could not be reallocated based on the situation. In AI War 2, Chris and Keith both thought it would be awesome to have the AI more intelligently allocate its budgets for various situations (such as when its king is threatened).<br />
** The problem with this sort of reallocation is that it's invisible and causes all sorts of ill effects. A few of which are noted here:<br />
*** When the king is threatened, the AI can become so defensive that it loses the ability to strike back at you. This can make it hard for it to win in the very late game, which can make your eventual victory feel inevitable or boring once you get to that point. The back-and-forth can stop, which is the opposite of what we want.<br />
*** If you choose to threaten the king early, on purpose, then you can put the AI into a defensive footing that gives you breathing room that you should not have.<br />
*** While the AI is feeling threatened and is all defensive, it actually can pour far too many resources into its homeworld defense, making it so that it's tedious for you to win at the same time that it is hard for you to lose. Absolutely the opposite of our goal.<br />
*** While the AI is feeling threatened, some of its various other budgets will still have events that fire (wormhole invasions, waves, etc), but they can be hilariously underpowered to the point that it seems like a bug and confuses people. We've been having sporadic reports of this for years.<br />
** Overall the idea now is to stop allowing for this reallocation of budgets, and just keep it fixed regardless of the situation the AI is in,<br />
*** This prevents various forms of advanced player cheese against the AI.<br />
*** This should make final homeworld assaults go faster, BUT also make it so that you're at much greater risk of counterattack during these same time periods. So your ease of winning will go up, if you're in the position to do that final push, but your risk of losing at the last second also is majorly going up.<br />
*** Since this budget-shuffling was invisible to players in the first place, this means that there are no longer situations where the AI seems to be either cheating ("infinite" defenders at the expense of offense) or buggy (why a wormhole invasion with barely anything in it?).<br />
*** This also preserves the uniqueness of various AI types, as those with unusual spending ratios will do that now even when their kings are threatened, versus falling back to a very generic defensive posture during king-threatened situations. This sort of situation could lead to AIs doing "unallowed" events for their AI type if you threaten their king long enough.<br />
** TLDR: the AI will act more like you already probably expected, and the endgame will not be as prolonged but will also be more dangerous for you.<br />
** Thanks to Puffin for raising a lot of the issues here.<br />
<br />
* AI Budgets: donations when full between sub-factions.<br />
** This is another one that has many negative implications, but mainly in edge cases.<br />
*** Essentially, if an AI had a huge budget for its hunter fleet or something of that nature, but the hunter fleet was already full, then it could donate its budget to something else. As just one example. There are a lot of categories.<br />
*** In practice, what this would often mean is that certain specialized AI types could become masters of something that they were not supposed to be, such as a very aggressive AI type having amazing defenses by accident because its offensive arm was full and didn't need the excessive budget it had, and thus was reallocating that to defense.<br />
** One of the the advantages of having separate budgets that don't intersect too much is that we can add a new feature, like the Praetorian Guard for instance, and have that be a new thing that doesn't impact the rest of the AI's budget.<br />
*** Similarly, we can have certain features that have their own budget get turned off in the lobby, like wormhole invasions, without throwing off the rest of the budgeting for the AI.<br />
*** Up until now we have mostly enjoyed these advantages, but at the same time we consistently ran into some unintended consequences because of the donations between budgets winding up causing extra-beefy spends "out of nowhere" in some cases.<br />
** The new solution is very much like what AI War Classic used: if there is a case where a donation would have happened between budgets, then instead it just loses half of the budget it would have spent and waits to later think about spending it again.<br />
*** Thus in our hunter fleet example, it won't stay in a situation of "max money, instant respend and respec" at all times if it is truly maxed out, but it also won't beef up the defenses more than the AI type designer was expecting.<br />
** At present, these changes just cover the hunter, warden, and praetorian guard fleets.<br />
** Thanks to Puffin for again raising a lot of these points.<br />
<br />
* Previously, if you had wormhole invasions disabled, or waves were not allowed, or reconquest waves were not enabled, then the budget from those things were given to the reinforcements instead.<br />
** This is counter to what we actually want, these days. Those other features are meant to be something you can turn off, and they just make the game easier if you do. The fact that they were rolling over their income into reinforcements on the other AI planets is highly undesirable and no longer happens.<br />
** Thanks to Puffin for finding this particular case of donation.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix several problems with the 'flush units from reinforcement points' code that was causing it to be over-responsive<br />
** Thanks to SortYa for reporting<br />
<br />
* Renamed the "id" field on Fireteams to be FireteamID, and made it a get-only property rather than a naked variable.<br />
** This way we can make sure that it is not accidentally being set when we don't expect (it was not).<br />
** There is now a SetFireTeamID() method that is used for actually changing the ID, and it can have extra instrumentation in there as needed, if needed. At the moment it's good.<br />
<br />
* Also made the constructor for Fireteam private, so that it can't be called directly from other classes.<br />
** There is instead now a public static CreateNewWithIDFromList() factory method on Fireteam which should be used, and which ensures that it's not possible to forget to assign the FireTeamID when initializing a new Fireteam.<br />
** As with the other change, we found no errors in the code, but we are keeping the changes partly to make fireteams that little bit more accident-proof both in terms of our own future code, and modder code.<br />
<br />
* Fixed a line that was missing where during fireteam deserialization we were not actually assigning the fireteam id to the fireteam. This has been present since September 3rd, when we were overhauling a lot of the externaldata and how it is read in.<br />
** This was particularly tricky to find, because the data was being read in properly, and so the serialization logs all showed things properly as did the deserialization logs. However, since nothing was done with the read-in ID, it then would have the game behave improperly and the NEXT time that serialization happened it would write -1 for all the fireteam IDs that it had previously deserialized, which was the first sign in data of something being wrong.<br />
** Anyhow, this was causing the hunter and other factions to be notably stupid for a few minutes after loading any savegame, but is now fixed.<br />
** Thanks to Badger for reporting.<br />
<br />
* The tooltip for the 'Hack Dyson For Ships' hack now reminds the player it will antagonize the dyson for a while<br />
** Thanks to TechSY730 for reminding me<br />
<br />
* ArcenLessLinkedList and ArcenOverLinkedList have both been updated to be a bit more threadsafe by making it so that when items are removed from them, they can't have errors based on being aske to remove themselves twice.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* Fixed a whole raft of potential cross-threading errors that could happen inside HandleShipToShipLinesIfAny() in various rare cases.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Fixed a number of possible places where sync errors between the host and client in multiplayer could lead to errors on the client in GameCommand_UnitSetCommands.<br />
** Also put in more instrumentation so that if we get future errors in this area, we will know more precisely where they are.<br />
** Also put in protections so that if one unit does get an error, it will give a harmless popup and then move on with life, versus corrupting a bunch of units' orders after that.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Fixed an issue where AI Eyes were once again flipping back and forth between alerted and non-alerted status.<br />
** This was causing duplicates of them in multiplayer, as well as making them un-targetable in single-player.<br />
** Thanks to Ovalcircle and Arides for reporting.<br />
<br />
* Fixed an exception that could happen in the warden fleet when ships die, particularly in multiplayer.<br />
** Ditto astro trains.<br />
** Ditto devourer.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Improved the logging of exceptions from when things die related to the dark spire. Also, it should just carry on with the game rather than stalling many more things.<br />
** Ditto with the human factions.<br />
** Double ditto macrophage.<br />
** Ditto NP faction from DLC2.<br />
** Ditto ZM faction from DLC2.<br />
** Ditto the Zenith Trader.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
== Version 2.603 Nanocaust And Civvies Strike Back ==<br />
(Released September 29th, 2020)<br />
<br />
* Add a Tip of the Day to remind players about holding R when hovering units to show strengths/weaknesses<br />
<br />
* When player ships are being constructed by factories to join fleets, those ships previously would ALWAYS come out un-stacked... and if they needed to stack, then they would explode and stack themselves shortly thereafter.<br />
** Now the game automatically stacks them from the start, when needed, and does so in a really efficient fashion with as small of stacks as possible spread out as much as possible.<br />
** This works both when ships are loaded in a transport and when they are outside of a transport.<br />
** This helps performance, multiplayer sync, and also makes things a lot less confusing for new players in particular (but avoids visual clutter for everyone).<br />
** Thanks to UncleYar for suggesting.<br />
<br />
* Fix a bug where Hunter fleet ships were picking really bad planets to lurk on. <br />
** Reported by NRSirLimbo without a save; debugged using a save from Suzera<br />
<br />
=== Included Mod Updates: Civilian Industries Working Again ===<br />
<br />
* Updated Civilian Industries for the latest builds.<br />
** Single Player looks to be working fine.<br />
** Your Civilians will oddly request an exceptionally large number of cargo ships as the game begins, but they eventually calm down.<br />
** Multi Player has a few odd bugs here and there, but appears to also be working.<br />
*** The main thing that seems to still occur are instances of the game being unable to find ExternalData at points. I (StarKelp) am still working to hunt these down, but it has been out of commission for long enough. No reason to hold off the single player compatible version for the multiplayer optimized version.<br />
<br />
=== Nanocaust Buffs ===<br />
<br />
* At the moment, many ship types cannot be Nanocausted; AI Golems, Scourge units, units with zombifying/nanocausting weapons, etc. <br />
** Now when the Nanocaust kills (most) non-nanocaustable ships, they get a new Nanocaust ship instead. The Lore is that the Nanocaust can transform these units into new ships, instead of just taking over the existing ships. This doesn't apply to Players, Dyson or Dark Spire for balance reasons, and certain individual ship lines might be prevented as well.<br />
*** Fleetship-level units transform into Husks, melee units with engine stunners<br />
*** Guardian-level units transform into Ghouls, which have an AOE acid weapon<br />
*** Dire-Guardian level units transform into Liches, which have Deathgrip (tractors, and guns that do extra damage to tractored units) <br />
<br />
* Also when the Nanocaust kills an AI turret (not a turret owned by a player or modded faction), it generates a weak turret of its own.<br />
<br />
* These changes are intended as a nice buff to the Nanocaust, since the Nanocaust is feeling really lackluster these days. It would be good to bring it back to "terrifying" <br />
<br />
* These changes are currently locked behind an opt-in Setting in the "Game" section so people can give balance feedback before I unleash it on everyone. This setting is not multiplayer friendly.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an exception that was happening in new games with the fallen spire on, where the spire relic was having trouble seeding the very first time. Not sure if this is new in this version or if a very recent thing.<br />
<br />
* Fixed a "CalculateSpeed exception" that could happen on ships in general in thread race conditions, but particularly on multiplayer clients.<br />
** Thanks to Tzarro and narwhalofages for reporting.<br />
<br />
* Fixed an exception that could happen if you were viewing the escape menu while receiving certain data at just the wrong time as a multiplayer client.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Put in a lot of extra instrumentation into shot deserialization to make it less likely for there to be any errors in that, and/or to find out where errors are if any happen.<br />
** Also put in some protection against the time-based-pools having spurious nulls in them for whatever reason.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Fixed an exception that could happen in GetLocalPlayerFactionOrNull() in some instances, including apparently during game startup if your mouse cursor was in just the wrong position.<br />
** Thanks to zeusalmighty for reporting.<br />
<br />
* Fixed a couple of exceptions that could happen in GroupAllowedToSpawnOnPlanet() after a failed savegame load in particular.<br />
** Thanks to zeusalmighty for reporting.<br />
<br />
* Fixed the Damage Modifiers MyHullPercentageMissing and MyShieldPercentageMissing not referring to "my" current hull/shield percentage but to the target's.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Redid a number of the entity hover tooltip pieces of code in order to make it so that there are a number of exceptions that are not possible to have happen anymore. Most of these are related to the orders collection, or the next order of the entity.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* The tooltip for AI Eyes that are alerted now says "You do not have too many units on this planet, so this unit will probably stop being alerted before long." rather than having a negative number when you no longer are alerting an eye.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Put in a bunch more instrumentation of entity system steps to avoid potential errors there.<br />
<br />
* Also found another place where there were apparently nulls getting into the time-based pools for shots and fixed that.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* The major cause of "Unable to render visuals for 3.01s, because of:" was some timing issues that really should not have been happening in the first place, but they kind of compound display strangeness when it did happen.<br />
** These messages should no longer show, and so far as we can tell it should let things continue working appropriately.<br />
** Thanks to Tzarro and narwhalofages for reporting an excessive number of these happening for them in multiplayer in particular.<br />
<br />
* UpdateVisualObj() will no longer ever complain about PlanetFaction being null. This is an indication that a ship is dying or moving between planets, and so just silently returning and moving on with life is the appropriate course of action. This could happen in single player or on multiplayer hosts or clients.<br />
<br />
* Combat Engineers that were assigned to a battlestation or citadel would not construct properly in prior versions of the game. They still won't, but they will no longer be assigned to those (they are meant for support fleets only).<br />
** In new savegames started this version, anyplace that you would have encountered combat engineers on a battlestation or citadel, you will now instead see Interplanetary Engineers.<br />
** These are the same as regular engineers, but are able to move between planets. They also have the extra health and shields of a combat engineer.<br />
** These are built from the sidebar like regular engineers.<br />
** Thanks to CRCGamer and Mckloshiv for reporting, and Puffin for figuring out what was going on.<br />
<br />
== Version 2.602 Transports Fixed In Multiplayer ==<br />
(Released September 28th, 2020)<br />
<br />
* Fixed a bug in multiplayer where transported ships were being doubled on the client every second or so.<br />
** This was causing all sorts of issues ranging from brownouts flipping on and off, to a memory leak and performance degradation.<br />
** If nobody was transporting ships, or transporting ships for very long, then this problem would solve itself. This is how Suzara and Ipsum were able to win the first complete game against the AI in multiplayer for this game, where others were hitting a wall a bit sooner.<br />
** Thanks to lots of folks for reporting, including Puffin, OzoneGrif, Burner, Democracy, jradishurr, and potentially others.<br />
<br />
* Split out the spire relic transformation code into its own sub-method, ConvertRelicIntoCity().<br />
** Fixed an exception that was very likely to happen in there (amazed it did not happen more frequently) where we were using the wrong index to search into the SpireCities array.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
== Version 2.601 Savegame Hotfix ==<br />
(Released September 26th, 2020)<br />
<br />
'''Please note: this was supposed to go out late on the 25th, but accidentally did not go out for the entire next day. Apologies! We thought we had this out much faster than that.'''<br />
<br />
* Fixed a stupid one-line typo that snuck in at the very end of testing the last release, which broke all savegames in 2.600.<br />
** The bad news is that this is an error with the save process, not the load process, so those savegames are just toast. :/<br />
** Thanks to TechSY730 and Ovalcircle for reporting.<br />
<br />
== Version 2.600 Multiplayer Alpha Full Announcement==<br />
(Released September 25th, 2020)<br />
<br />
* Fixed a bug where melee units given a load-into-transport order would keep trying to go back to their remembered melee anchor spot.<br />
** Thanks to Isiel, crawlers, fwiffoforce, and TechSY730 for reporting.<br />
<br />
* Hopefully make eyes stay visible through transformation on Explored planets. Otherwise if another faction triggered the eye you would lose vision of it until you looked at the planet again.<br />
** Thanks to giftgruen for reporting.<br />
<br />
* Tweaks to hovertext for units with multiple wormhole movements queued<br />
** If at the planet view, it will say "finalDestination via nextDestination" if you have the tooltips on Full<br />
** If hovering at the galaxy view, it will always show the wormhole orders (if any) to tell you where the ship is going.<br />
*** From a discussion started by Tzarro<br />
<br />
=== Multiplayer Work ===<br />
<br />
* Fixed two deserialization issues with factions that would mainly come up during multiplayer, where the hacking history and speed groups could lead to deserialization errors.<br />
** Thanks to Suzera and Ipsum for reporting.<br />
<br />
* Added a new ListExtensions class in ArcenUniversal, which adds a new RemoveEndEntriesWhileCountLargerThan() method to the List<> class.<br />
** This is something that can be centralized as well as having a limiter to make sure that the max count is not negative.<br />
<br />
* Fixed yet another typo in the factions sync code where it could mess up on the hacking history.<br />
** Thanks to Suzera and Ipsum for reporting.<br />
<br />
* Previously if you tried to load a savegame into multiplayer as a host, but your profile name was not in that game, then it would give you the proper error message but also put you into a very broken half-main-menu-half-game state. Now it just keeps you on the main menu properly.<br />
<br />
* GetLocalPlayerFactionOrNull() now actually returns null, rather than the "first found player faction" if you are in any form of multiplayer.<br />
<br />
* Fixed an even larger bug in GetLocalPlayerFactionOrNull() where it was looking by the index of player accounts, rather than the actual ControlledByPlayerAccounts_DuringGame list. This was going to be problematic for a whole host of reasons.<br />
<br />
* A new GetIsCurrentlyInSpectatorMode() is now on Engine_AIW2, and also can be called via IGameSpecificEngine from Arcen Universal.<br />
** Also added GetFullListOfPlayerAccounts() onto these, which can give you a full list of the player slots that are there and what their status is (host, already full, spectator, etc).<br />
<br />
* Added a new GetFirstFactionControlledByPlayerOrNull(), which lets us find the first faction (hopefully there is only one) assigned to a player account, regardless if there are many of them or not.<br />
<br />
* When you connect fresh as a client to a multiplayer game, it now logs a different message if you are attached to a faction or if you are a spectator.<br />
** If it's starting the world for real, such as loading into the game after being in the lobby, or joining a savegame in progress, or just re-joining a game in general, it now also does a popup telling you that you are in spectator mode.<br />
<br />
* For some reason, a player joining an MP game in progress with a username not assigned to any faction was still being put in charge of a faction,<br />
** So we are now writing a full list of all the accounts in the game when a client joins into their client log.<br />
** This will likely be useful in general in the future, to avoid confusion.<br />
** But it turns out that the host was being WAY too free with how it was trying to match incoming clients to usernames. Essentially it was giving the first non-taken spot to whoever joined in if there was a name mismatch, which was intentional logic for some reason but definitely not what we wanted to have happen.<br />
*** Now the host properly creates a new account for the incoming profile and goes from there. The lack of this may have been substantially hampering three-plus-player games in at least some cases prior to now.<br />
<br />
* When you are in spectator mode, all of the resource slots in the top bar now show up as empty, except for the metal line, which shows "Specator Mode."<br />
** Looks like a lot of spectator mode works just fine, as far as we can tell from a quick look around.<br />
<br />
* Added a bool GetInSetupPhase() that we can read in Arcen Universal.<br />
** And added a RegenerateWorldImmediately() that can be called from Arcen Universal.<br />
<br />
* Since some other changes in these internal builds, new players to the lobby were coming in as spectators... sort of. Basically until the map was regenerated.<br />
** Prior to this build, they probably could not see their starting planet properly until the map was regenerated.<br />
** Now it regenerates the map automatically before bothering to send it to the client, and thus gives them the full info from the start, and without them being in spectator mode wrongly.<br />
** This MAY open up a slight window where if two clients try to connect within something like 400ms of one another, the second client might get an error and have to try again. Not sure 100% on that.<br />
<br />
* A number of scary-looking-but-harmless error messages that would happen on clients and hosts when they disconnect from one another should probably now still happen but in a less scary-looking fashion. We'll work on making those not happen at all.<br />
<br />
* Fixed an issue with how the scourge were being initialized that was causing them to throw errors constantly on clients in multiplayer.<br />
** Thanks to Badger for pointing us to how to fix this.<br />
<br />
* Fixed a minor issue with "Ship syncs sent" always being zero on the host.<br />
<br />
* SecondsSinceBrownout is no longer synced via the periodic-sync-correction for factions, since that was probably messing with things on the client.<br />
** Additionally, brownout messages will never be shown except for the actual player who is in a brownout.<br />
<br />
* QueueChatMessageOrCommand() now properly handles the ChatType.ShowLocallyOnly. This was never fully implemented for multiplayer purposes, it seems.<br />
** This also now only writes to the "MomentaryDisplayLog", and does not clutter up the long-term chat log even in single-player.<br />
** This means that brownout notices, "can't build there" notices, and similar don't go in the way of the chat from the AI or other informational bits.<br />
<br />
* Between the above two items, this should be a solution to the excessive brownout notices reported by Puffin, Democracy, Suzera, Ipsum, and perhaps others.<br />
<br />
* LocalMomentaryDisplayLog has been moved off of the world object and onto Engine_Universal.<br />
** This keeps it from being wiped out whenever new world sync data is sent in, which in turn keeps client-side chat in the lobby from disappearing when map changes are made in the lobby.<br />
** Did add in code to make this still properly clear when you leave a game and go back to the main menu, though.<br />
** Thanks to Puffin for reporting.<br />
<br />
* _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient has been changed from 3 to 5, which means that the server will still keep giving orders even if it is 500ms ahead of the client.<br />
** This lag in the client is what was leading to a lot of the command-lag that was client-side only, but it's also the sort of thing that makes the network connection volatility more of a factor.<br />
** Increasing this number on its own gives us more leeway, but ultimately doesn't do anything to help the client catch up.<br />
<br />
* Also reduced the _SyncMessageFromClientToServerInterval_Frames_InMultiplayer and _BatchMessageFromServerToClientInterval_Frames_InMultiplayer from 2 each to 1.<br />
** This helps to reduce the command lag that was on the client, and the network bandwidth that we're dealing with here is absolutely fine.<br />
<br />
* Also put in a "catch up" period on the host, where if the client winds up being 500ms behind, it waits until it catches up and then proceeds after that.<br />
** This is better than the prior method, where it just waited until it was no longer 300ms behind, which meant that there was a constant 200-300ms delay on the client, and it was always at imminent risk of being too far behind.<br />
** This almost completely eliminates the "waiting for client/host" messages in our test environment, but the movement of ships on the client is still jerky and we need to work on that.<br />
** There is still excessive input lag on the client, but there's still one remaining thing to handle with the client.<br />
<br />
* GetCurrentFrameFrequencyMulitplier() has been updated so that if the client detects that it is falling behind, it starts speeding itself up in its frame processing.<br />
** This puts extra load on the client CPU, but usually only temporarily, and probably on frames that were more or less already dead air already (time where it would have just been waiting for the next sim cycle to start).<br />
** This adaptive processing plays extremely well with our multi-tiered simulation and visual playback layers, and winds up more or less eliminating the lag spikes.<br />
<br />
* However, what we DID find was that it was often the case that the clients could get a bit ahead of the host, simply because the host is still waiting for sync confirmation from the clients, which is not the best.<br />
** Another wave of changes will be related to dealing with that in just a moment.<br />
<br />
* Since the client is now adaptively able to catch up to the host, we are just changing _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient to an extreme 10, which is 2 seconds of time.<br />
** This basically will stop things when there is a client that is syncing the whole world or something along those lines, but at no other times.<br />
<br />
* We also then got rid of the new useStrictFramesWhileClientsCatchUp that we added, since the clients are now responsible for catching themselves up.<br />
** We would have gotten rid of the _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient entirely, but then the long initial syncs of the clients getting in would have messed things up.<br />
** It's possible we may revisit that concept and handle those giant syncs in a different fashion.<br />
<br />
* On the client, it was still possible to be seeing little "waiting on host" messages popping by, which was quite irritating. Those now only show if it would be more than 1 second that they would last there.<br />
** There's still some choppiness in the movement of units, but we'll work on smoothing that out in the future. For now, the simulation speed stays where it should be, and it's just a bit of ships moving a bit too fast and then too slow as things try to correct themselves on the client.<br />
<br />
* Fixed a bug that could affect multiplayer sync in a variety of ways with index out of range exceptions because of the serialization gates for each PKID type not being updated before certain types of sync activities. Those are now explicitly synced before those kinds of messages, and require a "whopping" (note sarcasm) 12 bytes to handle.<br />
<br />
== Version 2.511 "Last Lobby Settings" Robustness ==<br />
(Released September 24th, 2020)<br />
<br />
* Fixed literally a few hundred more places that the center color and trim color were being referred to by other names.<br />
** This doesn't fix the outstanding issue with the player trim being set to the center color, but maybe it will help us find it.<br />
<br />
* Found and fixed a really annoying case where player starting faction colors were still having the trim set to be the center color. Instrumentation for the win.<br />
** Thanks to folks for letting us know that was still there.<br />
<br />
* Fixed another seemingly-rare exception that could happen inside DoForSelected() when there was a lot of cross-threading competition.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* If you have serialization logging enabled, then now when the lobby writes out its "last settings" for savegames, it will write to the file WorldSerialization_LastSettings.txt<br />
** We were seeing some strange issues with only 92KB saves being written there, without properly being able to be loaded back in, in our internal build.<br />
** Loading into the lobby and then exiting immediately now lets you compare WorldSerialization_LastSettings.txt and WorldDeserialization.txt.<br />
<br />
* The world save method now takes a bool IsForLastSettings parameter, which lets us strip out yet some more data from the last settings.<br />
** In particular, this lets us forget what expansions or mods you had installed last time, so if you were changing that it will hopefully still load your settings properly.<br />
<br />
* When savegames fail to load from the "last lobby settings" file, it's supposed to just give you a blank fresh copy of the lobby, which it has been doing and still will do.<br />
** But now it also logs some errors silently to the log, so we can see what is happening if that is of interest.<br />
<br />
* The stripped-down lobby settings files are definitely by design, but they were dying in SetGuardPostAndCommandPlacerFromPlanetStats(), which is no longer called when loading them (as GetCurrentDefensePlacer() is no longer called, too).<br />
** This saves time on map generation in general, in addition to fixing the ability for last lobby settings to load.<br />
** The nice thing is that the last lobby settings are sometimes as small as 92KB instead of 1.5MB, but it just depends on when you were saving it. Exiting out of the lobby via the quit button gives a very different result from it saving after you go into a game from the lobby, when they should be identical or close.<br />
<br />
* When saving for the "last settings" for the lobby, the "externaldata" is no longer saved at all.<br />
** The details of PermanentSerializationIndicesForThisWorld are also not saved, which makes us have to be extra vigilant with SerializeByIndex... but on the plus side, it should throw errors immediately on game start from the lobby when we mess that up.<br />
*** AICounterattackForces on planets no longer saves in the "last settings" path, since this would break (and is useless).<br />
*** Same with Player_AddedToCommandStation_Permanent and Player_AddedToCommandStation_Current on the World.<br />
*** Also same for the ChatLog, journal history, and fleets on the world.<br />
*** Also for TechUpgrades, FreeTechUpgrades, SpeedGroups, HackingHistory, TechHistory, on factions.<br />
*** Also for the entities of all types on planetfactions.<br />
** So far this seems to properly do the job of getting you into the game faster, and it SHOULD prevent issues with "my last settings were from having three mods on, but now I disabled those mods and want to load a savegame and it just throws me to the default settings."<br />
*** Worst case, it should just throw you to the default settings like before in these cases, but hopefully that happens at least a lot less frequently, if at all, now.<br />
<br />
* In the event that the "last settings" file is unrecoverably messed up (probably from trying to load the data from a mod that is not on at present), then it no longer has the chance of throwing a bunch of errors when you go into the lobby. Instead it logs a couple of errors silently to your log, and gives you a fresh lobby with default settings.<br />
** The other changes in this release to make it less likely for "last settings" files to be unrecoverably bad are the second part of this solution, but there's always some edge cases (or suitably old data) that we can't work around.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Version 2.510 Astro Train Safety Training ==<br />
(Released September 23rd, 2020)<br />
<br />
* Fix a bug where games with astro trains would crash<br />
** Thanks to CRCGamer for the bug report<br />
<br />
* Some additional improvements toward helping hunter fleet ships not suicide<br />
** Thanks to a save from Burner that let me reproduce this<br />
<br />
* Fix several typos in the game lobby/settings.<br />
** Thanks to Fenrakk101 for reporting<br />
<br />
* Hacking a conquest mode VG will cause it to transform into a regular VG<br />
** Thanks to crawlers for the suggestion<br />
<br />
* Fix a bug where the AI was not sending reconquest waves to unexplored planets<br />
** Thanks to Burner for reporting<br />
<br />
* Over the years, internally in our code we've had a variety of different terminologies for the "center color" for a player faction, which is sometimes the "main color" or "text color" or other things, and the "trim color" or "border color" that goes around the edges.<br />
** Apparently this has led to an error somewhere where we are inverting the main and border colors, so we're taking this chance to standardize all of the naming since it was something we were clearly making an error somewhere in, but couldn't see it in the code.<br />
** Now these are universally in the code referred to as the "faction center color" and "faction trim color".<br />
<br />
* As part of the above refactor, found a spot in GetDefaultFactionConfigurations() where we were assigning the player's trim color to also be their main color.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Version 2.509 Melee, Stacks, And Fireteams ==<br />
(Released September 22nd, 2020)<br />
<br />
* Fixed missing descriptions for the Damage modifiers of TargetHullPercentageMissing, MyHullPercentageMissing, TargetShieldPercentageMissing and MyShieldPercentageMissing if not used in combination with the MultiplesOf comparison type.<br />
* Instead this was displaying Unknown DamageModifierBasedOn.TheModifierName twice in the tooltip.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Fix a problem introduced recently by my hunter fleet performance improvements that was causing the Hunter Fleet to just sit around<br />
** Thanks to a number of people for pointing this out, including ArnaudB, CRCGamer and Minotaar<br />
<br />
* Tweak the journal messages about exogalactic war front units<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Fix a very longstanding bug with fireteam histories, where they would report the planets they were lurking on incorrectly<br />
** This won't apply to previously existing histories, just new histories<br />
** Thanks to a save game from Minotaar for making this really obvious to me<br />
<br />
* Make it harder for players to trigger exogalactic war units without allied factions<br />
** Several people have had thoughts about this<br />
<br />
* Some buffs to the stronger astro train variants<br />
** Thanks to crawlers for requesting<br />
<br />
* Tweak the stacking/splitting code to make it harder for ships to decide to stack and split themselves over and over<br />
** Reported by Gott365 and TechSY730 for reporting<br />
<br />
* Fixed some issues with the new-ish melee unit behavior of flying out to attack nearby enemies when otherwise idle:<br />
** Fixed a bug where a melee unit would go back to its prior location after a direct order from the player (like a normal move order).<br />
** Fixed a bug where a melee unit's memory of where to go back to after no targets were in range would persist across wormhole jumps (causing it to try to go to that location on the new planet, which doesn't make sense).<br />
** Fixed a bug where melee units wouldn't use their implicit attack-move behavior if their internal behavior flag had been changed away from default and then back. So new melee units would use the behavior, but ones that had been around for a while often would not.<br />
** Thanks to OzoneGrif for reports revealing these.<br />
<br />
=== Data Dump Improvements ===<br />
<br />
* Fixed a couple of problems that were leading "cmd:dump data tables" to actually crash the game rather than exporting things nicely. Sometimes the crashes were only intermittent, which was doubly "fun."<br />
** This obviously made this far less useful in terms of actually debugging anything!<br />
<br />
* In general with our data dumps, we've been using ObjectDumper in a customized fashion. But now that we're moving to use it in more places, we're customizing it even further and making it more efficient.<br />
** For the largest export, the GameEntityType, this makes the data go from 35.8MB down to 29.2MB<br />
** More importantly, it makes the data a lot more legible.<br />
** For all of the various lists and dictionaries and other collections, this also now gives us counts of how many items are in each one, which it did not do before.<br />
<br />
* Fixed a variety of other things that would be different in those exports on different machines, or at different runtimes, that thus would have been in the way of our log comparisons.<br />
<br />
* In our exports, a variety of cases of contents that would just have empty brackets now do not export the useless empty brackets. A good example is ArcenPoint, which was saying its coordinates and then four lines of empty brackets.<br />
** Additionally, a bunch of default values that would be "None" or "-1", or collections that are empty no longer export at all. This is consistent with things already not exporting that were 0 or false or an empty string.<br />
** This gets our GameEntityType down to 24.8MB, and even easier to read.<br />
<br />
* Fixed several places where the ExternalData was still keeping a parentobject reference on an object that was meant to be used by all the parents.<br />
** This then caused some of the calls in the mods and externaldata to need to slightly change again.<br />
*** Really this is just an easy search and replace for GetCollectionByPatternIndex() to have a first parameter of ParentObject now.<br />
<br />
* Added a new "dump external data" command:<br />
** This causes all computers involved in the current game (so not just the local machine in multiplayer) to immediately dump all their 'external data' from all entities (World, Factions, Planets, Player Accounts, and Ships) into the ExternalDataExports subfolder in the PlayerData on each machine. <br />
<br />
* Added a number of improvements to the dump logging, for attributes like: SkipWritingNullEntries, NotForDumpingWithDataTables, and NotForDumpingWithExternalData.<br />
** These help us control the way that dumping works, making for more readable and legible output.<br />
<br />
* For better exported data in general (both in terms of the external data dumps and the data table dumps):<br />
** We've now implemented to ToString() method on ArcenSparseLookupPair, Pair, RefPair, ThreeTuple, RefThreeTuple, FourTuple, and RefFourTuple.<br />
*** This lets them actually show whatever their contents are, rather than just the semi-gibberish of their outer type (which is also not informative in general).<br />
** Also implemented ToString() on DeathEffectType and DeathEffectType.OffenseTier, so that they actually show real data rather than just writing their names.<br />
** Also implemented ToString() on ArcenDynamicTableRow so that those say their InternalName rather than just what type of row they are.<br />
*** Of the many things this improves, you can now actually read which expansions or mods tables were modified by.<br />
** Also implemented ToString() on all of the various inheritors of IDeathEffectImplementation, to make the exports more brief and clear.<br />
*** Well, this one didn't actually make any difference, even with making ToString() a required thing for the interface to implement. Not sure exactly why this last one didn't work, but it's ok.<br />
<br />
* ArcenSparseLookup now implements ICollection, making itself render its contents properly in logs.<br />
** Both ArcenOverLinkedList and ArcenLessLinkedList now do the same.<br />
** Now all three of these expose IEnumerable, which lets them be iterated-over and render their contents in a sensible fashion too.<br />
** With the various changes here, we are back up to 28.8MB of data on the GameEntityTypeData export in the data tables export, but it's actually meaningful data that is using that space.<br />
<br />
* Added a new INeverDumped that can be used to make an entire class or struct not dump.<br />
<br />
* In all of our data dumps, when it is dumping lists and dictionaries and other collections it now gives some commentary after them that you can search for to look for problems:<br />
** If more than 1 million items, it will say BIGLIST-E.<br />
** If more than 100k items, it will say BIGLIST-D.<br />
** If more than 10k items, it will say BIGLIST-C.<br />
** If more than 1k items, it will say BIGLIST-B.<br />
** If more than 100 items, it will say BIGLIST-A.<br />
** This lets anyone use any standard text editor (Notepad++ is great) to search for either "BIGLIST" in general, or one of the larger-format ones.<br />
** If players in multiplayer suspect that there is a performance degradation on a client via a memory leak, then having anyone type "cmd:dump external data" and the client-who-seems-to-be-having-troubles search for BIGLIST-E and BIGLIST-D in particular in the resulting files should help find anything suspicious. Or people can send those exports to us to look at.<br />
** Quite aside from this, however, it lets us get a general idea of how much externaldata we are actually using, and what is attached where, which is useful for developers and modders anyway.<br />
<br />
==== How To Use The New Log Dumps To Help Find Multiplayer Errors ====<br />
<br />
* New explanations on how to use the log dumps for multiplayer debugging purposes are in here:<br />
** This one is less likely to be useful: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#cmd:dump_data_tables<br />
** Whereas this one is very likely to come up as something to check: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#cmd:dump_external_data<br />
<br />
== Version 2.508 Waverider ==<br />
(Released September 19th, 2020)<br />
<br />
* Fixed a couple of places in the metal flows tooltip where it was stating the left and right mouse buttons backwards. (There were three places in all, and we had only changed one of them).<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Fixed a rare exception that could happen inside GetControllingOrInfluencingFaction() when exiting the game either to the OS or to the main menu.<br />
<br />
* Fix a bug where waves were not spawning any units. This affected regular waves and hacking responses.<br />
** Thanks to weapon master, CRCGamer, DaniExpert, ArnaudB, Gott365 and probably others for reporting<br />
<br />
* The Zenith Trader no longer sells AIP-increasing black hole machines to the player<br />
** Thanks to TechSY730 for reporting<br />
<br />
* The Zenith Trader will no longer sell things to dead AI factions<br />
** Thanks to GreatYng for reporting<br />
<br />
* Really fix that Macrophage null reference in LRP bug that's been annoying badger<br />
<br />
* Some performance improvements for fireteams in general (and some extra improvements for hunters) in late game scenarios<br />
** Thanks to a giant save from crawlers for letting me see what was going on<br />
<br />
* When you see the name of a song in the Escape Menu, it should now be formatted in a more readable way. For example, it now shows "Waking To Darkness" instead of "WakingToDarkness"<br />
<br />
* Improve the text of several "You can't hack this because of...." messages<br />
** Thanks to GreatYng for reporting<br />
<br />
* The experimental "Astro trains get stronger after you kill some of them" code is now enabled for everyone, and the setting is removed<br />
** I've heard reports that it works okay<br />
<br />
* Allow the HRF to flush enemies from command stations and guard posts<br />
** Thanks to GreatYng for requesting<br />
<br />
* The "This faction has no allies, not even itself" message is cleared up; this was being triggered by dead AIs, usually after the civil war started<br />
** Thanks to a number of people for reporting<br />
<br />
=== Dark Spire Tweaks ===<br />
<br />
* Fix a bug that was preventing the Dark Spire from being suitably aggressive in late game situations<br />
** Thanks to crawlers and Gott365 for the bug reports<br />
<br />
* Other factions will now actively go after Dark Spire Conquest mode VGs<br />
** This should give some counterplay against the Dark Spire<br />
<br />
* To compensate for the fact that Conquest Mode VGs will be targeted more, they are also tankier<br />
<br />
* In conquest mode, the Dark Spire will get a bit more energy<br />
<br />
== Version 2.507 Bugfixes ==<br />
(Released September 16th, 2020)<br />
<br />
* Fix a bug where player-allied nanocausts that aren't allowed to kill command stations weren't properly expanding. Add a journal entry to point out to the player that this leaves their allied nanocaust vulnerable<br />
** Pointed out to me on discord<br />
<br />
* Fix a bug where the render vengeance generator hack wasn't completing<br />
** Thanks to a number of people for reporting, including jradishurr, Magiik and Gott365<br />
<br />
* Fixed several cases where cross-threading issues could lead to some issues in the selected-ships counter.<br />
** Thanks to MasterGeese and GreatYng for reporting.<br />
<br />
* Fixed several cross-threading bugs that could happen in GetIsWithinRangeOf() or GetIsWithinRangeOf_VeryBasicCheckOnly().<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Fixed a bug introduced in the prior build that made it impossible to save most games that had outguard in them (all of them...?), and probably was messing with initial multiplayer sync, too. This was not seeming to affect every last save, but nonetheless was not good.<br />
** Thanks to Badger for reporting.<br />
<br />
* The "long range planning" code for the Macrophage now includes a lot more instrumentation for more detailed error messages. We started having some sort of error in at least some games starting the last release.<br />
** But after putting in the instrumentation (and having fixed the outguard serialization bug that also manifested in the same savegame), we no longer can duplicate the problem. So for now there's nothing more to do, but if it comes up again we'll at least know where it is.<br />
** Thanks to Badger for reporting.<br />
<br />
== Beta 2.506 ExternalData Overhaul Two ==<br />
(Released September 15th, 2020)<br />
<br />
'''This is kind of a nasty one, in that we're fixing a ton of things but potentially also breaking more things. External code-based mods are definitely broken again (sigh). But a bunch of things that were question marks for multiplayer are either now working properly for the first time (a few dozens of things), or are now verified-correct (even more dozens of things). So we're dropping back to beta briefly, to let people test things and let us know if there are any bugs that make this unplayable for some reason. Once folks have been through it sufficiently, we'll move back to the non-beta branch.'''<br />
<br />
* Previously, the dark spire ships that you could hack for had a starting mark level of X, and a max mark level of 4. Now they all start at mark 1 and level up like normal, but have a max mark level of 7 (because why not).<br />
** Essentially, tech unlocks for players probably did not work terribly well when the starting mark level of a player unit is greater than 1. And having a low mark cap on top of that can be frustrating for folks.<br />
** Specter used to start at mark3, now is 1.<br />
** Phantom was already mark1 at the start, but still is.<br />
** Okay, wraith was already mark1 at the start, and still is.<br />
** Anyhow, the level caps were a big part of what was messing with people, probably.<br />
** Thanks to crawlers and CRCGamer for reporting.<br />
<br />
* Fixed a potential nullref that could happen in CheckForInternalShipDeployment_DroneProducers_FromSimBGThread(), probably more likely on multiplayer clients than elsewhere, but definitely possible anywhere.<br />
** Thanks to Puffin for reporting.<br />
<br />
* Fixed a strange capitalization issue in the logging for faction deserialization where MinFIreteam and MaxFIreteam would thus show up as diffs.<br />
** Thanks to Puffin for the report.<br />
<br />
* New debugging command added: <code>dump data tables</code><br />
** This causes all computers involved in the current game (so not just the local machine in multiplayer) to immediately dump all their data in the same way that happens from "Dump All Data Tables After Load" from the debug section of the settings menu. <br />
** ''Please be advised that this will cause all of the computers involved in this game to freeze for something like 20-60 seconds, depending on their relative speeds, how many expansions and mods are installed, and so on. It's a good idea to warn people before you run this comment.'''<br />
** Aka, this writes a text file for each in-memory data table into a DataTableExports subfolder in the PlayerData folder. <br />
*** The purpose of this is mainly to use with diffing tools between one run of the game and another, to see what sort of data changes happened. If you are modding and made changes to some ships and want to see how those changes cascaded, this would be one way to do that. This is also a way for us to verify correctness when we make structural changes internally.<br />
*** In multiplayer, this can also be used to compare the contents of these folders between the host and various clients, to check for things that might be amiss thanks to mods or other local changes.<br />
*** To compare folders at a time, you'd need to share the contents of these folders between machines (zip and email, etc), and then run a folder-wide diffing tool like WinMerge to find any discrepancies.<br />
*** Lastly, if you're a mod author and concerned that your mod is adding to the data tables incorrectly over time, then you can use this to get snapshots of what those look like as you are playing. Normally this data should not be changing after the initial load of the application.<br />
** Never considered a cheat.<br />
<br />
=== Multiplayer And ExternalData Continued Improvements (Breaks Code-Style Mods Temporarily) ===<br />
<br />
* There are some issues with the data table dumps now actually dumping some game data.<br />
** To combat this, the ArcenOverLinkedList and ArcenLessLinkedList both no longer dump their firstItem and lastItem fields.<br />
** Hopefully we will still see the count of items in these, but that's really all we can do right now without getting into circular references by the very nature of these linked lists.<br />
<br />
* This also finally pushed us over the edge when it came to IArcenExternalDataPatternImplementation, and this is now becoming an ArcenExternalDataPatternImplementationBase abstract class that we can control a bit better in several different ways.<br />
** In general this will be a help for us with multiplayer sync, among other issues.<br />
** This class should never be directly inherited-from by things in External or mods, however.<br />
** Added a new ArcenExternalDataPatternImplementationBase_World, which is for use with things being attached to worlds.<br />
** And also a new ArcenExternalDataPatternImplementationBase_Faction, for things being attached to factions.<br />
** And a new ArcenExternalDataPatternImplementationBase_Squad for things being attached to ships.<br />
<br />
* Took this chance to fix a number of data structures that might not be multiplayer client-sync safe based on the fact that MP sync data might be missing and might need a catch-up:<br />
** AIReservesData (constructor updates, DeserializeExternalData updates).<br />
** Okay, 33 other classes needed the same update pattern, so we'll save you the list of going through all of those again.<br />
** Added a new ArcenExternalSubManagedData class, which all 34 of those classes now inherit from.<br />
*** This lets the increasingly-complex central logic from DeserializeExternalData be written only once, not 34 times.<br />
**** This is all handled, for the default case, via the new generic method DeserializeExternalDataAsArcenExternalSubManagedData().<br />
*** Also worth noting, we can no longer use constructors with arguments on this, because of how the logic is centralized. The default constructor is always called now, and then DeseerializeIntoSelf() is called after that if needed.<br />
**** This is doubly worth noting, since it makes sure that there are no cases where object initializations from the default constructor are not called.<br />
<br />
* While we are at it, we're marking the various lists and other collections as readonly in ArcenExternalSubManagedData-inheriting classes.<br />
** This helps us avoid ambiguity and extra code, and is a double reminder for us to review places where we could get into infinitely-expanding lists on multiplayer clients.<br />
*** Fixed the following infinite-expanding collections for multiplayer clients:<br />
**** The FinalComposition dictionary on PlannedWaves was going to infinitely expand while waves were incoming.<br />
*** Fixed the following "accidental data churn from throwing away collections on multiplayer clients":<br />
**** The DZPerUnitData ConversionList and ConversionBag.<br />
**** The metalByTier on DysonData.<br />
<br />
* Added a new ArcenExternalSubSubUnmanagedData abstract class for classes that is for the sub-data types that a few things use, like DarkSpirePerPlanet.<br />
** This adds some structure, but is not as fully managed as the main classes above it. These again help us to avoid some bad habits that can lead to memory leaks on clients.<br />
<br />
* Fixed a general cross-threading issue that could happen with Loci_ForUI in the dark spire. This could happen in single player or multiplayer, and we found it because of the new code rigor enforced by these new abstract classes.<br />
<br />
* The DeserializeDictionary utility method, and a few similar ones, no longer take their dictionaries as a ref parameter. That's now allowed syntactically for readonly dictionary fields, and it's not needed logically at all for dictionaries as a whole, which are reference objects and thus always passed by reference no matter what.<br />
** Same deal with ArcenRandomDrawBags, for the same reasons.<br />
** And same for some various working methods that were passing generic List<>s with ref explicit. It doesn't matter if the contents of the list are a value type, the list itself is still a reference type.<br />
<br />
* Fixed a client-only bug where certain things were being cleared incorrectly on the DLC2 "ZM" faction data object during faction sync, but now are not.<br />
** In that same faction, fixed another of the "ForUI" list cross-threading issues.<br />
<br />
* Added a ClearAndCopyFrom() method onto ArcenSparseLookup, which does what it says on the tin.<br />
** This is useful in places where we are no longer shuffling around sparse lookups by reference (think pointer), but instead are now keeping the lookups but needing to copy from one to another.<br />
** The need for this is pretty rare, but it's used in wave planning.<br />
<br />
* Discovered a rather dire issue from the last week or so, and have fixed it.<br />
** Essentially, the objects that previously inherited from IArcenExternalDataPatternImplementation (and now from a descendant of ArcenExternalDataPatternImplementationBase) are NOT UNIQUE per object.<br />
** So the fact that we were starting to store the ParentWorld and ParentSquad and so on on those was actually a major problem, and probably a source of some sort of random bugs in single player and multiplayer.<br />
** We were mostly saved by the fact that we ignored those properties and were using the Source object cast properly, which is what was supposed to happen.<br />
** But upon refactoring things, we ran into increasing problems with this. It has now been corrected, and this should hopefully also prevent us (or a modder) from making the same error in the future.<br />
<br />
* With the new way that we are using readonly for collections on the ArcenExternalSubManagedData and ArcenExternalSubSubUnmanagedData, we have to initialize all those collections properly in the constructor, which was not always happening before.<br />
** We now are just initializing them as part of their definition itself, which is easier to check for correctness and has the same end result and performance.<br />
** If we missed any of these, or heck if we made any typos in the many many other changes list above, then there will be errors when loading certain savegames or when during certain parts of gameplay.<br />
** We should be able to fix such issues very quickly, and for now we're not seeing any issues, but we'd definitely appreciate testers in both singleplayer and multiplayer.<br />
<br />
* It goes without saying, perhaps, that this breaks all of the code-style external mods again. We will probably break those a few more times in the coming weeks as we get things multiplayer-safe, and then will stop that.<br />
<br />
== Version 2.505 Multiplayer Alpha Starts, Take Two ==<br />
(Released September 14th, 2020)<br />
<br />
'''Let's try this again! This is one big reason we did a "soft launch" into MP alpha. If anyone is able to test tonight and let us know how it goes for you, then we will probably make the official "hey there's multiplayer alpha now!" posts tomorrow, unless new showstoppers are found. At this point there's the periodic minor "waiting for players" micro-hitching annoyance, but beyond that being a small thing, Chris was able to play for 18 minutes between two computers across Valve's network tonight. No permanent sync issues, no degradation in performance, nothing that seemed glaringly off. There will be more bugs, but the core stuff -- knock on wood -- seems to be working. [[:Category:AI_War_2:_All_About_Multiplayer#Selected_Short_Term_Todo_List|There's a good list of things that need to be done in the near term here]], and that's just in terms of general functionality, not MP-specific features.'''<br />
<br />
* Fixed a bug where "??? Name" was showing up incorrectly in the factions list in the prior build.<br />
** Thanks to Badger for finding the typo.<br />
<br />
=== Multiplayer Sync Initial Implementation Now Tests Out Initially Working ===<br />
<br />
* Followed several paths of code trying to fix the ship sync, but ultimately wound up reverting a lot of that code after we found the actual cause.<br />
<br />
* Found a one-line typo that was leading to infinite duplication of every fleet on the client every few seconds.<br />
** Essentially every fleet was trying to match to fleet 0, and never finding it, and then creating a new one.<br />
** This was leading to a really devastating amount of duplicate data, and confusing everything on the client.<br />
<br />
* Manually reviewed the code for all similar things, including factions and planets, and all of those seem good for now.<br />
<br />
* Discovered that it was possible for extra fleets to wind up on the client just hanging around after a full fleet sync. Those extras (usually were only one or two) now delete themselves.<br />
<br />
* The clients no longer automatically add 1000 to all of the PKIDs that they are syncing from the host. We welcome the extra conflicts at this point... maybe... as it will also lead to some sometimes-correct things that don't need to sync.<br />
** This was something we were doing as of a couple of versions ago in order to try to prevent things from fighting over the same dictionary spot.<br />
<br />
* At this point we have far fewer syncs needing to happen between the host and client, which is awesome.<br />
** The number of ships and fleets is consistent between the client and host, and the energy usage is also consistent, and so on (though energy usage may be misleading since that gets synced from the host as part of the ultra-frequent processing).<br />
** A bunch of ships are showing up as invisible on the client for whatever reason, we know for certain, but those ships that are showing up maintain sync properly.<br />
** There are still some extra ships in ship fleet lines on the client that should not be there, and may just be duplicate references to existing ships.<br />
** Overall the total stats on the number and size of messages sent and received on the clients and the server seem to be incorrect, although sub-parts are often correct.<br />
<br />
* The "Deletion Time!" header in the ship sync details log now only appears when there is actually something to delete, which is not all that frequently anymore.<br />
<br />
* Fixed a bug on the client and host in multiplayer where the total messages received, and the total bytes of them that were received, were far too low. A filter based on message type was incorrectly being applied to these overall counts, where no filter should have been applied.<br />
<br />
* Fixed the remainder of the network messages still not being properly logged, in size or number. There are two places where filters applied, and we missed the second one at first.<br />
<br />
* Fixed an issue where ships that were network-synced were properly added to fleets and the global registry, but NOT to the planet faction (and thus faction) registries. So they were showing up as invisible, despite syncing properly as of today.<br />
** Now the ships show up just fine!<br />
<br />
* Previously we had put some logic in place to not delete ships too fast on the client if they were not discussed by the host in a sync pass. But now that the sync passes are working, this is no longer needed (and in fact actively makes things look wrong for seconds at a time).<br />
** The game now does a much quicker job of removing these extras, and consequently there are not as frequently extra ships that should not exist in the fleet memberships sitting around.<br />
** It's worth noting that for 3ish seconds at a time right now, it is possible for these ships to hang around (but they only appear on the client, and can't be given any orders, which is confusing and annoying but a comparably minor thing and will be tamed soon when we improve how PKIDs are allocated so that fewer clashes happen.<br />
<br />
== Version 2.504 Clarity And Fair Play ==<br />
(Released September 14th, 2020)<br />
<br />
'''We're no longer on the beta branch, because we don't think that this will negatively affect the single player experience. However, multiplayer's alpha is still not ready to go. This build is focused on fixing things up to get things back working properly for single player (which of course also affects MP), and we'll be resuming work on getting MP ready now that this is out.'''<br />
<br />
* If a player-allied faction kills something that would grant rewards (science, hacking, metal), the game now sees if there were player ships on the planet too. If so then it grants the rewards to the strongest player on the planet.<br />
** This seems the path of least frustration for players<br />
** Thanks to Ymir for the bug report, and others for a spirited discussion on steam.<br />
<br />
=== Bugfixes ===<br />
<br />
* When placing wormholes on a planet, the game now makes an effort to make sure they aren't on top of eachother. In very rare cases, some map types could wind up with wormholes that basically overlapped eachother, which was very hard to work with.<br />
** Thanks to Mac for pointing this out.<br />
<br />
* Fixed a longstanding issue with the number of entities contained within a ship where it was showing much lower numbers than appropriate, because we were indexing into the wrong array of display numbers. Above 100 units, it should now show much more appropriate numbers.<br />
** Thanks to TechSY730 for the report that finally tipped us off to the potential cause of his strange area.<br />
<br />
* Fixed an issue that could cause exceptions in the target list sorting if ships died at just the wrong moment.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed a very unexpected bug that our recent extra-strict ExternalData checking logic let us find. Essentially it was somehow possible to get a second Praetorian Guard faction for a single AI, although we're not quite sure how. The game now actively clears those out when it is loading a savegame or settings as a template, to keep you from having double-strength PG forces for no apparent reason.<br />
** Thanks to Deathlymad and Metrekec for reporting, and for providing the savegame that let us practice testing and fixing the issue.<br />
<br />
* Fixed an exception that could happen at various times if the spire debris data was null when it was thinking about making notifications relating to them.<br />
** Thanks to jradishurr for reporting.<br />
<br />
* Fixed a minor visual error where it would say "ERROR: my FleetMembership is null!" if you were viewing a tooltip or popup window with a ship in it that had died. It now will say "This ship has died." instead, if the ship properly died (which is likely to be the case).<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Preventatively 'fixed' theoretically-possible-but-not-encountered bugs (that might not actually have been bugs in the end relating to the following, all based on the new ExternalData changes:<br />
** Winning a game and getting a superterminal achievement (probably not likely).<br />
** Exceptions in notifications about wormhole invasions (this one probably would have been hit eventually).<br />
** Exception in notification tooltip about spire debris (again was likely to be hit).<br />
** Exception in notification tooltip about instigators (very unlikely).<br />
** Two exceptions in notification tooltip about astro trains (somewhat likely).<br />
** Exception in notification tooltip about relic trains (unlikely except maybe for multiplayer client).<br />
** Exceptions in five tooltips for DLC2 (likely to be hit).<br />
** One other exception relating to DLC2.<br />
** Possible exception with the Shark B plot on.<br />
** Several possible exceptions in writing out the list of AI factions and their subtypes (most were very unlikely, except maybe in multiplayer on clients).<br />
<br />
* Fixed a pretty huge bug where if certain entities died to remains (rather than permadeath), they would give AIP every time they died to remains, but when the normal permadeath setting was on they gave no AIP. This was the opposite of our intention and has apparently been incorrect since July 23rd.<br />
** This meant that things like GCAs, etc, would not give their proper AIP on death.<br />
** Thanks to ParadoxSong, Strategic Sage, crawlers, Isiel, and Puffin for reporting and helping track this down.<br />
<br />
* Regular engineers are no longer part of the fleet membership selections for anything that you can get via battlestations or citadels. Instead, combat engineers are used for those cases.<br />
** This will not affect existing savegames, only new ones.<br />
** Thanks to ultamashot for the report.<br />
<br />
* On September 6, we added the following: "QoL tweak for repair. Any ships on a planet where you outnumber the enemies 10 to 1, or the enemies have less that .2 strength are eligible to be repaired immediately. The previous rule was 'Any ships on a planet without enemies'"<br />
** This now only applies to ships and structures of factions that are friendly to the humans. Any neutral or enemy factions will now use the old style of logic that existed prior to September 6th.<br />
** This prevents the AI and Exos in particular from developing invincible shields when they have overwhelming firepower against you, among some other unintended consequences.<br />
** Thanks to TechSY730, crawlers, and MasterGeese for reporting.<br />
<br />
=== Fireteam dynamic resizing ===<br />
<br />
* In the late game, powerful factions can have hundreds or thousands of fireteams, which can make LRP threads run very slowly.<br />
* Each faction using fireteams has some variables that control 'how large should my fireteams be'. <br />
* Now for every 50 fireteams a faction has, it will require future fireteams be larger 1.5x larger. If a faction starts losing fireteams, the size requirements will go back down<br />
** The end result is fewer but larger fireteams, which should be a nice performance boost. Note this won't really help existing games as much as it will help new games to never have that many fireteams at all. Applies to all factions that use fireteams except the Imperial Spire, since that ends the game quickly<br />
<br />
=== AI Difficulty Description Rewrites ===<br />
<br />
* The tooltip descriptions for AI difficulties have been updated after folks have given us indication that there was some confusion based on the old ones (particularly sometimes players felt bad for playing too low, or did not understand the true purpose of difficulty 10, etc):<br />
** Difficulty 1:<br />
*** Old: So easy it might be asleep.<br />
*** New: The AI is effectively dormant; this difficulty is good for practicing the game without any real opposition.<br />
** Difficulty 2:<br />
*** Old: Actively does stupid things.<br />
*** New: The AI will only utilize its most basic subroutines. Retaliation will be minimal in response to your efforts.<br />
** Difficulty 3:<br />
*** Old: Excellent if you're just wanting to mess around with no stress and you've never seen an RTS, ever, before.<br />
*** New: The AI is conscious, but will operate primarily in a reactive capacity. Most of your opposition will be in the form of defensive AI forces in enemy territory.<br />
** Difficulty 4:<br />
*** Old: If you're only vaguely familiar with RTS games, this might give you an interesting time. But bear in mind all the cool and clever tricks aren't remotely here for the AI yet.<br />
*** New: If you’re ready for a little push-back from the AI and some confrontation on the homefront, this will be a good introduction to some of the behavior you can expect from higher difficulties.<br />
** Difficulty 5:<br />
*** Old: If you're here for the first time, but know your way around RTS games, this isn't an awful place to start. The AI is partially brain-dead still, but it should give you an interesting time. But if the game seems too easy, you'll know why.<br />
*** New: The AI takes your presence a bit more seriously. You may find your attention split from time to time and will have to more carefully consider the repercussions of your choices and how the enemy will react to them. Ongoing reckless expansion on your part has the potential to incite a deadly response from AI.<br />
** Difficulty 6: <br />
*** Old: If you're solid at RTS games, then this is what would typically be considered 'Normal' for you... potentially. The AI doesn't have its full bag of tricks yet, but it's still pretty crafty and is starting to have some of its tricks. This difficulty is also great to use if you're really wanting to have the AI be there, but some other factions be the MAIN threat. This will keep the AI interesting but not on your back all the time.<br />
*** New: Against a Difficulty 6 opponent, your choices are really starting to matter. You will notice more devious tactics being used by the AI and will need to watch your back as you claim assets and territory. Other factions have the potential to be more threatening depending on how you set them up, but the AI will continually make its presence known.<br />
** Difficulty 7:<br />
*** Old: Players in the first game had a saying, that 'the real game starts at difficulty 7.' And while that is kind of... rude?... there is also some truth to that, in that the AI is finally fully unshackled. There are a few truly nasty things for the AI that you would still need to turn on in the AI Behaviors section of the Options tab if you really want full pain, but this is a fully competent AI. This is also the difficulty that Chris, the original developer of the games, plays at. It's fun and he can play in a relaxed fashion and not be super focused on every detail, but still win only about a third of the time playing that way. So if that gives you some measure. He plays most other RTS games on their max difficulty or close, not that that's always saying much.<br />
*** New: This is where the AI stops holding back and utilizes all of the strategies and resources at its disposal to try and keep you at bay as your power grows. Its economic power is still somewhat limited, and while you can still get away with being a bit of a nuisance early on, the enemy won't hesitate to put you down if you make yourself too much of a threat.<br />
** Difficulty 8:<br />
*** Old: This is the sweet spot for veteran players. The AI has all its tricks, and has a bit of a stronger economy and stronger responses, too. You COULD make the argument that the economy of the AI at difficulty 7 is a bit on the weak side, so it's not that this is a cheaty AI or something. For players who are really paying attention and managing all the small things and want to have a drag-out battle, this is the difficulty of choice. If Chris really wanted to white-knuckle it, he could probably maintain his 30% winning streak at this level. But he's not into that kind of stress. There's a good chance you're better at RTS games than he is, though, if you're a veteran in particular, so maybe that's not so much stress for you.<br />
*** New: If you take the fully-functional Difficulty 7 AI, provide it with a bit more fair allotment of assets, and make it more sensitive to your actions, this is where you end up. Ideal for veteran players really looking to test themselves.<br />
** Difficulty 9:<br />
*** Old: Are you super awesome at RTS games in general, and this one in particular? Difficulty 8 is just proving too passe? This keeps all the tricks from before, but cranks up the economy and some of the frequency with which the AI will harass you. You could argue that at this point it is getting to be slightly a 'cheating AI,' but frankly things are so lopsided it is hard to make that kind of distinction. If you're so much better than the average player at managing your empire, then... I guess this is kind of taking away that advantage that would otherwise let you roll the 'fair' AI? We get into murky waters here, but a subset of veteran players enjoy this difficulty, so here it is.<br />
*** New: Making for an exceptionally tough adversary, Difficulty 9 stacks the odds in favor of the AI. Armed with a robust economy, the enemy will be ruthless in their attacks and relentless in their harassment of your defenses. To overcome this challenge, you will always need to be on full alert to prevent the AI from exploiting any weakness in your strategy.<br />
** Difficulty 10:<br />
*** Old: This difficulty level is not meant to be fair. It's using all of the AI's legitimate tricks, and it has its economy and whatnot cranked up to 11. If you win against this level of AI, that's something that we traditionally consider 'a bug.' You are supposed to lose, every time. Please file a bug report with how you won so we can fix it. So why do we have this difficulty level? There are some players who are just THAT GOOD, and they spend their time trying to find weaknesses in the AI despite its unfair advantage. A lot of improvements to the AI have come about because of players on difficulty 10 telling us how they won. We usually adjust unit balance or AI logic in response to difficulty 10 victories, we don't just make difficulty 10 harder. That would defeat the point.<br />
*** New: Economically, the 'SuperCat' AI gets a substantially unfair advantage. Militarily, they still play fair but will be able to bring overwhelming force against you in most every situation, all the time. A subset of dedicated players enjoy this difficulty level, but it is not fun for most. Beating the SuperCat even once is considered a crowning achievement, and usually involves a player discovering an unbalanced tactic. If you find yourself in the enviable position of being able to have your name added to those who win a 'pure' difficulty 10 win, please file a bug report with any tips you have on how we can (legitimately) upgrade the AI to counter your winning strategy. This back-and-forth arms race between the players and the developers has led to some of the most interesting innovations for all levels of AI for the game (and its predecessor), and it is also a very specific style of brutal gauntlet that certain dedicated individuals enjoy throwing themselves into.<br />
** Thanks to Tzarro for writing the new descriptions for us, except for the new difficulty 10 description.<br />
<br />
== Beta 2.503 Multiplayer Not Quite Ready ==<br />
(Released September 11th, 2020)<br />
<br />
'''This remains on the beta branch in case there are more singleplayer issues. As far as multiplayer goes, things are not stable enough to do any real testing. There is an issue of some sort that causes fleets to infinitely multiply copies of themselves on the client, which leads to a lot of lag and other problems. There's also an issue with various ships syncing in and out of existence in funky ways, which essentially makes multiplayer unplayable. This is something that is going to take more hunting, but it's all one cluster of issues, and once it's resolved multiplayer should be pretty ready to go. Really glad we did a soft launch! It would have been awesome to have people able to play multiplayer over the weekend, but we're just not quite there at the moment. Hopefully in the first couple of days of next week we can figure this out, but for the moment our brains are fried. More to come soon!'''<br />
<br />
* There's now extra error handling in the "stage 3" faction logic, to keep that from ending the entire game when those happen. It reads:<br />
** DoPerSecondLogic_Stage3Main_OnMainThreadAndPartOfSim Error for faction [name] (index [a number]). Consider restarting the game, as many other things may now go wrong because of this first error. And please report this! Error: [error text]<br />
** This will probably solve things like paralysis counters not counting down when there are such errors, but you're still likely to have a strange time.<br />
** Thanks to StarKelp, Mac, and gigastar for reporting.<br />
<br />
* Fixed a bunch of places in notifications where it was still looking to the old locations for an out of date icon. We will have real icons in the future for those, but for now the placeholder will no longer throw an exception.<br />
** Thanks to jrad for reporting.<br />
<br />
* Fixed an exception that could happen when killing instigator bases, in the notification tooltip for them.<br />
** This is another regression... kind of... from the last few betas. This actually will make clients more robust in multiplayer, though, so it's better than just a straight regression fix.<br />
** Thanks to TechSY730 and jradishurr for reporting.<br />
<br />
* The Civilian Industries mod has been updated to be compatible with the new versions of the game.<br />
<br />
=== Multiplayer Ship Sync Fixes ===<br />
<br />
* Added a setting to the networking section of the settings menu: Log Human-Readable Ship Network Syncs To Disk<br />
** Only relevant on multiplayer clients, not the host. Will majorly slow the game down, but dumps a huge amount of networking info to the disk in the NetworkHumanReadablyShipSyncLog.txt file in the PlayerData folder. This gives a message for each ship that was changed or deleted and why that was done, as well as what planet it was on and who owned it. When syncs are doing funky things, this is a way to manually review it and find out why.<br />
** This required us putting in a LOT of extra code to handle log<br />
<br />
* The current sync cycle is now sent with the divergent data sets, hopefully leading to clients not deleting things they just fixed (because that was totally happening before. Logs are a magical thing.).<br />
<br />
* Discovered a major oversight in our sync code, where basically once something had been synced once it was then being synced every sync cycle forever after that.<br />
** This was a huge cause of lag for multiplayer, and made things disappear inappropriately, probably.<br />
** There are still other things wrong with the ship sync, though, that we can see in the new logs.<br />
<br />
* The sync code has been made more robust in general, now syncing the type of entities as well as what faction they belong to.<br />
** These are often incorrect, when there are catastrophic different uses of primary key IDs anyhow, so getting those right is a good thing.<br />
** It occurs to us that maybe this is overkill, since if these are wrong then probably the planet or at least the location would also be wrong? But... let's leave it in for now, and maybe make an option later for skipping it. It's not a lot of data to transmit or a lot of extra processing.<br />
<br />
* Fixed a couple of issues with reusing entities as different ship types, where it will now properly add or remove or reassign system types on them.<br />
<br />
* Fixed some issues with reusing entities during sync where they were not being added back to the central lookup of entities, leading to future syncs to fail on them forever.<br />
<br />
* Put in some logic to improve the number of loops before we remove something that isn't being synced properly, to make it based on the number of loop counts rather than the amount of time something has been alive (since things that have been alive for a while can get fully synced later).<br />
<br />
* Fixed some conflicts that could happen with entities in the central lookup on the client in multiplayer, if the order of registering and unregistering entities gets out of sync.<br />
<br />
* Intentionally desyncing the PKIDs of ships, wormholes, and fleets on clients compared to the host.<br />
** Trying to reuse entity IDs was often causing some notable problems, and they were rarely in sync as it was.<br />
** This forces a sync cycle for every new ship and fleet that is created, but makes conflicts on the client a lot less likely.<br />
** This may not be a good long-term solution, but a refactor to avoid the conflict space is potentially where we're at, honestly. That will take days, and add a lot of bugs temporarily, so it would be great to avoid it.<br />
<br />
* At the moment the game creates infinite extra fleets on the client, slowing it down progressively. This makes it effectively unplayable.<br />
** There are also about a thousand ships that it will routinely delete from the client, then re-add, then delete again. Also making things unplayable. Still looking into it, but this is likely to be a Monday thing, as this is not a simple matter.<br />
<br />
== Beta 2.502 Regression Fixes ==<br />
(Released September 11th, 2020)<br />
<br />
'''Note that this build is still in beta in order to let people have a chance to run into any more regressions that we may have introduced. So far none of the regressions have indicated any errors in older builds, which is a nice thing. Though in the process of making the prior beta build, we did fix a number of "useless extra data" things, so even if we don't find any new bugs that were older, these regressions were still worth it to ensure data accuracy. It is quite annoying in the short term, though, and we really appreciate the folks taking the time to test it out.'''<br />
<br />
* Add some new voice lines when the player is attacked by the Nanocaust<br />
<br />
* Hopefully Zenith Forcefield Generators will now return after being pushed<br />
** Thanks to GreatYng for reporting, and Puffin for reminding us of the fix<br />
<br />
* Fixed a bug from the last couple of builds where chat commands were failing in general.<br />
** Thanks to Magiik, MasterGeese, gigastar, and Richard333 for reporting.<br />
<br />
=== Fixes To Regressions From Prior Beta Build ===<br />
<br />
* Fixed a bug in the latest beta build that was causing new games to constantly error out with autosave data not being added properly.<br />
** This is one of those "externaldata is now more explicit" things, but this is an example of us choosing the wrong explicit option this time around.<br />
** Thanks to Puffin for reporting.<br />
<br />
* Fixed an exception that could happen when trying to generate notifications about AI reserves before their data was initialized. This was caused by the last beta, but is better to have it handled this new way (so, yay error, this time).<br />
<br />
* When there are errors in generating a galaxy, it now no longer lets you into the galaxy to play (since that leads to many random errors after the real one with the map not generating).<br />
** Random things might include lots of planets belonging to no one, among other things.<br />
<br />
* SeedStartingEntities_LaterEverythingElse during mapgen now has a lot of new exceptions it can throw if various data is missing that it is supposed to have.<br />
** Mostly these are related to the AI and its subfactions (hunter, warden, and PG), but there's also one for if risk analyzer data is missing.<br />
** Prior to the last beta, it seemed to have been just using blank data, although it's impossible to be sure. And in the last beta, it was throwing an exception.<br />
** We then tested all of the factions in the game and the first two DLC, and the only three types that threw exceptions in this area were the AI subfactions (hunter, warden, and PG).<br />
*** We could use more robust testing of the game starting with various factions and them having various settings, though, to make sure that it's all going across properly (this is just in single player, not even multiplayer).<br />
** Thanks to Puffin and jradishurr for reporting.<br />
<br />
* Fixed four typos in the last beta that were not properly having the "related AI and subfactions" properly reach for one another, which led to missing or misapplied settings on game start.<br />
** This then left the Praetorian Guard still not working properly, because they have no custom fields in the lobby and thus were never having a reason to initialize. That probably was not a problem, but to keep things consistent and safe we are now initializing it when the general "AIDifficulty" field is processed.<br />
** For the record, prior to the most recent beta this means there were not actually any errors, but now we do have protection in place in case such an error pops up in the future. But for the time being, these errors were just in the most recent beta, which is gratifying to know.<br />
<br />
* Fixed a couple of logic errors with risk analyzers in the most recent beta that was causing their notification to show up wrong as well as also firing them immediately on game start.<br />
** They now should work properly again, and if the notification is going to be wrong, it will be more informative in its wrongness.<br />
** Also fixed the fact that this could happen when AI Risk Analyzers were not even enabled as a faction.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Beta 2.501 First Raft Of Multiplayer Fixes ==<br />
(Released September 10th, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG because of how much we changed with the "ExternalData Accidental Creation Avoidance" section. There may be legitimately new bugs that we introduced from that, or there may be old bugs that now simply show themselves with error messages. Either way, we don't want to inflict that on everyone, so please use the beta branch to help us test this one out.'''<br />
<br />
* There is a '''list of known issues with multiplayer''' here: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#Selected_Short_Term_Todo_List<br />
** It's debatable how playable the alpha is at the moment, given the issue with the client ships deleting themselves rather than syncing, and given some of the (essentially) client-side memory leaks. Those two things will be my main priority tomorrow, unless something else more pressing comes up (like fixes to things broken by the ExternalData stuff).<br />
<br />
* A new button has been added on the main menu above the forum link that links directly to the AI War 2 discord channel.<br />
** Thanks to Metrekec for suggesting.<br />
<br />
=== Better Default Screen Resolutions! ===<br />
<br />
* Fixed a bug where the fullscreen resolution was still being saved into newsettings.dat rather than graphicssettings.graphics.<br />
** This meant that the fullscreen resolution was being sent over cloud sync, when really that should not be, since that is a machine-specific setting.<br />
** This may wipe out your prior values for the fullscreen resolution, requiring you to set it again.<br />
** Thanks to jrad for reporting.<br />
<br />
* At long last, added a startup feature that folks have been wanting for a while: better default screen resolution, for a better first impression as people start the game for the first time.<br />
** Previously, this particular game was just having a default of opening in windowed mode and 1024x768px, since that will fit on most monitors.<br />
** One of the reasons for this is that opening directly in fullscreen mode can cause bugs, particularly when settings are copied from one machine to another. But we are using fullscreen windowed mode, which reduces the chance of fullscreen bugs, and we also have our graphics settings not set to cloud sync for the last year or so.<br />
** With that said, now the game will automatically (first time opening it on this or future versions on any given computer) set itself to be fullscreen mode with your desktop resolution.<br />
*** It also will set your windowed mode defaults to be your desktop resolution minus 80px width and 100px height. So if you do flip it back to windowed mode, it should be at a size that feels sensible for your machine.<br />
** If you are using a very high-DPI monitor on an underpowered machine (for instance how Chris is testing with a late 2013 MacBook Pro 15" that is below minimum specs for the game), then you may want to lower the fullscreen resolution to something that machine can handle more gracefully (for instance, with ship graphics off and only running at 720p, that below-specs machine runs the game great).<br />
** Note: if you are already in fullscreen mode, then unity just reports what your current fullscreen resolution is. So it will save itself to that, and then set your windowed mode resolutions to be a bit smaller than the current fullscreen mode. Normally this game opens for the first time in windowed mode until this logic kicks in, so this only applies if you already have a current fullscreen setting active.<br />
<br />
=== Multiplayer Fixes From First Alpha ===<br />
<br />
* If there is a null result from FindArcenSteamClientConnectionByConnectionID in OnMessage on a Steam host, it now will write a more detailed and informative message as to why.<br />
** Additionally, in general OnMessage on the Steam server and client is now far more instrumented if those wind up with issues.<br />
** This won't actually solve any problems, but for the case where there was a client disconnect on connect, this should tell us what is going on more.<br />
** Thanks to StarKelp for reporting.<br />
<br />
* The numerical order of the detailed networking sync logs is now better regardless of OS file sorting, as it gives leading zeroes where needed.<br />
<br />
* While in the lobby, or while players are still connecting, the game no longer tries to run the general sync-correction code. This was an oversight in general, and was leading to various errors that would keep popping up until the host saved in-game and clients disconnected and reconnected.<br />
** This was the chief cause of the ""Fixed attempt to read more faction data than we had factions" error on the client.<br />
** Sync was already being handled as well as it needed to be in the lobby in particular: all it needs to do is make sure that your UIs are consistent, which it does. The actual underlying data about incomplete factions and such that can't be seen yet are really quite irrelevant at that point, and so it actually skips a lot of that data, which was incompatible with the full main-game-style sync. As soon as you start a game from the lobby, it already doing a much more robust generation and transmission of the data.<br />
** After loading into the game from the lobby, however, it seems that that initial sync is not as complete as we had hoped, so that's another area for us to now investigate.<br />
** Thanks to StarKelp and his play group for reporting.<br />
<br />
* Fixed a bug in deserializing player accounts, which was something that was leading to the immediately-after-lobby sync being broken.<br />
<br />
* Fixed a harmless extra blank fleetID that was being sent as part of the PeriodicWorldExtrasSync, which made them look inconsistent but did not cause other problems.<br />
<br />
* Fixed a larger bug that was actually preventing deserialization of divergent ships from working properly if the ship did not already exist on the client.<br />
** We had fixed this the other day, but made a mistake in the fix and had to do it over. Now it works!<br />
<br />
* There are still some more issues with syncing divergent ships that have external data on them, and we're not sure why yet.<br />
** The deserialization code for external data now has extra error handling in general, so that we can be more informed if something like that happens during sync or a load off of disk.<br />
<br />
* On the ArcenSerializationTester, added AppendIfActive() and AppendLineIfActive(), which are basically like Append and AppendLine().<br />
** These return a ArcenSerializationTesterWriter so that they can be chained into concisely readable calls like other parts of the code.<br />
** We want to be able to write more complex data in for informational purposes without it being the full WriteHeaderStringIfActive(), and without having to do string concatenations that hit the GC.<br />
<br />
* Several pieces of new logging are now in place to help us more easily identify problems syncing unit data, and external data in general.<br />
** We were seeing some mighty funky stuff on ExternalData syncs failing in multiplayer, and are trying to understand what is happening and why.<br />
<br />
* A WHOLE lot of extra error handling and instrumentation has been put in place around ships and externaldata in general.<br />
** Basically if something goes wrong, we don't want it to do so semi-silently. The various problems that most people were seeing in the first multiplayer alpha version were really downstream issues from the real errors, which were largely silent.<br />
<br />
* Found and fixed a part of the externaldata serialization that could be null in some cases, requiring us to instantiate it even on a partial sync.<br />
** This is something that we had already guessed we would have to do, based on us doing the same thing with ships themselves last version, but the silent errors happening here took us several hours to figure out what was going on. It's fixed now, but there will be more cases of this, probably.<br />
** With this fixed, the divergent ships no longer throw any errors. However, there are still some major differences between the client and the host that need to be looked at.<br />
<br />
=== ExternalData Accidental Creation Avoidance ===<br />
<br />
* Put in several fixes to potentially remove ScourgePerUnitExternalData from accidentally being created on any unit that was part of a fireteam.<br />
<br />
* This is going to break code mods temporarily.<br />
** GetCollectionByPatternIndex() on externaldata now takes a new ExternalDataRetrieval enum, which can either be CreateIfNotFound or ReturnNullIfNotFound.<br />
** The default used to always be CreateIfNotFound, which was nonobvious and was causing things like scourge data to appear on non-scouge units. But very likely it was also causing all sorts of other data to be erroneously initialized. This wouldn't have broken anything, but was certainly bloating savegames prior to this version.<br />
** For reference, all of the methods for getting these are expected to follow this sort of pattern: GetScourgePerUnitDataExt( this GameEntity_Squad ParentObject, ExternalDataRetrieval RetrievalRules )<br />
*** In the main game and first two expansions, this led us to having to correct 112 locations in 26 files. That in turn required another 705 secondary fixes.<br />
**** This may seem excessive, but being able to verify that we are correctly initializing data only when needed is a worthwhile goal, and it makes code clarity so much greater.<br />
*** There are a variety of places that this may make a difference based on our changes thus far (aside from whatever bugs we have introduced):<br />
**** Reinforcement spawning may be more correct now. There was previously some logic that may never have been hit if it was originally pointed at a non-sentinels faction, but now it will hit it.<br />
**** AI sentinels data will no longer be put on every faction during the post-victory achievement check. That was likely causing some problems (which someone had put a mantis report about post-victory slowdown and exceptions, so it's possibly related).<br />
**** When checking faction intensity in general, a whole host of wrong data collections are no longer created on random factions.<br />
**** Several things about astro trains can no longer cause accidental data on wrong factions.<br />
**** If astro trains that should be spawning AI waves or adding to the AI budget are pointed at a wrong faction, the data no longer goes into the void but instead an actual error pops up.<br />
**** Several hacks will now show exceptions rather than throwing their data into the void if they are pointed at wrong factions.<br />
**** There are a wide variety of places where the AI difficulty or AIP of an AI were referenced, and which might now throw a nullref exception. If any of those DO, then that is actually a good thing, because in the past those have silently been returning 0 for both rather than using real numbers. If neither of those cause any errors, then that's even better because we know our other code has been correct already. Fingers crossed for more of the latter than the former.<br />
**** Any time any fireteam was disbanded, all of its units were assigned blank scourge external per-unit data. Fixed. Oh, actually every time it looped over the units in a fireteam. Fixed that, too.<br />
**** ExoData is no longer added to every last faction in the game (notifications checks were causing that).<br />
**** It's possible that some tooltips or notifications might throw exceptiosn now, particularly if you load a savegame and mouseover them before unpausing. If these throw exceptions, then basically this is a case where it would have been gibberish data previously, so it's still useful.<br />
**** Various pieces of code like "don't run the nanocaust info if it's not set up" will now work as their programmers likely originally intended.<br />
** This probably introduced a number of new bugs from typos, along with whatever bugs it uncovered, so this is why we're heading back into the beta branch temporarily.<br />
<br />
== Version 2.500 Multiplayer Alpha Begins Now! ==<br />
(Released September 9th, 2020)<br />
<br />
* Removed some extra code that was accidentally included that was preventing the new findp command from being able to cycle through planets properly if there were multiple matches.<br />
** Thanks to cml for reporting.<br />
<br />
* PlayerAccounts are now also passed to cheats/commands (not to be confused with gamecommands), so that now if there are multiple people in charge of a single faction, commands that are sent can affect just one of the players if needed.<br />
** This is now used for the findp command, which lets two players share control of a single faction without the findp of one player affecting the other.<br />
<br />
=== Multiplayer Readiness In The UI ===<br />
<br />
* The multiplayer button on the main menu now has a small bright "Now in public alpha!" tag on it, to make sure no one misses that.<br />
<br />
* In the multiplayer section of the main menu, a new "Alpha Testers: Please Read!" button has been added.<br />
** This has a tooltip that says:<br />
*** Click to open a web browser that explains the current state of the multiplayer alpha (that changes almost by the day), as well as questions for testers (also get frequently updated), a history of recent improvements to multiplayer categorized by date, and a list of work items that are upcoming.<br />
*** Most important of all: if you are running into problems, please take the time to report them to us, rather than assuming someone else will report it. That is absolutely the most helpful thing we can ask for.<br />
** And its link goes here: https://wiki.arcengames.com/index.php?title=AI_War_2:Multiplayer_Alpha_And_Beta#What_Does_Multiplayer_Alpha_Mean.3F<br />
<br />
* At the top of the networking section of the personal settings menu, there used to be an option called "Enable Multiplayer Alpha"<br />
** This had warnings about how multiplayer alpha was not ready, but that you could click this to enable it anyway.<br />
** This option has, happily, been removed!<br />
** Previously, if that option was not enabled, then clicking the Multiplayer button on the main menu would show a popup with a message from Chris explaining the current state of multiplayer and projected timelines.<br />
*** That message has been removed, and clicking the multiplayer menu now just opens it, again, happily.<br />
<br />
=== Included Mod: Civilian Industries Pre-Multiplayer Finalizations ===<br />
<br />
* Final optimizations for Multiplayer, touching up loose ends.<br />
<br />
* Many nerfs in regards to AI Raids.<br />
** A 20-40%, based on intensity, reduction to AI Raid strength.<br />
** A roughly 100% longer warning before they fire.<br />
** They now only spawn a singular wormhole per planet.<br />
<br />
* Large scale Trade optimization<br />
** The Grand Station will now output a larger amount of cargo ships on demand.<br />
** Many more Cargo Ships can accept trade routes every second.<br />
** Trade Stations will no longer be built on planets that construction ships couldn't safely reach from the Grand Station's planet.<br />
** They are now much smarter about stockpiling resources for local militia use before exporting them.<br />
<br />
* Additionally, a large number of undocumented bugfixes that were lost in the surge of all these multiplayer-based updates.<br />
** The most notable fix is a fix to the Exception that could pop up when mousing over the Raid notification.<br />
<br />
=== Multiplayer Sync V1.0 ===<br />
<br />
* Added AddBytesWithFormatAndColor() and AddBytesWithFormat() for writing bytes nicely to an ArcenDoubleCharacterBuffer.<br />
** This cuts down on our repeat code for easy formatting of things that might be in bytes, KB, or MB.<br />
<br />
* There is now some basic sync stats that will show in the escape menu during multiplayer, and then more detailed sync stats that can be turned on at will.<br />
<br />
* New setting in the network section of personal settings: Show Network Sync Details In Escape Menu<br />
** Only applies when you are in multiplayer, and has different outputs on the host versus clients. Gives statistics on how much the game has had to correct in terms of divergent data between the client and the host.<br />
** Note: The PKIDs and squads are actually checked for divergences, and those are shown in more detail on the client than the host. All the other things are sent in a periodic overwriting fashion, without checking for divergences, as the bandwidth used (which you can see with this setting on) is less disruptive than the CPU cycles required to do divergence checks.<br />
<br />
* The width of the columns in the escape menu are now a little wider.<br />
<br />
==== Fixes Based Off Testing Initial Implementation ====<br />
<br />
* Fixed a bug where the client in multiplayer was incorrectly calling a host-style method when trying to tell the host about divergences in squad sync.<br />
<br />
* Fixed a bug in multiplayer sync where the squad sync stage would never complete or advance beyond the first 20th of the squads, instead just doing those ones over and over again.<br />
<br />
* Fixed a minor bug in multiplayer where the client was telling the server about mismatches even when there were none (just sending an empty list to them).<br />
<br />
* Fixed a one-line bug in multiplayer sync that hilariously just caused all of the ships on the client to be deleted within a few seconds of playing.<br />
<br />
* Put in extra debugging for Client_AcceptDivergenceDataFromHost(), since it was having some exceptions happen.<br />
** In general at the moment, actual divergent ship data is coming across slightly garbled.<br />
<br />
* Temporarily disabled the planet and world-extras sync steps in the multiplayer sync code, as those both were throwing errors on the client side.<br />
** With those disabled, we can see that the ship sync, fleet sync, and "ultra frequent" sync all seem to be not only working great, but also not sending too much data and not slowing the game simulation down.<br />
** The garbled divergent ship data is a bummer and does mess with things, but in general it just speaks to our need for better instrumentation in that area, and is not entirely unexpected.<br />
<br />
* A new setting has been added to the networking section of personal settings: Log All Decoded Network Sync Data To Disk<br />
** Will majorly slow the game down, but dumps decoded sync messages to the disk in files inside the PlayerData/NetworkSyncMessages folder. This only covers sync-style data, but with this logging enabled on both the client and host, this is a great way to see why serialization is failing, if it is. <br />
** Enable with care! Since this data is being actively decoded as it is written, it is far larger (and in plain text) than the actual data being sent across the network. A typical ratio might be 40MB of decoded data for 500kb of actual network traffic. You can have a few GB of data on your disk after just a few minutes of letting the game run in this fashion.<br />
<br />
* Using this hefty new tool and some extra instrumentation, we were able to locate and fix the problem with the sending of divergent ship data from the host to the client.<br />
** We were simply omitting the primarykeyID for entities that were different, not deleted. Things like that are easy to miss but almost impossible to find without a logging mechanism like this. Manual code review just leads you to look right past it, especially if you've been staring at it for days.<br />
<br />
* Did a bit of an overhaul on how some of the network sync data is logged, so that we can do a folder-at-a-time comparison to find differences where any may exist.<br />
<br />
* Server_SendBatchOfSyncsBasedOnCurrentSyncStage() now has extra debugging going on in itself, because we're experiencing some sort of errors in there on the host after a certain amount of time in multiplayer, now.<br />
** Thus narrowed the problem down to Server_SendPeriodicFactionSyncDataThatJustOverrides(), and so instrumented that a lot more thoroughly... except actually the problem was in Server_SendBatchOfDivergentSquadsToFix(), we just read it wrong. So that also got extra instrumentation.<br />
*** And that was, in turn, just a simple typo on one line. Logging and instrumentation makes the impossible and time-consuming very fast and easy -- after the initial setup time cost. Very much worth it.<br />
<br />
* Found ourselves back with another error in Client_AcceptDivergenceDataFromHost-DivergencesSection. But we can't quite use the logging as it currently exists to easily diff these on a folder level.<br />
** In order to make that possible, we are switching away from using a central LogIndexThisSession Int64 for all message types being sent to StartNetworkSyncDataMessageLoggingIfNeeded, and instead are having an individual index for each FilenameBase string.<br />
*** This puts things slightly out of chronological order when we're talking global messaging, but that's because the client and server can be talking back and forth and have some different ordering between message types. We need the message types to always match up, and now they will.<br />
<br />
* Discovered that we were not properly sending the TypeData of the ships in the divergent ship fixes messages from the host. This was then causing nonsensical errors later in the deserialization of those messages.<br />
** Another great example of something we would not have found, potentially at all, without the new instrumentation.<br />
<br />
* Discovered a harmless logging artifact that we introduced into the last few versions where the header for fireteam data was behind its id on one machine, but in front of it on the other.<br />
<br />
* Thanks to the logging, also discovered an inconsistency in how fleet data was being updated, which was causing those to choke and die on the client side.<br />
<br />
* Went ahead and re-enabled the world-extras and planet syncing, since those go wrong so quickly but we now have logging on for them.<br />
** That immediately errored, but that is just fine for our purposes. Can you tell logging makes us happy?<br />
** This quickly revealed that there was something funky and inconsistent with how we were reading the planet's type. That has been fixed to be consistent.<br />
** That then revealed something a lot more complicated was wrong with how the external data patterns were being read in general, most notably on the world but definitely not limited to that.<br />
*** We improved the logging and instrumentation on the external data pattern serialization in general, and this then solved the issue on the world and the larger issue as a whole that would have come back to bite us in many other areas later.<br />
*** Then put in some more logging related to MDCExoDataExt, since it seemed to have an inconsistency. We now are marking when ExternalData is complete in the log, to make that mistake harder to make.<br />
** Then found and fixed yet more inconsistencies in how we were syncing squads.<br />
*** Also we then stopped syncing some stuff that was set to "only save on the network" (and not to disk) for squads, but it was data that really really should not have been synced because it was working fields from other threads.<br />
** And then also fixed a random extra float that we were sending after "world extras" sync. It's the sort of thing you only see in a log, as it was invisible in the code.<br />
<br />
* We are no longer syncing the IncomingShots on entities except during the initial world sync, because in general we are not syncing shots.<br />
** This is going to take some refactoring for targeting, possibly, but then again existing code will very possibly just adapt to it. <br />
*** "Catastrophic" or "planet switch" styles of sync fixes are probably not frequent enough during combat for it to be too very wrong, but either way things will fix themselves within a rolling 3-4 second window. It's interesting, because its constant attempts to heal itself in various places, while "in battle" with attrition is reminiscent of a scene with Wolverine in X-Men 3. That's an amusing thing to realize about one's code. (Let the record show that the devs really don't like X-Men 3, but that one scene was visually neat).<br />
<br />
* Fixed some potential nullref exceptions in CalculateSpeed() on ships, which really at this point mainly would happen when ships or fleets or speedgroups or some combo of that were being updated at the same time as they had something going on in the background threads.<br />
** Basically there's a whole new nest of cross-threading errors that we can run into, but there's not much we can do about them except to harden individual methods as they come up with problems, and in general also add extra instrumentation to methods if we think they have the potential to be a problem again (this one does).<br />
** This is kind of an unavoidable element of the loose way that we handle threading, which is needed in order to get the maximum speed out of the simulation and all the various threads that are involved. The client side of network sync is now a new source of these issues, but it's not remotely the first of them. We'll probably be swatting this sort of thing down throughout the alpha and beta of multiplayer. And then SirLimbo will somehow find a way to run into exceptions that no one else sees for the next two years. ;)<br />
<br />
* At this point we can confirm, based on our detailed logging, that multiplayer is able to successfully run for a solid four or five minutes of gametime (at 5x sim speed) and come out with consistent results the entire time.<br />
** This leads to about 2600 network log files for the sync messages, which are about 100MB per computer, and this substantially slows down the game from running at an unencumbered pace (the disk writes are heavy).<br />
** Of course, as soon as we turned off the logging, we ran into some sort of new gameplay thing which caused issues in the ship sync code. So there are still some goblins in there, probably related to certain types of data that are not on every ship.<br />
<br />
* Added a new setting to the network section of personal settings: Log Decoded Network Ship Sync Data To Disk<br />
** Same as the 'Log All Decoded Network Sync Data To Disk' setting, but only writes data for actual divergent ship fixes. Since that is one of the more-likely-to-break areas of sync, but only something like 1/15th of the actual data being passed around, being able to isolate it to this is helpful.<br />
<br />
* Fixed an issue where the current galaxy map display mode, and the current planet index you were viewing, would be reset by the sync data on clients in multiplayer.<br />
** It now takes in that sync data only for non-local player accounts. Clicking to another planet only to have your view bumped back a second or two later was MILDLY frustrating, heh. And also slightly hilarious.<br />
<br />
* Discovered and fixed an issue where if a partial sync was sent from the host to the client about a ship that the client had no knowledge of, then the client would try to read it as if it was an off-disk sync and thus read things incorrectly and fail.<br />
** This will probably be elsewhere in the code as well, so we will potentially need to review a lot of other data structures.<br />
<br />
== Beta 2.134 Searching For Planets ==<br />
(Released September 7th, 2020)<br />
<br />
'''This one is still on the beta branch on Steam and GOG, since we have continued making lots of substantial changes to the central serialization logic for the game in service of the multiplayer sync code. We're now done with what would constitute V1 of the MP sync code, so we can come out of the beta branch tomorrow so long as no one runs into any problems with single player on this build. As for multiplayer itself, we have a fair bit of testing to do to make sure that the MP sync code is doing its job and not exploding RAM usage on the clients or harming performance, etc. Once that's verified and all the bugs we find in testing the MP sync code are fixed, then we're officially into an alpha status with multiplayer. Given that the V1 of our sync code turned out to be far more thorough than we originally planned, the multiplayer alpha period should hopefully be shorter than it would have been.'''<br />
<br />
* Extragalactic war ships are no longer classed as 'small' when hovering the Planets Under Attack notification<br />
** Thanks to crawlers for the bug report<br />
<br />
* The Dyson Sphere produces a small number of drones, as well as its usual ships. Those few drones no longer leave the sphere's planet<br />
** Thanks to GreatYng for reporting<br />
<br />
* Update the time estimates for releasing multiplayer and DLC2<br />
** Thanks to ParadoxSong for reminding<br />
<br />
* There's now a Journal entry for when the AI can send extragalactic war units, so they won't come as a surprise<br />
** Suggested by zeusalmighty<br />
<br />
* Fix a bug where the Helping Hands 2 quickstart was broken<br />
** Thanks to Spook for reporting<br />
<br />
* QoL tweak for repair. Any ships on a planet where you outnumber the enemies 10 to 1, or the enemies have less that .2 strength are eligible to be repaired immediately.<br />
** The previous rule was 'Any ships on a planet without any enemies' which could be frustrating if you were trying to hunt down a few cloaked ships.<br />
** Thanks to crawlers and Isiel for suggesting<br />
<br />
* Some minor tutorial tweaks<br />
** Thanks to MasterGeese for reporting<br />
<br />
* The extragalactic war spawning notification message now uses 'a' and 'an' appropriately<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Update the Description for the snake map to mention that it's very hard<br />
** Prompted by a discussion on the forums<br />
<br />
* When you have the galaxy setting for Adjacent Planets Watched, it now takes that as the baseline and is increased by things like Economic Command Stations and Spy Cradles.<br />
** So if you have "Watch 1 adjacent planet" then a military command station will watch 1, but an economic will watch 2<br />
** Thanks to ParadoxSong for suggestion<br />
<br />
* Small update for MoreStartingOptions by AraudB:<br />
** Inordinate had 10 plasma turrets rather than 2. Fixed the number of stations in the mod description too.<br />
<br />
* Removed a blank "Fleet Experience" section from the tips window.<br />
** Thanks to Isiel for reporting it.<br />
<br />
* Several different spots that could throw errors if fleet membership was null now no longer do.<br />
<br />
* DoEntityStepLogic_Ship now has better debug logging.<br />
<br />
=== Multiplayer: Sync Correction V0.90 ===<br />
<br />
* Added a new SerializationCommandType, which has three values:<br />
** NormalFullType, Network_ContinuousPersistentSync, and Network_DuringDetailedNetworkSyncStage.<br />
** This is now used on Factions in order to differentiate the three major types of serialization that we might be doing.<br />
<br />
* The ExternalData on factions is no longer synced as part of the "every frame" IsForNetworkContinuousPersistentSync.<br />
** And actually a bunch of other stuff on factions is now limited out so that it's not over-saturating certain data while it IS still sending other things every frame auth.<br />
** This is also of relevance because it means that any faction externaldata that is not fully optimized to not thrash the GC will inherently do less thrashing of the GC. So that makes mods a little more safe in general in multiplayer.<br />
<br />
* Fixed several parts of the faction object to be efficient and not thrash the GC in the way that we were doing for the ExternalData last build:<br />
** TechHistoryEvent, HackingEvent.<br />
<br />
* FromServerToClient_SendAllOtherSyncDataThatJustOverrides has been renamed to FromServerToClient_SendUltraFrequentSyncDataThatJustOverrides, because it no longer is "all the other data." It's just the most common stuff.<br />
** Added new new messages for time-sliced sending of the following: FromServerToClient_PeriodicFactionSyncDataThatJustOverrides, FromServerToClient_PeriodicFleetSyncDataThatJustOverrides, FromServerToClient_PeriodicPlanetSyncDataThatJustOverrides, and FromServerToClient_PeriodicWorldSyncDataThatJustOverrides.<br />
<br />
* The full-faction-data sync even has been implemented on the client and the host, and now includes speed groups (which previously we felt like were too heavy to send on the ultrafrequent channel -- which was correct).<br />
** This also means that we needed to make the SpeedGroups be nice to the GC on deserialization, so that's done.<br />
** Also fixed several oversights that would have led to hard-to-diagnose endless inflation of array contents for various faction items. Yow. These sorts of things will be hard to find any other way than manual code review, and can be in mods or the main game and can cause massive slowdowns with no central way to diagnose it. These will be "fun" to find in the future.<br />
*** Essentially lists like FactionIndicesIAmAlliedWith were being added to each frame without ever being cleared before the new set of data was put in. This would only happen during multiplayer, and only on the client, but would start causing all sorts of problems.<br />
<br />
* Planets and planetfactions and their externaldata have now gotten the same treatment that factions did.<br />
** Here again there were a couple of infinitely-expanding lists that are now fixed.<br />
<br />
* Whew, okay, fleets and their memberships have also been updated to the new style.<br />
** This... is going to be very problematic, the way it currently exists. This first checkin of the fleet memberships in particular is going to be very problematic indeed, for a whole lot of reasons, but it's a good start for refactoring.<br />
** Essentially, fleets are so bloody complicated the way that they exist right now (in terms of data structure under the hood) that they can't work cleanly in multiplayer without a bit of refactoring. The positive news is that we can make potentially even single-player slightly more efficient with this refactor, but it's going to require redoing drones and a few other things along those lines.<br />
** Edit: the below solves our issue for the time being, although we may still make some changes in this area in the future to make things easier. We're no longer FORCED to, though, which is nice.<br />
<br />
* Came up with what is hopefully a clever use of our existing sync infrastructure to handle the cascading wrong data that can happen from the current fleet structure. This was something that has us stumped for a bit, because doing the most efficient sync style for fleet memberships could lead to units that were in the wrong membership after that.<br />
** The simple solution is the fact that we do know when we are hitting such a case, and so we can just tell all those units to kill themselves on the client. They will then naturally and fully re-sync from the host within 2-3 seconds.<br />
** This is the sort of thing that we want to minimize, of course, but the worst case is having something be permanently wrong in a MP game and us not being able to fix it. Later logic can always do something to sync these back quicker, or to minimize the number of times these are being hit if it is frequent, etc, etc.<br />
** For now we're just monitoring (in the UI) how often it happens, and we can make decisions based off of that... as people choose to share that data about their sessions with us. We may implement some sort of automated data reporting that people can opt into if things seem problematic, or if we think we're not getting reports on things like this but it does seem to be a problem for people.<br />
** At any rate, priority one is making it work properly in the long term of a game even if there is a snafu for a few seconds on a client, and priority two is minimizing or erasing the snafus.<br />
<br />
* Various central world data is now synced from the host to clients every few seconds/<br />
** Among other things that were more intentional, this actually lets clients know the status of other clients pretty rapidly (aka, seeing that someone else is disconnected or connected).<br />
** This should have all the central items of relevance nicely synced, although we are skipping the "world history" and "journal history." For those, if they are really needed, we may just introduce a new sync stage to time-slice the processing of those. But frankly they are not likely to get out of sync.<br />
<br />
* At this point it will be time for us to test our sync code, which is utterly untested at the moment. But the design and implementation of V1, except for actually testing it, is complete.<br />
<br />
=== "Find Planet" Command ===<br />
<br />
* Added a new extension in our central ArcenStrings which lets us do a case-insensitive Contains() call (for purposes of searches, etc).<br />
** This is useful for a variety of purposees, and lets us do partial comparisons (not just Equals()) calls) without having to cast to lowercase.<br />
<br />
* Implemented a new [https://wiki.arcengames.com/index.php?title=AI_War_2:Cheats#Debugging command], "findp", which lets you search for planets via the chat command:<br />
** Formatting is like this: "cmd:findp,gear" (minus the quotes).<br />
*** This example would search for the text "gear," and would bring up results "Geary" and "Gearworld" and "geaRson" if all three of those existed in one galaxy.<br />
** It tells you how many results there are, and if there is more than one result, then repeat entering of the same command (just press up and enter) will cycle you through them. It tells you that it will cycle you through them if there are more than one.<br />
** If you are on the planet view, it switches you to the planet view of that other planet. If you are on the galaxy map view, it centers the galaxy map on that planet.<br />
** Thanks to cml for the initial implementation of this as a mod.<br />
<br />
* Added a new "Quick Tip" item, which shows up randomly on the starting screen as well as in that section in the tips section: Searching For Planets By Name<br />
** During the game, if you hit enter/return to bring up the chat window, and then type 'cmd:findp,yoursearchhere', you can search for planets by name. If you type part of the name of a planet, then you can hit up and enter to issue the command repeatedly and cycle through multiple hits if there are any.<br />
<br />
== Beta 2.133 Hotfixes ==<br />
(Released September 4th, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG, since there were a number of problems with the prior build that prevented adequate testing. Once we have confirmation of more people able to play this new version without incident, we can move back out of the beta branch.'''<br />
<br />
* Fix typo in Full Badger tooltip<br />
** Thanks to Breach for reporting<br />
<br />
* Nanocaust now uses a darker border colour<br />
** I forget who mentioned that this looks much better<br />
<br />
* The Nanocaust might now play a bit of defense<br />
<br />
* Improve the way a player's Overall Power Level is calculated<br />
** A player can now have a high enough Overall Power Level to trigger Extragalactic War Units without allies if they are on difficulty >= 7<br />
<br />
* Dark Spire ship line hacks no longer destroy the VG<br />
** Thanks to Sol for reporting.<br />
<br />
* In Steam, the default launch style is now OpenGL, rather than Vulkan.<br />
** As noted, this is the preferred launch style, and more stable.<br />
** Thanks to TechSY730 for suggesting.<br />
<br />
=== Fixes Relating To Prior Beta ===<br />
<br />
* Fixed several areas where trying to check a non-existing setting (potentially because it was from a mod or expansion you don't have installed) was causing issues.<br />
** This is a problem dating back months to when we changed how lookups to missing settings worked, but we're only now seeming to hit it in the most recent betas.<br />
** Thanks to Badger and others for reporting.<br />
<br />
* A variety of extra debugging info has been put into some of the high-level world serialization areas for our logs when problems happen.<br />
** Also put in a bunch more into fleets and fleet memberships for debugging purposes.<br />
<br />
* Identified two fields from fleet memberships that were not properly translated over into the new format in the last beta build, causing all new savegames in that beta to fail to load.<br />
** Now that this is fixed, the broken savegames all seem to load just fine, which is always nice when that happens.<br />
** Thanks to StarKelp, Sol, and ArnaudB for reporting.<br />
<br />
* The "Civilian Industries" mod by StarKelp has been updated to function in the new code framework we introduced last build.<br />
** All of the mods we distribute with the game are again working at the moment, to our knowledge, now. Code-style mods from other sources (forums, etc) may not be updated yet to compatibility with this latest set of builds.<br />
** Please note that we broke compatibility on purpose (not a typical thing), to add multiplayer functionality to mods and make sure that no mods would cause unpleasant spikes in memory usage on client machines in multiplayer.<br />
<br />
== Beta 2.132 Exterior Leviathan ==<br />
(Released September 3rd, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG, because we made so many changes to some fundamentals of how the game works. These are driving at improvements for multiplayer, for the partial syncs to be able to happen, but they break code-style mods for the game (including Civilian Industries as included in this version), and it's possible that they temporarily are breaking something else since we've changed several thousand lines of code in a few dozen files and may have made an error in any one of a number of places. Some bits of multiplayer sync are a bit more hefty than we'd been thinking they might be for V1 of that, but then again we're getting more of it done upfront rather than later. We'll be able to start actually testing the sync maybe tomorrow, unless a bunch of other things are broken by our changes.'''<br />
<br />
* Dyson Spheres now must kill all the guard posts on a planet before they can kill a reconquest command station. This should prevent a buildup of guard posts. <br />
** Thanks to TechSY730 and Khankar for reporting<br />
<br />
* Fix some bugs with Usurpers owned by praetorians or other AI subfactions<br />
** Reported by GreatYng<br />
<br />
* Try harder to make sure waves against minor factions have ships<br />
** Reported by GreatYng<br />
<br />
* Fixed some minor typos<br />
** Reported by GreatYng<br />
<br />
=== Multiplayer: Sync Correction V0.75 ===<br />
<br />
* New setting in the network tab of personal settings: Network Logging Includes Sync Checks<br />
** During gameplay there are messages sent by the network as frequently as several every 100ms, and these are one of the largest sources of data usage. This lets you see the timing and payload size of those messages, if you think that potentially they are what is slowing things down in a networked environment.<br />
<br />
* Stripped out a lot of old code that was related to an old style of sync (aimed at desync detection), and started building in the new sync framework (aimed at detecting micro desyncs and correcting those).<br />
** Decided to move this to a new AIWar2NetworkSync static class in its own file, as after just getting about a third of the way through this logic, it was clear that it was pretty sizeable and overwhelming the rest of the networking code's readability.<br />
<br />
* Added in the logic for the server keeping a list of ships that the various clients have told it are divergent.<br />
** The server could be getting overlapping reports from several clients, but we need only one copy of this, because we're going to err on the side of caution and tell every client about each bit of sync data that needs fixing.<br />
** We could always change this in the future if there seems to be a bandwidth benefit to this, but it would probably just mean extra processing on the host for more unique sends per-client. At the moment we judge that to be the resource that is more scarce.<br />
<br />
* The logic for removing ships on a client that were not part of the last sync cycle, but also not new during that cycle, has been put in place.<br />
** The idea here is that these ships probably died on the server, and the client didn't know for some reason.<br />
<br />
* The logic for having the server do send check data for 1/20th of its ships (or stacks or whatever, as the case may be), but no more than 9000 per 100ms, is now in place.<br />
** This is the meat of the desync detection code, and it is based around only a very few factors:<br />
*** Health lost, shields lost, extra ships contained within (of ANY fashion), current planet, and current location.<br />
*** We are generally making the assumption that if all of those things match between the client and the host, then the ship is probably in sync.<br />
**** In the case of certain faction ships that do things like gather resources or whatnot, that will obviously be very incorrect, but it is correct for most combat ships.<br />
**** For those cases where faction-specific data is potentially going to be wrong, it would be prohibitively expensive to add a bunch of checks based on that extra faction data, so we will build in separate tools for forcing sync of these non-combat factors.<br />
**** Frankly, other things like fireteam history, which would be missing on the clients, could be synced via other methods later on if we really want to. Though that's generally only used for debugging in most cases, so seems not to be worth doing.<br />
<br />
* The logic for clients checking for mismatches with their local data compared to the server is now in, and it sends back the requests to the server to have divergent units corrected.<br />
<br />
* On PlanetFactions, there is now FactionIndex and PlanetIndex directly in order to make it easier to quickly find those in case they have been reassigned.<br />
** Additionally, their Faction and Planet member variables are now exposed as get-only properties to keep unexpected things from happening there.<br />
<br />
* The way that squads deserialize has been updated substantially to allow for several levels of partial deserialization for various sync scenarios.<br />
** The sync fix code allows for normal-level same-planet sync fixes (which should hopefully look very nice with things sliding visually into new positions if positions differ).<br />
** The sync fix code then also allows for normal-level different-planet sync fixes, which instantly disappears the old spot and puts it somewhere new.<br />
** And finally, the sync fix code allows for catestrophic-level sync fixes, where the two entities aren't even the same (not matching faction or type), and it destroys the old one instantly and as invisibily as possible, and then puts in the new one where it should be.<br />
*** This last category is for basically when the primary key ID generators are out of sync between the host and one or more clients. These will be hit with some regularity, but they should not be hit over and over for the same unit.<br />
<br />
* The deserialization logic for "fleet memberships" has been split in such a way that we can now sync just some of the data into them (for network purposes).<br />
** We are not using this yet, but will once we get into the fleet sync phase of the sync cycle (outlined below).<br />
<br />
* CalculateContentsCount() on squads now takes a required parameter IsForNetworkSyncCheck.<br />
** If that is true, then it ignores any data that is not on the squad (but is usually on the fleet or the "fleet membership" areas.<br />
** This is things like drones or transported ships, and city sockets. These will be something we sync at the fleet level.<br />
<br />
* Network_CurrentSyncCycleNonSer has been moved off of the World_AIW2 object and into the AIWar2NetworkSync class.<br />
** Same with the OnServer_SquadsNeedingSyncFixes dictionary.<br />
<br />
* The server now cycles through a series of "sync stages," where it will sync different things other than just squads.<br />
** This is useful for us to be able to time-slice syncing of data of different sorts... for instance fleets and fleet memberships data.<br />
** We actually are now going to use this for separating out the squad sync checks and the divergent squad fixes, too, since time-slicing that is good for smooth gameplay as well as also making sure that multiple clients with partially bad sync cause as few excess sends as possible (that's a ms timing thing).<br />
*** The code for syncing the squads that were divergent is now in, as noted above.<br />
<br />
* The data for factions, and for some of the Primary Key info, is now synchronized from the host to all of the clients every authorized network batch.<br />
** On average this is probably anywhere from 10kb to maybe 40kb, at most. It's easier just to keep this in sync.<br />
** At the moment, for ExternalData on factions and squads, there is a huge amount of inefficiency on the clients in that it is completely recreating objects every network sync right now. We are looking into various refactoring options.<br />
<br />
* At the moment we are explicitly not syncing SpeedGroups, since those are complicated and may tend to diverge.<br />
** We are probably going to wind up refactoring these to be by faction, or something along those lines. In fact, there are several major refactors coming, and one of those may be that a lot of the PKIDs may become faction-specific in general.<br />
<br />
* Turns out that adding the NetworkSyncStage as a concept was a really good idea, because we not only need to sync squads and fleets, but also planets and some data off the world, too.<br />
** The faction sync is happening once every sync frame, but it's possible we might back off the frequency of some of that if it becomes too harsh. Mainly for ExternalData stuff. But for now we'll see how it does.<br />
<br />
* Planet has now had its data split out like squads and fleet memberships and factions and some other classes to have its own DeserializedIntoSelf() method.<br />
** Also PlanetFaction. Whew, wow. For this it doesn't sync the entities during the partial sync, of course, unlike during disk or main network sync.<br />
<br />
==== "ExternalData" Updates That Affect Mods ====<br />
<br />
* The ExternalData framework has gotten a few updates to allow for us to do partial-syncs like we now do with squads and such, versus always just creating something new.<br />
** Any mods that use ExternalData will need to be updated to use the new pattern, although it's not a huge change.<br />
<br />
* FireteamRequiredTarget has been updated to have a DeserializeNewFrom and DeserializedIntoSelf, to ensure that what we are doing is intentional.<br />
** Since this is a class, not a struct, it's highly efficient for us to be able to write to an existing class rather than always replacing it, even in single-player.<br />
<br />
* The following "external data" has been updated to be dramatically more efficient with syncs during multiplayer, employing a variety of strategies that we're using in the main game stuff:<br />
** WormholeInvasionDataExternal (this one is basic and simple)<br />
** AI_PlannedWave_Data (this one is complex in that it has a list of sub-objects and shows how to handle that properly. It even gets rid of theoretical extras on the client machines)<br />
** DoomData (this is really old style in terms of the data, and is not used actively, but does show a way to handle the multi-part sub-data well).<br />
** ExternalData_AIFactionCommon (this one is ridiculously complicated and used for a couple of factions)<br />
*** ExtragalacticBudget and AIPChange as a part of this, and are good simple examples. These don't even have the new bool passed to their sub-objects, because both the DeserializeNewFrom and DeserializedIntoSelf() methods can both validly be used as part of one during-game sync (depends on relative list length, see code).<br />
*** StoredAIPurchaseCostByBudgetForSpecificUnits is a good example of where it's better to just use a bit of extra GC (especially with the new time-sliced GC unity now has) instead of doing extra CPU processing to be a hair more efficient with that memory.<br />
*** Fireteams themselves have changed from having a constuctor for deserialization to having a DeserializeNewFrom method that makes it a bit more explicit what is happening. We also pulled out the id deserialization so that we could reuse Fireteam objects as much as possible if they are being updated.<br />
** DysonExternalData and DysonAntagonizerExternalData (another two examples of the simplest possible cases for updating a modder might have)<br />
** MacrophageGlobalData, MacrophagePerTeliumExternalData, MacrophagePerSporeExternalData, and MacrophagePerHarvesterExternalData, which are also very simple examples.<br />
** RiskAnalyzerData is even simpler, with no sub-objects to modify.<br />
** AIReservesDataExt is seemingly simple, but is dodging accidentally creating two sparse lookups internally on each sync.<br />
** AstroTrainsGlobalExternalData, AstroTrainsPerDepotExternalData, and AstroTrainsPerTrainExternalData are all pretty straightforward, although we saved ourselves a lookup load on AstroTrainsPerDepotData.<br />
** AutosaveDataExt, even though it's not really even needed on the clients at all. Since it has some sub-data that is in a list, and in string format, we're just not bothering to send that to clients at all during syncs since it is a waste of bandwidth.<br />
** DarkSpireData, which has some complexities with the sub objects DarkSpirePerPlanet. It has special notes in the code for any similar cases with a sparse lookup and sub-objects.<br />
** Two "DZ" items for DLC2, which was wildly complicated to convert compared to most things. It involved sub objects DZResourceConversion, and DZUpgrade, among other nested objects. Mostly it was a good example of just following the existing principles on down, but there is one ConversionBag that was tricky enough that we're just clearing and refilling it in a somewhat GC-wasteful way rather than going into the extra complexity and perhaps incorrectness of doing it another way.<br />
** AntiMinorFactionWaveDataExt, ExoDataExt, and MDCExoDataExt, which thankfully were all trivial examples of the common case.<br />
** ExternalData_GroupTargetSorting, which has nothing formal to save or send.<br />
** InstigatorPerUnitDataExternal and InstigatorDataExternal, which again the simple common case.<br />
** SpawnAnimationData and DespawnAnimationData were very old and probably not used, but simple to upgrade.<br />
** MarauderOutpostRaiderSpawnData is again the simple common case.<br />
** MercenaryUnitExternalData and MercenaryGlobalExternalData, which had some more notable complexity. MercenaryBeaconState upgraded with WorkingHasBeenUpdatedThisDeserializationCycle to handle its situation. MercSpawnRequest just does it the inefficient way since these rarely exist, and only exist for a short period when they do. SingleMercenaryGroupState is a strange bit of data, and gets handled in a novel way. Thankfully MercenaryUnitData was a trivial case.<br />
** ExternalData_FactionCommon is old and strange, but was not too hard to update.<br />
** ExternalData_MinorFactionCommon was super old in its styling, but already was efficient enough.<br />
** NanocaustMgrData, NanocaustPerUnitDataExt, and LastSpawnTimestamp are all extremely simple. The old FrenzyFleet stuff is still kinda-sorta there, but never has data since it is legacy, so that shouldn't cause any GC churn.<br />
** FallenSpireGlobalExternalData and FallenSpirePerUnitExternalData had a few quirks, but mostly were the common case with some minor array clearing and preservation.<br />
** One "NP" item from DLC2 required pretty minimal updates to work with this, hooray.<br />
** ScourgeGlobalExternalData and ScourgePerUnitExternalData were both the common case with a tiny bit of list/dict management.<br />
** Two "ZA" items from DLC2 are mostly the common case but with some collection management added in.<br />
** Two "ZM" items from DLC2 are also mostly the common case with a bit of collection management.<br />
** HRFDataExt and MarauderDataExt both were also mostly the common case with a bit of list management. There is a question mark about the regiments aimed at planets, on this and a few other locations, but they are at worst going to be inappropriately blanked out over and over again on clients in MP, which we can fix later.<br />
<br />
* In general, any of the usages of IArcenExternalDataPatternImplementation in mods should be updated to follow the new examples in the main code. The changes are not severe.<br />
** The most important changes are the ones above, relating to SerializeExternalData() and DeserializeExternalData() taking an extra parameter, and then each handling a graceful DeserializedIntoSelf() sub-method (and choosing if there's some data not to sync across during gameplay if required). But beyond that, there are some more changes:<br />
** RelatedParentTypeName has been removed, as it was never used. Same with GetShouldInitializeOn.<br />
*** During InitializeData, the object ParentObject is being cast into an appropriate-type Parent object for general usage, (aka GameEntity_Squad, Faction, whatever) that people can then later use. If the type is wrong, it will just come across as null, and we have it complaining if that's the case. You can do the same or omit that part if you don't care.<br />
<br />
=== Third Off-By-Default Mod: More Starting Options By ArnaudB ===<br />
<br />
* The More Starting Options mod by ArnaudB is now included with the game by default (with permission), but disabled.<br />
** Requires The Spire Rises expansion (DLC1).<br />
** Pick between seven starting fleets and twenty starting battlestations for your custom games. These choices are balanced for regular play and are acceptable to use for achievements.<br />
** The eight starting fleets will offer you a more varied combination of ships so you may explore more varied combinations of technologies and playstyles than those incentivised by the default options.<br />
** The twenty starting battlestations will let you play and test every of the many turrets brought by The Spire Arise DLC, which are otherwise completely absent from the default starting options. You’ll find multiple combinations for both offensive and defensive playstyles, balanced for your enjoyment and giving you hints as to what synergies you could make with a few turrets or ships.<br />
** This mod is off by default as to avoid paralyzing the player by offering too many choices. <br />
** You can activate this as a new player unsatisfied with the default options, or as a veteran wishing to vary your experience of the game.<br />
<br />
=== Mod: Civilian Industries Updates ===<br />
<br />
* Civilian Industries 0.6.4<br />
** Full update notes may be found on the forums: https://forums.arcengames.com/ai-war-ii-modding/civilian-industries/msg222774/#msg222774<br />
*** A large number of code optimizations, directly mostly at performance and multiplayer readiness.<br />
*** An overall nerf to Mobile Ship counts, but a simplified formula will allow easier future modification.<br />
*** A rework to the Barracks. Now scales with Mark Level, Command Tech, and can even let you get more Protectors at mark 7.<br />
*** Buffs to many Protectors. Balance for them is still being worked on.<br />
*** Resources renamed across the board, and structures now state what technology works for what resource.<br />
*** A notification will now show when a Raid is about to fire against your civilians, thanks to Chris' recent changes on the notifications front.<br />
<br />
== Version 2.130 Redux: Dutch Cities and Softer Eyeballs ==<br />
(Released August 31st, 2020)<br />
<br />
'''We accidentally forgot to increment the version number in game. So this would have been 2.131, but is just called 2.130 in the game. Sorry about that, this is perhaps a first?'''<br />
<br />
* New planet naming style added, with over 4000 names in it: Cities (Dutch)!<br />
** Most Dutch cities, villages, and hamlets shorter than 10 characters; also includes many local spelling variations. Created by GreatYng.<br />
** Thanks to GreatYng for creating!<br />
<br />
* Added a new xml tag, external_invulnerability_unit_required_count, which works with external_invulnerability_unit_type or external_invulnerability_unit_tag.<br />
** This basically lets us say that a unit of whatever sort is still protected by others (such as guard posts), but only if there are more than the number specified.<br />
** The default number is 0, which means the previous behavior of "any guard posts present make this invulnerable."<br />
** For AI Eyes, the number is now 3, which means that if there are not at least 4 guard posts remaining on a planet, you can go kill the eye.<br />
*** This is pretty huge, because you can now kill just part of the planet and then kill the eye before going to kill everything else.<br />
** If we need to make further adjustments to the Eyes based on the relative ratios of strength of them versus enemies, we can do that in the future, but for now this is a solid start.<br />
** Thanks to Lord Of Nothing and CRCGamer for reporting.<br />
<br />
* Further balance adjustment: all AI Eyes are no longer Mark 7 at minimum. They are now Mark 5 at minimum, and if their planet would have a higher mark (6 or 7) then they will instead have those higher marks.<br />
** This should help to make a bit more variance with them, and eyes to be a bit less of a pain in general.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed HRF Nucleophilic Defenders as well as other defender types not being loadable into transports. Additionally they now count as Frigates and benefit from their hull/shield/damage settings.<br />
** Thanks to Darkshade for reporting and -NR- SirLimbo for fixing.<br />
<br />
* Fixed a couple of issues relating to getMostCommonPlanetForRegiment() with fire teams, which were likely leading to who knows what other errors.<br />
** The PlanetsForRegiment Dictionary was declared as static, and so all of the regiments were trying to use the same dictionary at once, leading to exceptions as well as probably wrong results. Exactly how much chaos this could have caused is unclear, but with some of the LRP threads stalling out this is certainly not going to help (fingers crossed it was the whole thing).<br />
** Now if getMostCommonPlanetForRegiment() is called again on the same regiment before it finishes, it will throw the error "BUG: called getMostCommonPlanetForRegiment() again for a fireteam regiment before the last call finished. Will break both calls." Hopefully we don't have people getting this, but if we do we need to know about it to fix that. In that case, the workingPlanetsForRegiment dictionary can't work as a member variable at all.<br />
** Additionally, if there's an exception in getMostCommonPlanetForRegiment() it will now throw an exception but then exit more gracefully, letting whatever calling code keep doing its thing.<br />
** Thanks to CRCGamer and TechSY730 for reporting.<br />
<br />
* A few versions back, we made some changes to how the icons are rendered on the galaxy map, including planet icons. We made them keep their orientation better, but one of the things that was an unfortunate side effect of this is that the colliders on the lines between planets were often taking precedence over the actual planet or the ships at the planet. That is now fixed.<br />
** Thanks to TechSY730 and CRCGamer for reporting.<br />
<br />
* Heavily reworked how Journal_TooMuchAIP calculates both how many planets you have paid AIP for, as well as how many planets are neutered. It was triggering the journal entry far too early, previously.<br />
** Please see the code or here for details: https://bugtracker.arcengames.com/view.php?id=23609<br />
** Thanks to Sigma7 for reporting, and Badger for helping figure out what was wrong.<br />
<br />
* Fixed old wording on the AI Eyes that still said "when there are enough fleets present on this planet" to instead read "when it is sufficiently outnumbered on this planet."<br />
<br />
== Version 2.130 Civilian Industries ==<br />
(Released August 29th, 2020)<br />
<br />
* For determining what your performance is like, the game now uses only one second of data instead of ten seconds.<br />
** This makes the sim speed average a lot more responsive and natural-feeling.<br />
<br />
* The "suppress upgrade prompt" setting and keybind now both work on fleet upgrades and not just science tab upgrades.<br />
** There is some extra info in the tooltips and popups to reflect this, as well.<br />
** Thanks to Fritz1776 for suggesting.<br />
<br />
=== Second Off-By-Default Mod: Civilian Industries By StarKelp ===<br />
<br />
* The Civilian Industries mod by StarKelp is now included with the game by default (with permission), but disabled.<br />
** This lets people simply enable the mod by clicking a button in the settings menu, rather than having to find and download the mod from elsewhere.<br />
** StarKelp has been a volunteer contributor to the main codebase off and on for a while, and this mod contains both code and xml.<br />
** Full description of the mod is included in the tooltips in the game, but also here:<br />
*** Every empire is only as strong as the people within.<br />
**** Protect your people, and they will help your empire flourish.<br />
**** From collecting and processing various resource around the galaxy to bolster the economy, to taking up arms on their own to aid your survival, you'll find their help invaluable in the long term.<br />
**** As they flourish, so do you.<br />
*** Adds in the Civilian Industry faction, a potent defensive faction that can be allied to either a player, or a faction team.<br />
**** They will expand alongside their respective ally, and produce a large number of defensive forces to aid their team.<br />
**** They gain a new resource type per planet they expand to, and will work diligently to spread these resources throughout their empire.<br />
*** When allied to the player; you will find your command station and battlestations have access to a few new structures that you can invest in to greatly incresae the power of your civilian economy.<br />
*** Please check Galaxy Settings for many tweaks in regards to how they behave.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a bug in GetIsWithinRangeOf() that could happen in the selection logic (and probably other places) if a background thread marked a unit as deleted as it was doing the range check.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* It is now possible that your logs will wind up having the message "BUG: overriding speed limit for group X to [a negative number below -1]. Overflow? Setting to -1 instead."<br />
** If this is frequent, it may slow down your game, but the stack traces will let us know where we are going wrong and causing this to happen.<br />
** We fixed one area where MAYBE this could be caused, but probably that was not possible in the place we fixed it. Most likely the problem is in something that is calling GameCommand_CreateSpeedGroup with a command.RelatedIntegers[0] that is greater than the 32767.<br />
*** With that in mind, anything that is larger than that being passed into that method is now automatically corrected down to 32766. This may lead to some turbo speed groups, not sure, but at least they won't be erroring... and that IS what the calling code is asking for, so maybe it's intentional?<br />
** At the same time, in some other places in the code where it was checking to apply the speed only if it was "not -1", it is now checking to apply the speed limit if it is "greater than 0." This seems more like the correct intent, and hopefully won't break anything.<br />
** And beyond that, prior to serialization, any speed groups with an OverrideSpeedLimit less than -1 will automatically just set their value to -1 silently and thus avoid popup errors that could be really annoying in savegames for folks. This has been an issue on and off since July 24th, apparently.<br />
** Thanks to Lord Of Nothing (twice over), TechSY730, GreatYng, and Apthorpe for reporting.<br />
<br />
* Add a new time_must_have_been_on_planet_before_transforming_if_outnumbered_or_outnumbering, for use with transform_when_outnumbered and transform_when_outnumbering.<br />
** This defaults to 0 seconds, which has been the behavior in the past.<br />
** But now for all of the ships (mostly AI Eyes, but also some guardians) that use transform_when_outnumbering, it now has a value of 2.<br />
** For those that use transform_when_outnumbered, it has a much higher value of 30, to keep them from downgrading their alertedness too easily.<br />
** The AI eyes will still switch between alerted and unalerted status every so often in a general battle, since their alerted status increases the balance of battle in their favor so much, but now it won't be a constant thing and ships can continue targeting them in a reasonable fashion.<br />
** Thanks to whakomatic, Ovalcircle, MasterGeese, Gdrk, and GreatYng for reporting.<br />
<br />
* Additionally, previously anything that was transforming via one of those two methods was having its health and shields and cloaking points all reset to full.<br />
** Now, however, when transformed via these two cases ONLY, it keeps the health and shields and cloaking point losses after transformation.<br />
** This makes it so that battles with AI eyes are actually something you can win, even as they cycle back and forth between statuses. And in general this just makes sense, and is important on the dire guardians that use this same sort of mechanic, too.<br />
** Thanks to whakomatic, Ovalcircle, MasterGeese, Gdrk, and GreatYng for reporting.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* GameCommandTypes are now serialized by index rather than name, which chops off the vast bulk of size from most GameCommands, leading to even snappier networking.<br />
** Honestly this is a very small boost in most cases, but this also took like two minutes to add.<br />
<br />
* The network traffic logs have all been updated to be able to actually report how many bytes were read in for each message that the host or clients receives. Before it was saying ?? because we were checking prior to doing the reading.<br />
** Note that depending on the networking platform in use, there is sometimes extra buffer data that was read from the socket, but if it wasn't part of the game, we just ignore all that. This is also ignoring packet header sizes, so we're just talking payloads here (but that's consistent with the send records, too.<br />
<br />
* In the escape menu, on clients and the host, it now has a new Multiplayer Stats section when you are in multiplayer mode only.<br />
** At the moment, this shows how many messages have been sent or received in total, and how many bytes/kb/mb have been sent.<br />
*** These all apply to the current session only. So if you are the host, it is the stats since you loaded up the server and people started connecting. If clients come and go, it's including all of that. If you're the client, it's the amount since the last time you connected; if you disconnect and then come back, it starts over.<br />
** This is pretty important information in terms of figuring out just how much data is actually being sent back and forth, and how it changes during gameplay, so that we can react to any unexpected spikes if there are any.<br />
<br />
== Version 2.129 No Shrooms For Ships==<br />
(Released August 28th, 2020)<br />
<br />
* Nanocaust now prioritize holding planets adjacent to their homeworld<br />
** Thanks to crawlers for reporting<br />
<br />
* The nanocaust units now prefer to spawn a bit further from their centers; it looked kinda weird when a giant Nanocaust ship would spawn right on top of a nanobot center.<br />
<br />
* Added a lot of extra instrumentation to the deserialization and serialization of factions, since there seems to be some sort of error in there with savegames from specific versions.<br />
** Essentially with this sort of thing on, we can now manually look through the deserialization log and see if we notice where field data stops making sense. It was obvious that it was getting something like "I am hostile to 20 thousand factions," which is nonsense data, but it was not clear where the data was going wrong prior to that.<br />
** From this, we could then see that most of the data reads in the player faction seemed reasonable, but the faction right after them was immediately messed up. This is after a lengthy code review turned up nothing wrong, so it's always possible that it's some sort of edge case that has been around for longer than we thought.<br />
** Added in code to make it so that if an exception is thrown while deserializing a faction, we will now repeat that error better and stop doing further deserialization attempts. It turns out that was what was happening, and a more careful reading of the log could have saved about an hour and a half of work (oh well, things in the future will be easier to debug).<br />
** Thanks to Lord Of Nothing for a very challenging save that led to these changes.<br />
<br />
* Fixed an issue with some savegames that had hacked dyson or dark spire ships, where the HackToGrantShipLine_DontDestroyTarget hack had been removed and split into several versions a few versions back.<br />
** We now have added HackToGrantShipLine_DontDestroyTarget back in, in a deprecated fashion, so that old savegames with this data in it can load.<br />
** Thanks to Lord Of Nothing for the save that let us find this.<br />
<br />
* Fixed a bug in the prior build where the "flair" overlays for ships in the main view were either black (some machines) or a rotating color set of insanity (others).<br />
** One line was accidentally omitted in the new build of the shader that we made.<br />
** We also updated some calling code to the shader in a way that is harmless but not actually needed for this fix.<br />
** Thanks to Strategic Sage, Isiel, CRCGamer, and TechSY730 for reporting.<br />
<br />
* The "Icons Disappear When Camera Lower Than" setting in the main camera window has been updated as follows to have this note<br />
** Note: this setting does nothing (icons always draw) if you have 'Skip Drawing Ship Models' turned on in the Performance section.<br />
** (Also, this is how it actually now works).<br />
<br />
* If a player is already on a planet viewing that planet, and a further command was sent to view that planet again (as if they were not already there), then funky stuff happened in various places, including the wormholes getting half-initialized and not drawing properly in scale.<br />
** To solve this, it simply doesn't do anything if you try to re-open your view to the existing planet you are already on.<br />
** Thanks to StarKelp for reporting.<br />
<br />
== Version 2.128 Don't Lie About Distant Future Waves, AI ==<br />
(Released August 27th, 2020)<br />
<br />
* Fix a bug where the scourge would sometimes suicide into multiple layers of defensive planets in the (foolish) hope of hitting the weak target on the other side.<br />
** This is an intelligence improvement for all factions using fireteams (Hunter, Warden, Nanocaust, Scourge, etc etc).<br />
** Thanks to Crawlers for reporting<br />
<br />
* Add some defensive code to the Fallen Spire.<br />
<br />
* Put in extra logging for the SpeedGroup serialization and deserialization, to figure out where there are occasional exceptions being logged.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* Sniper Energy Wave on the Dark Spire Eidolon has been renamed to just be Energy Wave, since this is not an infinite-range weapon.<br />
** Thanks to crawlers for reporting.<br />
<br />
* DoForKnownWavesAgainstHumanHomeworlds in WaveUtils has been renamed to DoForKnownWavesAgainstHumanWorlds, which is what is accurate.<br />
<br />
* A whole bunch of extra array indexing calls into QueuedWaves have been made more efficient in the AI HandleWavesForAI() method.<br />
<br />
=== Interface Improvements ===<br />
<br />
* The planet's tooltip has been updated to show the owner on the same line as the planet name, but positioned way over to the right.<br />
** This keeps things pretty condensed, but avoids some clashes of words where it seemed to be saying something like "Permanently Watched Owner:" as one phrase.<br />
<br />
* Previously, there was a chat message going out as soon as a wave was queued, but before it would become visible to the player in the actual interface (based on their chosen galaxy map settings for how much warning to get).<br />
** Now it only shows the actual chat message from the AI as the wave is being revealed to players.<br />
** This also fixes an issue where it was for some reason actually giving the wrong planet name that it was going to attack in some cases, since the announcement came before it finished changing its mind about the real target it wanted to hit.<br />
*** This latter one may have been more common in multiplayer, but it's hard to be sure. At any rate, it just tells you real information now.<br />
<br />
* The second chat message that goes out (with the audio taunt) when waves are launched now also happens when they are revealed, and no longer duplicates when in multiplayer mode.<br />
<br />
=== Mod Compatibility Improvements ===<br />
<br />
* There is a new DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() method that gets called on each faction each frame, and which takes in a note which says if it is the first faction of its type this frame or not.<br />
** This lets us move notifications for factions into their own files, which makes notifications modding-compatible.<br />
** There are some other supporting methods that have been added to handle this, but understanding them is not required for using this,.<br />
** It is worth noting that ALL of the existing DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() calls do happen in a loop prior to the new DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() being called.<br />
** As an interesting side effect, this actually makes it so that notifications will now work for people in spectator mode in multiplayer for the first time.<br />
** The nanocaust data has been moved out of the human file as an example of how to do the others.<br />
*** Same for antagonized dyson spheres, and the dark spire. It would be great to get the other factions moved over to their own files for the sake of cleanliness, but functionally there will be no difference for our things in the main game and expansions now.<br />
** Thanks to StarKelp for requesting the ability to add notifications in mods.<br />
<br />
* Added a new method DoPerSecondLogic_Stage0Clearing_OnMainThreadAndPartOfSim_OncePerFactionTypeEvenForFactionsNotInGame().<br />
** This is called on the GetDefaultImplementationForLobbyOrClearingOnly() from the faction TYPES, which means it happens even for the factions not in a game. Great and easy place to clean up, and we know it happens only once per cycle per faction type, and we also know that it happens even if a faction is not in the current campaign.<br />
** This is useful for factions that had some data in a prior campaign, but the player loaded a new savegame and they are not in this one.<br />
** All of the various data from these that was previously in the Human class and in DoPerSecondLogic_Stage1Clearing_OnMainThreadAndPartOfSim() has been moved to the new stage0 for each of the specific class types, which again is more mod-friendly and should prevent the issue of certain mods being unable to clean themselves up between campaign loads.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* When the host is waiting on a client that is behind, it now shows a message saying which clients are behind and being waited on.<br />
<br />
==== Bugfixing ====<br />
<br />
* The galaxy map spacebox background is no longer serialized into savegames. Instead it is deterministically calculated based on the map seed.<br />
** This makes very little difference for single player, although you will notice that reloading the game or going back and forth to the map, or hitting regenerate map on the lobby no longer changes the space background.<br />
** But for multiplayer, this keeps things consistent between all players.<br />
** For existing savegames, you will notice that the spaceboxes become something new and stay that.<br />
<br />
* It turns out that the planet spaceboxes were not being serialized at all in savegames before, but their rotations were.<br />
** This was leading to very different planet background views in multiplayer, to a very distracting degree.<br />
** This has been made deterministic, and we no longer store even the rotations in savegames.<br />
** For single player there is no real change except that the savegames are a tiny bit smaller.<br />
** For existing savegames, you will notice that the spaceboxes become something new and stay that.<br />
<br />
* Fixed inconsistent sorting between runs of the game (and between differnt clients) for rows in the following tables:<br />
** AIGuardPostAndCommandPlacerTable, FleetDesignTemplateTable, AIShipGroupCategoryTable, and SpaceboxDefinitionTable.<br />
** These led to various MP inconsistencies, including the spaceboxes still being divergent on planets despite the math lining up.<br />
<br />
* Fixed an issue where the home planets of other players in multiplayer games just looked like normal planets instead of homeworlds.<br />
<br />
* There were a bunch of cases where human factions were still named wrong during multiplayer (and differently on the host and client), saying the wrong player's name or Unknown Player in various cases. Fixed all of those.<br />
** Additionally, in the case of multiple players owning a faction, if they did not choose an empire name, it now says all of their names together (but no more than three) as the faction name.<br />
** If there are more than three players controlling a single faction, that gets too wordy, so it just says "and X more".<br />
** When loading the single player games of other players, you will now see their chosen account names (from in AI War 2, not Steam or whatever) instead of your personal profile name.<br />
<br />
==== Seeing Where Other Players (Or Spectators) Are Looking ====<br />
<br />
* The way that the gimbal icons decide which diffuse color to use is now more efficient on the GPU (this is minor, but hey).<br />
<br />
* It is now possible to have a secondary diffuse color for the flair (really used for selection circles now), which is multiplied by the main "other diffuse color" of the icon.<br />
** This lets us do things like change the opacity or color of the selection ring around a ship or planet.<br />
<br />
* When you are viewing a planet, the game's way of showing the selection circle around it is the same as it always has been.<br />
** However, when someone else in multiplayer is viewing a planet other than the one you are viewing, it now shows a dimmer and more-transparent selection circle to show you that someone else is looking there.<br />
** If someone else is looking at the same planet you are looking at, then it will show the normal bright selection circle in a faint green rather than white.<br />
** This is something that is deceptively important, because we need to make sure that we know which planets are "tier 1" planets on clients and the host, which lets us verify that ViewedByPlayerAccounts_DuringGame is being set properly on all machines (it is). This keeps the game in the sync, which we can now tell is working properly.<br />
** But also this is just a helpful indicator for players to help with coordination. ("Check out this planet I am looking at in the northeast" is so much easier to say than trying to direct them to a name).<br />
<br />
* As an added help, in the galaxy map view when you hover over a planet, it tells you which other players are viewing a planet. This may be players in exclusive control of a faction, or one of several player players controlling a faction, or just a spectator, so it shows you their name as it would appear in chat.<br />
** For games with more than two players, this is fairly important for purposes of clarity. In a two player game it's easier to just infer what is going on.<br />
<br />
* When a client is disconnected, other clients and the host can still see what planet that client WAS looking at, and that planet still counts as a Tier 1 planet for processing, but hovering over it will show the name of the player with (Disconnected) behind it on the host.<br />
** Presently clients cannot see the status of other clients.<br />
<br />
==== Disconnection And Re-connection Verified ====<br />
<br />
* We can now verify that after a client disconnects in a disorderly way, the host notices a bit later and then continues on without them (they can choose to pause or not).<br />
** We can FURTHER verify that the client can reconnect to that running game with only a few-seconds interruption to other players who are still going. Even if the client had crashed and had to restart the game or their computer, they are able to get right back in there.<br />
** The original AI War did not remotely have any of these capabilities, but this works on all three networking platforms.<br />
<br />
== 2.127 Cranky AI Exceptions ==<br />
(Released August 26th, 2020)<br />
<br />
'''This was originally released as a beta on the 26th, but then changed to a main branch release on the morning of the 27th.'''<br />
<br />
* The Dark Spire now responds properly to being hacked by being cranky<br />
** Thanks to crawlers for the bug report<br />
<br />
* Fix a bug where the AI was incorrectly combining some Hostile To All factions when spawning extragalactic war units.<br />
** This was leading to more extragalactic war units than one would want.<br />
<br />
=== Exception Fixes ===<br />
<br />
* Added new debugging instrumentation into ImportIntoDynamicTable_XMLDirectory, so that we can find errors that may happen in there from time to time on some machines.<br />
** Also put in some code that should make it load faster for mods and expansions that don't have certain folders.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* Also expanded the debugging instrumentation on ReadXmlFileIntoBatchProcessingLists, same reason.<br />
** Ditto DoForXmlFolders.<br />
** And finally, ditto ActuallyImportAllOfTheBatchedRows.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* ArcenXMLElement.GetNewFor has had its debugging instrumentation greatly expanded, and also has been split into one version that expects a data table, and a new GetNewForNonTable variant that does not expect a table.<br />
** The idea here is to catch various forms of errors early.<br />
** This in turn caused a cascade of other changes to other methods needing variants of each other along these same lines, and having better instrumentation.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* Fixed another rare race condition that could happen with the vis code, this time in SetFormationPositionFromSquad.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* If for whatever reason the game was not able to proeprly write your settings data, it was still overwriting your settings file previously. It will no longer do that.<br />
** Additionally, a lot of extra instrumentation has been put into GameSettting.SerializeGraphicsTo and GameSettting.SerializeTo, so that we will know better what is wrong if it is trying to save improperly. These should also be more resistant to saving incorrectly in the first place.<br />
** Thanks to Isiel for reporting.<br />
<br />
* If a savegame has somehow been made that has a blank savegame in it, then it will try to load it with the info of the current version of the game, with a warning in the log that this may fail very badly.<br />
** Thanks to Isiel for reporting, and providing a save that was probably made while the game was in an invalid state.<br />
<br />
* Fixed a case where trying to load certain saves could fail silently as far as the interface was concerned. Now it actually shows you a proper error message.<br />
** And then fixed a whole bunch of cases where certain code paths on almost-certainly-broken saves would return very genric and unhelpful errors when you tried to load them.<br />
** This doesn't really help us actually load the savegames in question, but tells us more about what is wrong with them.<br />
** Thanks to Isiel for reporting, and providing a save that was probably made while the game was in an invalid state.<br />
<br />
* Suppressed a harmless popup that could happen in ReactToShotHittingSquad during cross-thread race conditions. Now it just fixes the data and moves on.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
== Beta 2.126 Dark Spire, Eyes, and Fixes ==<br />
(Released August 22nd, 2020)<br />
<br />
'''To play this version, please be sure to choose the current_beta branch on Steam. The central game loop changes we made in the prior version did not blow up, but a few other things did, so we're glad we went the beta route. If for some reason this beta has problems but the prior one worked for you, we have temporarily made the most_recent_stable_beta active and pointing to 2.124. But this version should actually be more stable (knock on wood). We'll be back out of beta by mid-week the week of the 23rd.'''<br />
<br />
* Fix a bug with DS Conquest VGs and the new hack<br />
** Thanks to gigastar for reporting<br />
<br />
* Fix a bug with the Full Metal notification<br />
** Thanks to a screenshot from Oval for making me aware of this<br />
<br />
* The AI should now attempt to play voice lines for Exogalactic Strikeforces, and when you spot the Nanocaust.<br />
<br />
* The DS is no longer allowed to spawn Loci on planets with Dark Spire Wards<br />
** Thanks to crawlers for reporting<br />
<br />
* Make the Dark Spire more aggressive about spawning Loci<br />
** Thanks to crawlers for suggesting<br />
<br />
* The player can now choose the starting armory for player-allied scourge<br />
** Thanks to crawlers for suggesting<br />
<br />
* Improve the hovertext for some scourge units just a bit.<br />
<br />
* Fix a bug where new games in the beta weren't starting correctly<br />
** Thanks to Keith and Tynendir for reporting<br />
<br />
* Capturing an AI homeworld no longer generates AIP. This only applies to games creates on 2.125 or above.<br />
** Thanks to GreatYng for suggesting<br />
<br />
* AI Eyes now trigger based on whether you have more Strength on a planet, not off the number of fleets<br />
** This is not necessarily the final state for Eyes, but having them trigger off of 'number of fleets' didn't make any sense anymore. This is a functional stopgap until someone has a better idea<br />
** Thanks to a number of people for discussing, including Flypaste, Asteroid, Democracy, GreatYng and others<br />
<br />
* Fixed typo in multiplayer message.<br />
** Thanks to fwiffoforce for reporting.<br />
<br />
== Beta 2.124 HRF Pacekeeping ==<br />
(Released August 18th, 2020)<br />
<br />
'''To play this version, please be sure to choose the current_beta branch on Steam. If this isn't blowing up in major ways, we'll move it back to the main branch within a few days. If it is blowing up a lot, then it may be into next week before we come back from beta. We changed too many fundamental things with the game loop to just release this with no beta, even though we were careful.'''<br />
<br />
* Minor rework to minor faction hacks. Its now more expensive (in line with the previous hacks). The description no longer mentions an AI response. The DS and Dyson units are now upgradable, but not very much. These are intended to be 'cool little tidbits' but nothing to really swing the game<br />
** Thanks to GreatYng and Lord of Nothing for bug reports and comments<br />
<br />
* Add a 'Full Metal' indicator in the metal bar<br />
** Thanks to Nyarlathotep. Iä! Shub-Niggurath!<br />
<br />
* The hovertext prompt that describes when swapping ship lines will scrap your units has been modified to describe the current behaviour correctly ("Your ships are scrapped if they are loaded, or the flagships are on different planets"). <br />
** Thanks to StrategicSage and Ubifan for reporting<br />
<br />
=== HRF Changes ===<br />
<br />
* The HRF ships now have some unique names.<br />
<br />
* The HRF now create a structure at game start time that you can hack for a new ship line (using the backported DLC2 tech) and for 1K science<br />
<br />
* Fix a longstanding bug where the Human Resistance Fighters would only say their 'defeat' voice lines, not their 'victory' voice lines.<br />
** Thanks to Nyarlathotep. Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn.<br />
<br />
* The HRF should now pack a bigger punch when they arrive, but they are a bit less likely to show up.<br />
<br />
=== Bugfixes And Tweaks ===<br />
<br />
* Some minor improvements to the ability of vulnerable Vengeance Generators to be killed<br />
** Hopefully this helps. Thanks to Lord of Nothing for reporting, and Puffin for suggesting the improvements<br />
<br />
* Better enforce the 'can't repair ImmuneToRepairs' unit interactions. Still a bit weird.<br />
** Thanks to MasterGeese for reporting<br />
<br />
* SerializeByInternalName and SerializeByIndex both now accept FieldName as an optional parameter so that we can see what is happening within them from a serialization logging standpoint.<br />
<br />
* A bunch of extra serialization logging has been added into the world and the faction configuration objects, to make finding errors there easier.<br />
** However, it turns out that there were no public errors on this, just an error in a working copy on one developer machine that had a save from between two updates from that same developer.<br />
<br />
=== Milestone: Multiplayer Pacekeeping Functional ===<br />
<br />
* In the event of a campaign switching which player is the host (this probably means one player manually emailing the game to another), the game now tries to do a better job of handling that.<br />
** In the end this should work fine, but we haven't bothered testing this yet as this is probably kind of an edge case compared to most other things we're working on right now.<br />
<br />
* All of the "frame number" information for sim frames is now just serialized on the network and never to disk.<br />
** This information is really only useful within a single run of a campaign (aka after loading it off disk and playing until you exit to the main menu or the OS).<br />
** Even if you go just back to the main menu and load back into the game directly after, there's no reason not to start those numbers off fresh again.<br />
** We've thus switched to a number format for serializing these that will "only" allow for 160 hours of continuous realtime play in a given campaign, without exits to the main menu. This is the definition of excessive, and could always be changed in the future if it was needed.<br />
<br />
* A variety of variables that really are only for the network, and serialized but not to disk, now have the prefix Network_ so that we can tell those apart with ease.<br />
<br />
* In multiplayer, the basics of "host waiting for clients to catch up" is now in place. This prevents the strange lag that clients were seeing, which was happening because they were back in time.<br />
** However, also in multiplayer, unlike the original AI War, it will not definitely wait around for players who are missing. If those players are not connected, then you can unpause and play without them until they arrive. Only once they are present do you have to wait for them to sync up.<br />
*** If this latter choice turns out to be problematic for some reason, we can always add a toggle for that or change it. But it seems friendly. Chris remembers nights where 1 person out of 4 player game couldn't make it, so just keeping on playing without them would have been so nice versus having to go in and change the status of their account before playing.<br />
<br />
* Various of our "simulation profile" variables that were set a loooong time ago in a different way for multiplayer and single player were making multi-player feel sluggish. We've tightened up this some in order to feel better under a pretty general set of networking conditions.<br />
** We may need to revisit this in the future (during alpha or beta) to make these things that people can configure if they are in a situation of, for instance, high packet loss or extremely high or low pings, to get the best possible experience at any given time.<br />
<br />
* Various other changes have been made in order to make the client send over commands to the host as soon as possible, and then to make sure that the host causes those commadns to be executed on the FIRST simulation frame of the next batch, not the last frame of that next batch.<br />
** All in all, the game now stays in time sync, across Valve's server relays and back, and things are snappy and responsive on both the client and the host. There are moments of delay that cause a brief "waiting" message to flash up for maybe a quarter of a second every so often, but it's really a minor thing and is something that we can improve with tuning in the future.<br />
** The overall functionality is there to the point that if background threads and floating point math were not knocking things out of sync, this would be a perfectly playable alpha. As it stands, it's quite playable for a few minutes at a time, at least on Chris's two test machines, without things becoming noticeably off.<br />
** It's also worth noting that the simulation speed on the host shows up as being something like 80% right after starting the game, which is misleading because it had one very long frame where it was waiting on the client to connect and sync up. That will be fixed in the future, but it self-resolves the visual artifact within something like 20 seconds of starting, anyhow.<br />
<br />
== Version 2.122 Empire Names ==<br />
(Released August 17th, 2020)<br />
<br />
* *Makeshift Drones now once again self-destruct when attacking instead of only self-attritioning slowly.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* The lobby now once again allows for you to zoom in and pan around, since some maps can be larger than you can comfortably see on a single screen.<br />
** However, every time you generate a new map, it will default to showing you the entire map completely zoomed out.<br />
** It also no longer EVER allows edge-panning in the lobby, as just general usage of the lobby will wind up with you accidentally panning the lobby around if that is in place.<br />
** Thanks to CRCGamer for confirming our suspicion that we'd need to do this.<br />
<br />
* Fixed ANOTHER bug with the lines being offset from the planets in the galaxy map, this time when you were zoomed in. The more zoomed in you were, the more off they got.<br />
** This bug was caused by our latest fix to the lines being off when you were zoomed out. Now it should work at all zoom levels. This was an annoying one, to be sure, but we're glad to have it finally lining up all the time.<br />
<br />
* Fix a bug where player-allied scourge weren't building properly<br />
<br />
=== Multiplayer Progress ===<br />
<br />
* Added a new Human Empire Name setting on player factions:<br />
** If left blank, will be the name of the first player controlling this faction. If you want your empire to have a different name than your personal name, you can do that here. If multiple players are sharing a faction, then they can give it a name that represents their shared interest in it.<br />
** This can be edited during the game (like player colors can be), or in the lobby.<br />
<br />
* When a new player joins as a client to a game, it now creates a slot for them and puts them in charge of it instead of them defaulting to spectator mode.<br />
** It assigns their colors properly, and all of that sort of thing, too.<br />
<br />
* Player accounts beyond the first are now removable, which lets players go back into spectator mode, or (later) control a single faction via multiple players helping.<br />
** This makes the default case (everybody has their own faction) set itself up by default, but then lets players back things out into the less-usual cases (shared factions, spectator mode, etc).<br />
<br />
* Players beyond the first are now auto-assigned a starting planet somewhat at random, letting them choose something on their own later.<br />
** A whole lot of logic that was very not-MP-safe is now MP-safe.<br />
<br />
* When loading a savegame or quickstart into the lobby, or loading the last settings for the lobby, it strips out all human players beyond the first.<br />
** This is consistent with it then recreating player accounts as those come in, too.<br />
<br />
== Version 2.121 Savegame Hotfix ==<br />
(Released August 17th, 2020)<br />
<br />
* Fixed a deserialization bug in the prior version that made any games saved with a dyson sphere in them not able to be loaded if they were saved in the prior version.<br />
** The nature of the issue was such that those savegames will now load without issue, thankfully.<br />
** Thanks to Lord Of Nothing, CRCGamer, fatcat__25, GreatYng, Djri123, Djri123, mekolab, and goz for reporting.<br />
<br />
== Version 2.120 Improved Lobby Map Experience ==<br />
(Released August 14th, 2020)<br />
<br />
* Fix a bug where sometimes the AI's ships wouldn't be allowed to retreat<br />
** Thanks to Sigma7 for reporting<br />
<br />
* Hopefully fixed a problem where sometimes allied scourge could kill AI Command Stations immediately after a game load<br />
** Thanks to GreatYng and ZeusAlmighty for reporting<br />
<br />
* Fix a typo with the Spire and Marauder Beacons<br />
** Thanks to Apthorpe and Ovalcircle for reporting<br />
<br />
* Fix a bug where hovering the Hacking resource bar entry would give a negative number during the superterminal hack<br />
** Thanks to GreatYng for reporting<br />
<br />
* Improve the Hacking Resource bar hovertext for the case where you have multiple hackers. Note it still doesn't show hacks against planets.<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* The MDC hovertext no longer mentions Exos<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Exogalactic Strikeforce speed updates:<br />
** Previously, Exos had travelled at 1800 speed (as of a few patches ago. Before that they didn't have a consistent speed).<br />
** Now Exos travel at "Average speed of their units + 20%" or "800", whichever is higher. This should feel less like they are speed-racing to your homeworld. For speed-context, 800 is the speed of a Parasite.<br />
*** Thanks to GreatYng and Lord of Nothing for discussion<br />
<br />
* Fix a typo in the hovertext for larger numbers of planets <br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Remove a mention of Fleet Exp in a tooltip<br />
** Thanks to Lord of Nothing for reporting.<br />
<br />
* Take safest path through galaxy now uses the modifier key alt, while take shortest path now uses the hotkey ctrl.<br />
** The prior hotkeys of X any Y conflicted with other functions and changed your unit stances or sidebar status, etc.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
=== Ability To Reset Camera View To Default ===<br />
<br />
* New hotkey in the camera section: Reset Camera Rotation And Tilt<br />
** Default ctrl+R.<br />
** Press this button combo to reset the camera's rotation and tilt to the default values.<br />
** Thanks to dv, Ovalcircle, Bobtree, and many others for requesting.<br />
<br />
=== DLC2 Backports ===<br />
<br />
* The Dyson Sphere Golem can now be hacked like an ARS for one of a small selection of Dyson ships. You only can use this hack once.<br />
<br />
* The Dark Spire Vengeance Generators can now be hacked like an ARS as well<br />
<br />
* This is a backport of a DLC2 feature that allows for a minor faction to have a structure which can be hacked like an ARS for unique ships. This is usable by modders with only some XML. <br />
<br />
* Approximate usage: in the minor faction GameEntity XML, for the ARS-equivalent, set the following<br />
** Assign it the HackForShipType tag<br />
** Make it eligible for the HackToGrantShipLine_DontDestroyTarget or HackToGrantShipLine hacks<br />
** Then add the following additional fields<br />
*** grants_stuff_to_be_added_to_player_fleets="true" <br />
*** grants_stuff_to_be_added_to_player_fleets_strikecraft_options="X" <br />
*** grants_stuff_to_be_added_to_player_fleets_frigate_options="Y" <br />
<br />
* Then for the ships you want to have available, set one of these<br />
** <fleet_membership name="AddedToFleet_MinorFaction" ship_cap_group="Strike" weight="100" min="30" max="35" faction="factionName"/> <br />
** <fleet_membership name="AddedToFleet_MinorFaction" ship_cap_group="Frigate" weight="100" min="1" max="1" faction="factionName"/><br />
*** Note the FactionName in the fleet_membership must match the name of the faction (I believe it checks the TracingName for the faction, which is set in C#)<br />
<br />
=== Dark Spire Improvements ===<br />
<br />
* There's now a preliminary Journal Entry for the Dark Spire when you first see them.<br />
<br />
* There's now a Journal Entry for when the Dark Spire enter conquest mode (ie from the Fallen Spire campaign).<br />
** This explains what Conquest Mode is, and it's much harder to miss.<br />
<br />
* The tooltip for the Locus now prints different text in Conquest Mode.<br />
<br />
* Thanks to crawlers for the bug report that prompted these enhancements<br />
<br />
=== Galaxy Map And Camera Display Work, Lobby Map Overhaul ===<br />
<br />
* The galaxy object now has a a FindSpatialCenterOfGalaxyInGalaxyCoordinates() method, which lets us find the center point of the galaxy based on however the planets were seeded.<br />
** Also added FindSpatialBoundariesOfGalaxyInGalaxyCoordinates() to let us find the overall bounds easily.<br />
** But actually we're going to not bother using this, turns out.<br />
<br />
* We were also working on a CenterGalaxyOnAllPlanets() method, but we've abandoned that for a different approach. The code is mostly complete and left in for now so that we can revisit it if we find a use for it.<br />
<br />
* The old-style cameras have been disabled for a long time (years) in xml, but we've now removed them from the code as well.<br />
<br />
* Added extensions GetWorldSpaceBottomLeftCorner and GetWorldSpaceTopRightCorner for UI RectTransforms.<br />
** The chat window in the right hand side of the lobby in multiplayer now uses this and a world space to camera transform to calculate its ScreenSpaceLeft, which lets us, regardless of your screen resolution, DPI, aspect ratio, or custom settings in this game itself, figure out where the UI ends and avoid underlappig it.<br />
** Same thing with a ScreenSpaceRight on the map tab left sidebar.<br />
** Same with ScreenSpaceTop on the footer controls, and ScreenSpaceBottom on the header controls.<br />
<br />
* For the galaxy map camera, the zoom now lets you go out farther in the lobby, and even farther in the multi-player lobby, so that it can always fit the map entirely in the main view screen.<br />
** Tested this with the game at 900px wide, 1800px wide, and 2560 pixels wide. In all cases we now come out with a consistent result.<br />
<br />
* Fixed up a bit of logic for the dynamic zoom for resolutions smaller than 1200px x 900px.<br />
<br />
* In the lobby, the galaxy map camera no longer responds to mouse or keyboard input at all. This is an overhaul that has been requested for years and years.<br />
** Now the lobby always has the map as zoomed out as it can.<br />
** It is also centered in whatever the available space is (depending on if the right-hand sidebar is there or not, that may or may not be centered on the actual screen).<br />
** This is extraordinarily useful, in that it lets you cycle through maps with ease, and there is typically not too much detail that you need to see in them like you would during an actual game.<br />
<br />
* The math for how much the galaxy camera should be able to zoom out has been entirely re-coded from scratch, and is now vastly more efficient as well as something we can actually follow.<br />
** Instead of taking something like a thousand loops to get a kinda-bad answer, it now takes typically under 60 loops (often under 20) to get a highly accurate answer.<br />
<br />
* In the galaxy map display calculations, and number of strange magic numbers were removed, now that we have the proper math in here. Wow this was unexpectedly hard.<br />
<br />
* At very long distance zooms, the planets were STILL being visually offset from their lines that they were above, it turns out.<br />
** This had to do with how we were offsetting the icons in order to avoid z-fighting, and how that was getting magnified by us scaling up the planets at further zoom distances.<br />
** The fix for this might introduced some z fighting, but probably will not because of the way that we are rendering these as "cutout" style transparency, and with GPU instancing determining the order of draw.<br />
<br />
* In the lobby, the planet you own is no longer ringed in white selection, as the in-game "planet you are on" is done. Now it just shows the planet color, plain and simple.<br />
<br />
* In the lobby, if you have the setting "always show planet names" on, it still won't do that, because that will make the fixed-size galaxy map potentially impossible to read.<br />
<br />
* The galaxy map in general shows planet names that are un-owned as being far less blinding white in their text.<br />
<br />
* In the lobby, it no longer shows the first owning player name under the name of the planet.<br />
<br />
* The visual scale of the actual planet spheres in the lobby is now about a two thirds what it previously was, but the text is almost as large as it was before. If the text is too small, we can adjust it up.<br />
<br />
* In the lobby, hovering over a galaxy map link no longer highlights the two planets adjacent to it, since that is visually confusing in that context only.<br />
<br />
* Added ShowTooltipNarrow() and ShowTooltipWide() to the IPresentationLayer and IBattlefieldHandler, so that we can trigger tooltips super-directly from deeper-in code.<br />
<br />
* In the lobby, hovering over planets now makes it show a tooltip at the mouse cursor that says the name of the planet (since that might be obscured by being very near the top of the screen, now), but also some other information.<br />
** It says how many wormholes there are, and gives a comment if that will be extra hard to defend.<br />
** It also shows the name of any human players who are going to have that as their starting planet, in their appropriate colors based on their faction color.<br />
** There was some funky stuff in the hover logic for the galaxy map that made this super difficult.<br />
<br />
* Fixed a funky bug relating to tooltips that were showing the same text as before, but had themselves cleared and then wouldn't keep showing the text anymore until it was given different text.<br />
** The first time this ever manifested was in giving tooltips on the lobby galaxy map, but it's an old old bug.<br />
<br />
* Fixed an issue in the lobby where it was not showing the names of planets automatically for planets owned by players other than yourself.<br />
<br />
* The map types list in the lobby has always been kind of randomly organized, which was annoying. More recently, it has been in a different order every time you start the game.<br />
** Now it is in the order Realistic, Simple, and then all the others alphabetically.<br />
<br />
* Fixed a bug when loading directly into the game and not visiting the lobby where it did not set the dynamic zoom properly in the last few internal builds.<br />
<br />
* Also fixed a boneheaded typo in the very most recent internal versions that was making the height of the dynamic zoom calculation slightly off.<br />
** There is still something a bit off with the squares map type and how it displays in the lobby (it is offset upwards and also shown too small), but all the other map types work and so this seems to be some sort of data issue with that map type and not a problem with our central algorithm.<br />
<br />
== Version 2.117 Ion Cannons And Melee Units ==<br />
(Released August 11th, 2020)<br />
<br />
=== Balance Work ===<br />
<br />
* Ion Cannon Shots can now:<br />
** Damage both the personal shields and hull of a target in one shot (including killing it outright).<br />
** Kill multiple ships in the same stack in one shot.<br />
** Thanks to GreatYng for pointing out the oddity of Ion Cannons not being able to do these things.<br />
<br />
* AOE shots can now hit any enemy bubble shield overlapping the explosion, rather than only being able to hit the shield if the generator (or something it's protecting) were physically within the explosion.<br />
** Thanks to NRSirLimbo for reporting and RocketAssistedPuffin for the save.<br />
<br />
* Crippled units (i.e. player flagships) can now pass through enemy bubble shields and traverse wormholes covered by them, to avoid being stranded in hostile territory.<br />
** Thanks to tadrinth for reporting and RocketAssistedPuffin for the save.<br />
<br />
* Melee units in attack-move mode will now go after units within a limited range (equivalent to a weapon with range=Normal1), so you have a middle-ground between "only attack your direct target or things actually touching you" and "pursue anything on the planet".<br />
** Also, even when not in attack-move mode, player melee units without orders (and not in hold-fire mode) now automatically move to attack nearby targets. If all such targets die or move away, the melee unit goes back to where it was.<br />
** Thanks to OzoneGrif, wm46, RocketAssistedPuffin, and Ubifan for the suggestions and saves leading to this change.<br />
<br />
* Fixed a bug where deathgrip tackle drones had a gun that could shoot immobile targets, greatly confusing their logic. That gun now has the only_targets_mobile_units flag.<br />
** Also fixed a bug where tackle-drone-launchers could give their spawned drones a direct attack order to go after an immobile unit.<br />
** Thanks to tadrinth and RocketAssistedPuffin for the reports leading to these discoveries.<br />
<br />
=== Bugfixes ===<br />
<br />
* Scourge: fix a bug where player-allied scourge were building tons of Builders but no Fortresses (they were mistakenly thinking they were minor faction allied)<br />
** A number of people on discord noticed the lack of Fortresses<br />
<br />
* Potentially fix a bug where Regenerator Golems were regenerating things while crippled<br />
** Thanks to crawlers for reporting.<br />
<br />
* AI Reserves now will create anti-player zombies.<br />
<br />
* Take another stab at 'adjacent planets watched'. Sigh.<br />
<br />
* Fixed an issue where on computers without GOG Galaxy installed, they would get a harmless-but-annoying error message at game startup.<br />
** Thanks to Badger for reporting.<br />
<br />
* Minor tweak to target list planning; use a case insensitive comparison for zombification.<br />
<br />
* The 'total units' count should now include stacks.<br />
<br />
* The AI "Great-Turrets" are now simply called "Turrets" again, as at this point balance-wise the player turrets and AI turrets are similar.<br />
** Thanks to GreatYng and RocketAssistedPuffin for bringing this to our attention.<br />
<br />
* Exogalactic War Units now use a better spawn-in message than before<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Fix a problem with the Custodian description text<br />
** Thanks to GreatYng for reporting<br />
<br />
* The semicolon was previously not supported by our chat log format (our "condensed ascii"), but now is.<br />
** Thanks to Badger and Sigma7 for reporting.<br />
<br />
=== Multiplayer And Lobby Work ===<br />
<br />
* Heartbeat messages from the client to the server and vice-versa are now omitted from all of the networking logs. They were making things far too cluttered for us to be able to see real information when we had network logging of various detail levels turned on.<br />
<br />
* Some excessive logging on GOG and Steam with regard to their send result statuses has been removed, as again this was clogging up our network logs.<br />
<br />
* The clients now have a secondary FromClientToServer_SignalDoneButHasNoCommands that they can send in place of the FromClientToServer_SendMyNextCommandBatch when they don't have any commands to send (which is most of the time, statistically).<br />
<br />
* GameSpecificNetworking now has a DoPerFrameLogic() method, which lets us efficiently set some per-game settings like we do for the arcen debugging stuff.<br />
<br />
* New setting in the Network section of the settings menu: Network Logging Includes Frame Auths.<br />
** In the lobby and during gameplay, there are messages sent by the network every 100ms or so to keep themselves in sync, and if you have them included they will tend to crowd out the rest of the messages that are sent. So by default these are disabled.<br />
<br />
* New setting in the Network section of the settings menu: Network Logging Includes Command Batches.<br />
** In the lobby and during gameplay, there are messages sent by the network as frequently as every 100ms, but more often some sporadic multiple of that. This is how factions tell everyone what they want their ships to do, and how human players say the same. There's very little that we can say about this in a meaninful way in the networking log level, and again this will tend to crowd out the other messages that happen. So by default these are disabled, but bear in mind that most things that players actually cause to happen are being caused through these batch messages.<br />
<br />
* Found and fixed a general issue where the player accounts were not properly being cleared (and fully resetting the player account IDs) during all cases where a game is loaded into the lobby. At a bare minimum, it was affecting the "open a custom game with my last settings."<br />
** That would have eventually led to out of bounds exceptions, over time, and in general was cluttering up some areas important for multiplayer, but it had not had a negative impact on anyone so far.<br />
<br />
* Fixed a bug that was causing all sorts of craziness on clients in multiplayer in the lobby, with them not getting their galaxies full cleared.<br />
** This was leading to things not being properly in sync between the client and host, like planet names or locations, and things like extra planets or planets in old locations, or noninteractive planets at a whole other scale visually from the real planets. It was quite messy! All of that is now corrected, thankfully.<br />
<br />
* In the lobby, when you change the number of human factions, it now regenerates the map immediately. For other factions it does not bother, never has, because there's nothing different to see at this point in the galaxy.<br />
<br />
* The WorldSetup objects now have a readonly SetupTypeName on themselves, so that we can tell what they are.<br />
** ChangedSinceLastMapGenCall on this same object is now a property, which lets us throw out debugging messages when it is being triggered for whatever reason.<br />
** Something has been causing extra calls to be sent through the map generation pipeline in a redundant fashion that makes everything slower than it needs to be.<br />
<br />
* Removed the ability to send a WorldSetup object via GameCommand, as that is actually highly antithetical to the way we edit that data as of the last year and a half or so.<br />
** We specifically try never to adjust the entire thing, because several players at once could be editing different parts of it and we want those bits to all merge at once.<br />
** Got rid of the SetupOnly_ChangeSetup GameCommand, which was set to use this sort of thing.<br />
** Got rid of the LobbyWorking_HasBeenChangedAndShouldTransmitChanges() method on WorldSetup, which was being used by a loop in the footer to keep clients up to date.<br />
*** The problem with this is that this was far older code, back from perhaps 2017, and it was using an older and more sledgehammer-y approach to try to keep clients and the host in sync. When the lobby was redone in 2019, this became obsolete but was still hanging around and so caused some nontrivial chaos.<br />
** LobbyWorking_HasBeenChanged() has also been removed, as it seemed duplicative and was no longer in use perhaps?<br />
*** Oh goodness, this was actually how we were ever updating the long-term stored version of the game (as opposed to the lobby working copy). This was not a good way to do it, but it was not quite as antiquated as we thought.<br />
<br />
* Fixed a rare nullref exception that could happen in the ships sidebar if you were not properly on an actual planet.<br />
<br />
* Fixed an issue from the last few months (probably) where if you had an error during map generation, it would still try to dump you into the world and then give you tons of other errors. It should have been stopping you and making you fix whatever was wrong.<br />
** This is most common when there are not enough planets for all the factions you have chosen, or a few other rare cases. One such case is just discovered internally, and that's you having a planet starting index that is higher than the number of planets currently in the world.<br />
<br />
* Helper_AssignHumanHomeworld() and the AI variant are now Helper_TryAssignHumanHomeworld() and an AI variant.<br />
** It was already quite possible for these to fail if the player had selected something invalid, such as previously having clicked a planet with an index above 40 and then choosing a map size of 40 planets.<br />
<br />
* The game now auto-assigns humans a planet that is valid if they don't have a valid option, and it does so in a multiplayer-compatible fashion.<br />
** Previously this tried to do the assignment, but did not do so in a way that worked, and even if it had worked it would have only worked for one player.<br />
** This also includes a new sub-gamecommand, StartingIndex_FromAutoAssignInMapgen, which efficiently lets the UI know what is happening without triggering an extra map generation cycle or accidentally overriding a distinct change made by the player.<br />
<br />
* The lobby is now substantially more responsive even in single player, although it seems to be having some extra calls that we are still hunting down.<br />
<br />
* Fixed an annoying issue that was causing an extra regeneration of the map to happen when you first went into the lobby in single player or as the host, leading to the lobby load time being half a second or so longer than it should have been.<br />
<br />
* Fixed an issue where if one person in the lobby adjusted the following fields, it would not be reflected for the other players in the GUI (but would in the map itself):<br />
** Planet naming style.<br />
** Map type.<br />
** All of the other map sidebar controls were showing things properly and also able to be controlled from any client or the host.<br />
*** Do bear in mind that if you manually enter a map seed, it won't appear for the other players until you hit "Regenerate Map," but given that does not actually affect the map until that button is pressed, this should not be overly surprising.<br />
** All of the faction controls and their sub-controls have been workign properly from the start, and still seem to be.<br />
** Same thing with the galaxy option controls (all of them), which is pretty exciting.<br />
<br />
* The "Campaign Name" is something that is only for savegame management, and thus is only relevant on the host side. The clients now see "Will be set by host" as the text in that box, and cannot change it.<br />
<br />
* The "Start Game" button is also something that we are limiting to be host-only, for a variety of reasons. The biggest is that they need to set a campaign name, but that's entirely host-side.<br />
** Clients clicking this button now get a message that asks them to wait for the host to do it.<br />
** Actually, for the sake of ease of use, the "Reset To Defaults" button and this one are just hidden on clients in multiplayer. Clicking Reset to Defaults on a client results in an error for a lot of good reasons based on how it is trying to accomplish that.<br />
<br />
* All of the lobby controls now seem to work properly for both the host and client. There are still some things in chat that are messed up, and we're missing controls for making clients not always be spectators, but we can also get into the game.<br />
<br />
* Fixed the harmless but annoying "StartingIndexChanges: factionIndex 1 passed when faction count was 0" error message that would happen on clients after a host gave orders to start.<br />
<br />
* The campaign name and its textbox is now just plain invisible for clients in a multiplayer game, again to avoid confusion.<br />
<br />
* The right-hand sidebar in the lobby in multiplayer is now split into two scrolling parts.<br />
** The top part has information about the connected players and the factions that they are a part of, and never auto-scrolls around.<br />
** The bottom one has the actual chat messages, and auto-scrolls to the bottom when new messages come in.<br />
** The fonts of both are a bit smaller, from size 12 down to 10.<br />
<br />
* From past changes, we can now verify that the proper name shows up for clients on the host, instead of it just saying "Player 2" for them.<br />
** However, text messages from the client in the lobby show up with the color of the client but the name of the host?<br />
<br />
* Hitting enter while in the chat textbox in the lobby now actually sends the chat properly, as already worked in the main game.<br />
<br />
* In the multiplayer lobby, the top panel now shows the status of the various PlayerAccounts that are in a game. Specifically it shows any who are connected or disconnected, or which ones are you, etc.<br />
** It also shows players that have an account in this game at the moment, but who are absent.<br />
<br />
* Fixed a bug where player accounts were being created with the name of the host, not the connecting client, which was confusing all sorts of things.<br />
<br />
* The preferred colors from the player profile on each local machine is now sent over and applied to their player account for later reference. This was also causing endless new player accounts to be created, since there was never a match to the connecting client.<br />
** A variety of pieces of code had to be updated to support this.<br />
** Apart from them selecting a color for their faction, this gives them a chosen color in text chat.<br />
<br />
* Added a new OnEndEdit() event for text input boxes, which lets us trigger things when a player clicks out of a textbox.<br />
** This now happens for the map seed in the galaxy map, same as with hitting enter, as both now trigger an immediate regeneration of the map (without you having to hit regenerate map manually).<br />
<br />
* Faction colors for player factions now come from the network data rather than just the local data, which is important for multiplayer.<br />
<br />
* Fixed the bugs with lobby chat messages not appearing properly on the client and host in various ways.<br />
<br />
== Version 2.116 GOG Networking Done ==<br />
(Released August 6th, 2020)<br />
<br />
* Fix a bug where the 'Watch Extra Hops Worth Of Planets' code was being applied incorrectly<br />
** Thanks to Tynendir for reporting.<br />
<br />
* Fixed a bug where Macrophage Spores don't move to new planets when loading a second save game.<br />
** Thanks to GreatYng for reporting, and StarKelp for fixing.<br />
<br />
=== Milestone: GOG Galaxy Networking Integration Complete! ===<br />
<br />
* The Arcen GOG Wrapper has been majorly updated to get your GOG Galaxy Friends list and the status of them so that you can play multiplayer with them if you want to.<br />
<br />
* When you are in the GOG networking mode, it now shows the list of your friends, just like it does for Steam.<br />
** Basically all of the functionality is identical here, in terms of how it shows those who are online, offline, and in-game, and lets you filter between them, etc.<br />
** The one difference is that in Steam we show the "in this same game" status as a light green (like Steam does), and in the GOG version we show that status in a purple color (to match their color theme).<br />
<br />
* The host computer now is able to open up a lobby for friends when it says "open server."<br />
** This works with all the various NAT punchthrough that GOG Galaxy supports, which we are not entirely clear on the details of. This may be as robust as Steam, or slightly less so, but we honestly have no idea. We'll be interested to hear from you! But either way, it's out of our hands at that point, so it's just information gathering.<br />
** The host is also now properly destroying the lobby when it shuts down, so that others won't try to connect to it and not see it.<br />
<br />
* When clicking the Join menu in GOG, the client now sees lists of their friends with four categories instead of just three.<br />
** Friends who are in-game but not in a lobby right now are showed in a dull light purple. Friends who are in game and have an open lobby show up with a bright purple status.<br />
** You can also cycle through all friends, open lobbies, friends in this game, and online friends.<br />
<br />
* In the listing of connections, for GOG it now shows a button that says "closed" instead of "connect" next to each friend who does not have an open lobby.<br />
** With Steam, someone could be in offline status but still let you connect to them. With GOG, we have to have a lobby ID to connect to, so there's no way to hide that and still even attempt a connection to someone.<br />
<br />
* GOG clients are now able to search for lobbies and correlate those to their friends list, which under the hood is a several-step process.<br />
** We are filtering out any potential rogue lobbies created by bad actors, and correlating them specifically to those owned by your friends.<br />
** It's possible that a friend might jump from the status of being offline (prior to opening the lobby) to showing up as someone you can connect to (when they open the lobby), actually, so potentially this actually does allow for the same sort of quasi-stealth game connections that people can do using Steam.<br />
** That said, since lobbies have to be advertised (to your friends) and we can't have a client just blindly try connecting by userID like in Steam, if you open a lobby and your other friends are actively in GOG looking to join a game of AI War 2, they would see that. Not a big thing, probably, but it's something we've noticed about the nature of these two differing systems.<br />
** You may find yourself having to hit refresh a few times on the client side in GOG, as there is a few seconds of lag before the lobby that the host creates shows up. It seems to be under 4 seconds at the most in current tests.<br />
<br />
* GOG clients can now actually initiate connections to a host lobby. And it works!<br />
** The client is aware of getting into the lobby, although it takes a few seconds.<br />
** The client also does gracefully tell them that they are leaving the lobby, and the GOG servers and the host are both finding out about that properly.<br />
<br />
* The GOG Galaxy networking client is absolutely fully implemented, now!<br />
** A huge amount of the actual send/read logic was able to be pretty much identical to Steam, which was not super far off from what we did with LiteNetLib.<br />
** Pro tip: if any other developer is ever wondering about SendP2P messages on the GOG network, those can take any size, not just stuff under 1200 bytes. It handles all of the fragmentation and recombination extremely well, and just as fast as Steam or other services.<br />
** The initial connection process to a lobby with GOG is a bit slower from North Carolina in the US than what we are seeing to Steam, ranging from 4-6 seconds on the first creation of a lobby on the run of a game to 2 seconds for ones after that. But once the connection is established and brokered, it's easily as responsive for us as Steam.<br />
** For us, this is routing through the internet and some firewalls, so the NAT punchthrough or relay servers or whatever it is in this case seem to be doing their job. We certainly did not mess with any ports.<br />
** Because of the nature of how data is read in from the buffers in GOG, we actually were able to get slightly more efficiency and speed with how we manage the heap compared to Steam or LiteNetLib. It's probably not usually a huge advantage, but it is something that we appreciate the efficiency of.<br />
** Essentially all three of the networking options have their own pros and cons a bit, but are all extremely good. That's a real relief to see, and to see them all working.<br />
** At this point it is now down to making the game networking actually work properly to have the game run, and that's a networking-framework-agnostic process.<br />
*** In a lot of respects it feels like after a large move of house, where all our stuff is now out of the old house and into the new house, but we still have a lot of unpacking and arranging to do. It still feels excellent to be done with the movers and have everything in one location now.<br />
<br />
=== More Multiplayer Work ===<br />
<br />
* Removed some old and unused code that is from the Valley Without Wind versions of multiplayer, checking for disconnections due to inactivity. We are handling that at a lower level, now.<br />
<br />
* Got rid of some old code that was mainly in the older version of our engine pre-Raptor, which was checking for "pthread exceptions" that was never something that could happen in the newer engine that we've replaced it with.<br />
<br />
* The game now has some self-checking code in there for giving us some actual feedback when it decides that it can't run the simulation or show visuals for more than 3 seconds at a time.<br />
** This is a pretty rare case, but it was the "too many changes and the client machine goes to black screen and unresponsive" issue.<br />
** This may have fixed the issue, although there also seemed to be another issue that was related to this.<br />
<br />
* Took out some other unused and old data.<br />
<br />
* The "UseSeed" command in the lobby no longer triggers the gamesettings to be saved. That was not useful, and slowed it down for no good reason.<br />
** It turns out that this was blanking out the settings data in a strange way a lot of the time, and causing the black and white view of the game after you reloaded. It also was apparently directly the cause (somehow) of the infinite black screen on the client after this was triggered.<br />
<br />
* Put in a lot of extra error handling for the steamworks networking in particular in case it has internal exceptions while trying to send something.<br />
<br />
* The cumulative effect of a lot of these changes has basically fixed a ton of issues in the lobby, including:<br />
** Clients not being able to use certain buttons or dropdowns.<br />
** Certain dropdowns not showing the right values to clients.<br />
** The client and the host getting a different view of things after certain buttons or dropdowns were used.<br />
** For a while there I was thinking that I was maybe going to need to make some of the controls for the lobby host-only, but now that's definitely not the case!<br />
<br />
== Version 2.115 Imperial Summons ==<br />
(Released August 4th, 2020)<br />
<br />
* You can now have multiple copies of the Devourer and Zenith Trader in a game<br />
** There's no technical reason for this limitation, and we're encouraging Zenith stuff because of the coming Onslaught<br />
<br />
* Quickstarts are sorted alphabetically again, instead of when the quickstart was created<br />
** Thanks to ArnaudB for the bug report<br />
<br />
* Add some defensive code to the Dyson Sphere<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Fixed a cross-threading nullref exception that could happen during unit unselection (probably due to it dying).<br />
** Thanks to GreatYng for reporting.<br />
<br />
=== Imperial Fleet Summoning Changes ===<br />
<br />
* The AI now generates some weaker bonus exos against miscellaneous player targets (energy producers, MDCs, GCAs, etc), just to keep things exciting.<br />
* Fix a bug where Exos were trickling into their targets instead of moving as groups.<br />
* Start the Exos the moment you finish the hack, instead of some random time < 30 seconds from when the transceiver finishes.<br />
** Blame MasterGeese for these changes<br />
<br />
=== Multiplayer And General Lobby Work ===<br />
<br />
* The "partial map generation" code for giving a preview in the lobby now does even less work, bringing our mapgen times down to 200ms or so on average.<br />
** Because of this, we've also moved the mapgen code during partial-map-generation onto the main thread, to keep things as fast as possible. The full map generation still happens on a dedicated background thread.<br />
<br />
* During the lobby, the way that we handle the execution frame loops is now entirely new, and basically skips over a lot of things that were artificially introducing lag.<br />
** This makes the lobby perform far better in general, and also makes the map generation times absolutely flyyyy compared to what they were before, on single or multiple player maps.<br />
<br />
* This is leading to a number of substantial bugs in the lobby, temporarily, but will make the lobby performance far superior in both singleplayer and multiplayer as we get those resolved.<br />
<br />
* The silent "generate partial map" or "generate full map" complete messages now tells you how long it took.<br />
<br />
* The way that mapgen works, it now has a couple of different contexts that it passes in, so that each one has its own random number generator that is not dependent on the others.<br />
** This lets us ensure that there is consistency between runs of the same code on different machines, and on the detailed version (for play) and the non-detailed version (for viewing in the lobby).<br />
** This is largely solving the issue that we just have started having in this latest round of internal builds with a difference in the final map and the original map.<br />
<br />
* Renamed the Generate() method on map generators to GenerateMapStructureOnly() to be more clear, and also make our code more eaily searchable.<br />
<br />
* Adding a planet to a galaxy no longer requires passing in a context object at all. It now generates its own internal random number generator for its initial variables based on the galaxy map seed, its index, and its original position.<br />
** One of the side effects of this is that now when you change which planet you want to be your starting planet, it will keep the name the same instead of shuffling them around.<br />
** This sort of name-stability has actually never been in this game before, and always was mildly annoying. But in multiplayer lobbies it was going to be even more annoying. "I'll take Adam." "Okay, sure." "Well, I clicked it and now it is called Brian, but that's the one I meant." "Wait, what?"<br />
<br />
* When you are loading a savegame or a quick start as a template into the lobby, it now immediately regenerates the map rather than using the old map, because it's highly likely that the new structure will be different in some fashion.<br />
** This then also solves the problem of clients being different from the host on first connect, probably; that was kind of a compound problem in general.<br />
<br />
* Fixed an order of operations issue that could lead to the occasional "No human players found to seed homeworlds for!" error in the lobby in general, but more recently in multiplayer more frequently.<br />
<br />
* Possibly fixed the issue with later player accounts in multiplayer being renamed incorrectly to "player 2" and such.<br />
** There is still a fair bit of duplicate data happening between data structures, and some lobby/startup code that is blatantly single-player-specific that we need to get sorted out.<br />
<br />
* Dramatically cut down the time it takes to generate planet random seeds, but still with keeping them consistent as you click around the galaxy, by pre-generating the random seeds as the first 300 calls to the "broad random" for the galaxy. Any seeds needed after that will be generated the slow-but-unique way. This means mainly things like nomad planets or other things that are late additions. When just adding a planet or two, it's not so slow as to be a problem.<br />
<br />
* Until now, if you loaded an existing savegame it would automatically put you in control of the first player account, even if your profile name did not match.<br />
** It now continues to do that when you are loading as a single player game, which is enormously helpful for testing and just in general, really. But in multiplayer, it now tells you a list of what the available profiles are, <br />
** In general, if you are loading something as a template, it now clears all the old player account data and loads in your own current name as the new first player account (and further players are already added properly as they connect).<br />
<br />
* Fixed up the way that planets are shown as colored in the lobby galaxy map, so that it will work well with multiplayer and also with the new faster single-player-generated stuff.<br />
<br />
* Improved the logic for it properly setting you to be viewing the new planet you've selected after you make a selection in the lobby. Another thing that did work, but with the revised logic had to be made to work all over again.<br />
** This concludes the fixes to all the known bugs that we are aware of that we've introduced into the lobby today.<br />
<br />
* Fixed another nullref that was happening only on the multiplayer custom games after today's changes.<br />
<br />
== Version 2.113 Dyson Growth ==<br />
(Released August 3rd, 2020)<br />
<br />
* Fix a null reference exception if the game wants to spawn a Relic but you own basically every explored planet<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fix a bug with Dyson Sphere units not marking up<br />
** Thanks to GreatYng for reporting<br />
<br />
* Fix a typo in a Battlestation description<br />
** Thanks to ovalcircle for reporting<br />
<br />
=== Multiplayer Work ===<br />
<br />
* Fixed one oversight that was causing the factions tab chat to not show its chat text properly, unlike map and options in the lobby.<br />
<br />
* As text messages come in inside the lobby, it now scrolls to the bottom of the chat window, as you would expect.<br />
<br />
* The maximum length of chat messages in the lobby is now 1000 characters.<br />
<br />
* GetLocalPlayerFaction() is now GetLocalPlayerFactionOrNull(), to support spectator players.<br />
** Additionally GetFirstPlayerFactionOrNull() has been added, and GetIsFriendlyToLocalFaction() and GetIsHostileToLocalFaction() have been updated to work based on that in order to extend support for spectators even further.<br />
<br />
* Planet visibility is no longer determined from your local faction (since for spectators that might be null, and for all humans it is identical anyhow). It now just uses GetFirstPlayerFactionOrNull(), since that's slightly more effient and supports spectators.<br />
<br />
* Huge areas of the AI have been updated to allow for spectators, generally giving them information that mirrors that of what the first player is seeing (objectives-wise and so on).<br />
** In other areas, it simply updates things to not erorr out when you hit hotkeys, etc.<br />
** Spectators also can't run "cmd" messages from chat; it will just show the text as if it were not a command.<br />
<br />
* GetLocalPlayerFaction() on the planet object has been removed, as that did some risky caching for multiplayer in general, and also was not really compatible with spectators.<br />
<br />
* Fixed a couple of errors where non-sim-but-background-fation-AI code was referring to the local player faction. It now refers to the first player faction.<br />
** Probably this would not have made much difference, unless the game switched hosts partway through or something like that.<br />
<br />
* The chat controls in the lobby now work, though there are some bugs in them still.<br />
<br />
* The correct name for each player faction now shows up for even for players who are in spectator mode.<br />
<br />
* Player factions in spectator mode now see in the lobby chat area that they are in spectator mode.<br />
<br />
* Both the lobby chat and main game chat now support more characters in their text -- basically anything that our "condensed" ascii format is allowed to display.<br />
<br />
== Version 2.112 Steam Networking Complete ==<br />
(Released July 31st, 2020)<br />
<br />
* The description of the Ensnarer Battlestation now explicitly mentions that it can use AI Great-Turrets<br />
** A number of people have reported this as a bug over the years, so hopefully that won't happen anymore<br />
<br />
* All of the Fallen Spire ships, including those in the Spire Railgun Shop optional mod, have had their health and shields doubled, but their firepower halved.<br />
** This should make battles with other mega-units last longer, which feels more appropriate, but keep their "damage over time" the same. <br />
** When these were going toe to toe with the AI Exogalactic War Front units, they seemed to disappear too quickly, making them feel weak. This should keep their effectiveness the same as before, but make the battles take about twice as long with those large ships, so that it doesn't feel like instant evaporation at least.<br />
** The one unit not adjusted is the Spire SuperDreadnought from the Spire Railgun Shop mod. That was already maxed out as a "kills everything and is basically invincible" sort of ship.<br />
** Thanks to a variety of players for weighing in on the feel of these units, and Badger for suggesting this adjustment.<br />
<br />
* Rather than having a slider for the number of planets in the galaxy map view, there is now a dropdown.<br />
** This prevents the intense "regenerate map spam" and lag that was inherent in using a slider, along with making it easier to choose a certain number of planets.<br />
** We have made it so that it only gives you multiples of 2 below 60, multiples of 5 below 100, and multiples of 10 above that. This makes it easier to quickly peruse the range.<br />
** Each entry has some commentary on what it will mean to the feel of the map if you are hovering over it in the dropdown with the number of planets expanded.<br />
** Actually, it wasn't even regenerating the map after you changed the number of planets, which was really confusing! You had to hit regenerate map. Now there is no confusion.<br />
** All of this is easier to use as a player in general, on top of being something that is easier to deal with in multiplayer for sync purposes, too.<br />
<br />
* Fixed a longstanding bug where dropdown selections that were open could persist when leaving the lobby or changing tabs within the lobby.<br />
** Thanks to MaverickPenkenn for reporting.<br />
<br />
=== Milestone: Steam Networking Integration Complete ===<br />
<br />
* Fixed an issue where multiplayer clients disconnecting from a host would try and fail to save the last settings from the lobby. Now it does not save the lobby settings from a session you are just a client of.<br />
<br />
* All of the networking frameworks have had their "send to anyone here and myself" code consolidated into the network authority, so when an interface is partially implemented it won't wind up stalling out waiting on the host.<br />
** Less code duplication is also always good, but it wasn't clear that this was a complete commonality until we got partway into the Steam framework implementation.<br />
<br />
* A new ArcenSteamClientConnection wrapper has been created to keep track of the Steam connection on servers.<br />
** This now properly is registered while the steam connection is alive, and all of the "waiting for player to connect" and "player disconnection" events now happen properly.<br />
** For some reason, we are not getting the "host has accepted you" callbacks on the client end, but that doesn't really matter. As we start actually having our challenge-response data sent via the higher-level networking code, that bit will become irrelevant as it establishes itself within part of one second anyway. It's just a curiosity, or potentially something that is only meant to trigger host-side. Frankly the documentation is sparse in points, both from the Facepunch C# wrapper and the Valve C++ baseline, so this might be working as intended.<br />
<br />
* Substantial progress on the Steam network transmission of data. Still not quite seeing it register yet, but we're getting close.<br />
<br />
* The full suite of network logging has been integrated into our steam networking wrapper, now.<br />
<br />
* When a Steam host shuts down the connection, the steam client computers now definitely notice and react to that. The inverse was already working from the start.<br />
<br />
* Figured out the missing information on how to get data from the facepunch steamworks wrapper (call Recieve() to trigger the other events), and are sticking with the derived classes methods rather than the interface method, since for relay connections it seems like the interface method is not fully implemented.<br />
** With this in place, we're now getting messages on the client machine, and they are properly decoded! The host for some reason still doesn't get messages back, but this is progress.<br />
<br />
* Fixed a bug in our connection status window code that was causing it to stop showing a timer on connection stages after the earliest ones.<br />
** With LiteNetLib, that all flashes past so fast we could not tell that was even happening. With Steam currently stalling out with the host not getting messages, it became apparent.<br />
<br />
* Previously it was possible for our socket mode to be off, and silently ignoring messages we were sending.<br />
** This was initially done to make it so that any lingering messages that would try to be sent after a disconnect would not cause visible errors, but in this case we've wound up with the socket state being off on the steam networking, despite it being active, and this thus resulting in client messages being composed but not actually sent. That was not obvious because of the lack of error messages.<br />
<br />
* Figured out a stupid mistake in our own code, indeed a single line of code, which was preventing the client from sending data properly back to the host.<br />
** Steam networking is now fully functional in terms of sending data back and forth. There is some sort of issue with the world data not getting across properly, but we have to now verify whether that's limited to Steam or also happens on LiteNetLib.<br />
<br />
* Added in a substantial amount of extra error tracking in our univeral and game-specific network message handlers.<br />
** This helps us to find out where errors actually are.<br />
** In the case of steam, right now we are getting some exceptions when the host tries to tell the client what their player profile number is.<br />
<br />
* Fixed a simple typo that was having us send a junk message via both frameworks to the client when they first connected.<br />
** In both cases, this led to the galaxy map not showing up properly on the very first world connect. But in the case of Steam networking, it also led to an exception because the byte array was too small.<br />
** This extra smallness is actually more accurate, and basically it was only not erroring with LiteNetLib because the buffer array was larger than needed because they are pooled.<br />
** This is an interesting difference between these two networking frameworks, but neither one is particularly "wrong. But it does make Steam slightly more sensitive to certain errors in a way that is useful, because it's an error in both cases that manifests in other places.<br />
** Anyhow, this seems to argue for us to internally use Steam as our main testing framework, additionally because that means we are round-tripping out through the internet and Valve's servers and back rather than having the speed of a LAN.<br />
** This also means that the Steam networking library is fully completely integrated, which is a very major milestone! Now it's all game logic, regardless of what is going on with the two networks.<br />
** Also worth noting that it's under 3 seconds to connect a client to the lobby in our test case, using the Steam relay servers, etc. On the LAN it is under one second, so that's pretty killer.<br />
<br />
=== More Multiplayer Work For All Frameworks ===<br />
<br />
* "Planet GalaxyMapVisuals in CenterGalaxyViewOnPlanet null!" will no longer happen. It was a thing relating to trying to center on a planet slightly too early, and the population of the galaxy map still having failed.<br />
** We are now bypassing that and using the raw internal transform offsets to calculate the correct camera position.<br />
<br />
* In response to the initial challenge from the host, the client no longer just sends their profile name. They now also send their list of installed and enabled expansions and mods.<br />
** The host then compares that list to its own installed and enabled expansions and mods. If there are differences, then it rejects the client connection and does a popup on the client and a chat message on the host side explaining why.<br />
** It also notes in there that both parties can enable or disable expansions or mods in the Game tab of the Settings menu to get things to match.<br />
** Please note that, yes, in some cases there will be mods that are enabled but which "wouldn't do any harm" because their functionality won't be triggered in the campaign in question. We don't have any way of knowing that, so we have to err on the side of caution.<br />
** When it comes to expansions, there are none that "wouldn't do any harm," because all of them add some ships and features to the game in general that all players need to have. For instance, the first expansion adds a bunch of new turret options that are available to choose from in any game you play with that expansion on.<br />
** At any rate, we've gone out of our way to make it easy for people to disable expansions and mods so that they can play with friends who don't have those same expansions or mods. The last thing we want is for the only solution to this sort of thing to be someone reaching for their wallet or having to faff about in the filesystem.<br />
<br />
* Low-level chat messages that are sent to everyone from the host are also now sent to the host themselves. Previously, they could not see messages of this sort, turns out.<br />
<br />
== Version 2.111 Initial Steam Connection ==<br />
(Released July 30th, 2020)<br />
<br />
* Fix a null reference exception in my new spire relic code<br />
** Thanks to Chuito12 for reporting<br />
<br />
* Nanocaust: Make the AI wait a bit longer before unleashing Exogalactic units on it. Remove some deprecated code<br />
** Also the exogalactic units won't hang around to kill the entire nanocaust, so there's a chance it can recover.<br />
<br />
=== Milestone: Initial Steam Networking Connection Between Client and Host ===<br />
<br />
* The Steam versions of the game now initialize relay access on startup, to make it so that the first connection using Valve's relay network will be extra fast.<br />
** If you wind up not playing any multiplayer, this is absolutely harmless. If suddenly it is flagging your firewall on game start on the Steam versions of the game, though, that might be why.<br />
<br />
* The basic connection through Steam's newer networking sockets connection is now in place, using their relay servers as recommended. This is the approach that absolutely bypasses NAT traversal and anything else of that sort, and in fact hides your IP address from anyone you are playing with. The claim is that their backbone is faster in most cases than the general internet one.<br />
** If need be, we can make a "Steam over IP" version that allows for their networking sockets stuff to run more directly over UDP, and only fall back to their relay servers if there is a problem. This would be a lot like LiteNetLib, except with much better NAT punchthrough making use of ICE and STUN and all those things.<br />
** For now we are sticking with Valve's recommended practices.<br />
** Beyond just getting the initial connection up, we don't have anything there yet, but on the server we can see the Steam username of the client who requested to connect and who forged the connection.<br />
<br />
== Version 2.110 AI Exogalactic War Front ==<br />
(Released July 29th, 2020)<br />
<br />
* Spire Relics now have additional text in their descriptions explaining either A. whether the relic is on route to a particular planet , or B. that this relic must build on this planet<br />
** Thanks to Lord of Nothing for suggesting<br />
<br />
* All of the units that were previously named "Galactic War [name]" are now just named "[name]"<br />
** However, in the tooltips for them, their faction should now say "AI Exogalactic War Front" in whatever the hunter fleet's color is, rather than saying the AI Hunter Fleet.<br />
** This lets us keep the shorter name, while making their sub-group and source a lot more clear.<br />
** This does need testing, so please let us know if it doesn't show up correctly somewhere. This is using a new xml feature called "override_faction_name", which lets us use a different faction name for some units in a faction, but without actually creating a new faction.<br />
** Thanks to Ovalcircle for leading the discussion that led to this.<br />
<br />
* Spending a ton of science will now increase a player faction's Overall Power Level very slightly.<br />
<br />
* Remove some inaccurate description text for the Rorqual Hejira<br />
** Thanks to GreatYng for reporting<br />
<br />
=== UI for Steam Networking ===<br />
<br />
* Added the new ArcenNetworkConnectionOption class, which we are using as a basis for things like lists of your Steam friends that you can connect to.<br />
** On the network authority, there is a new PotentialServerOptions, which is used to list out such things. This can be used for anything that we need to list a variety of to connect to, not just friends in Steam and GOG. This is in contrast to the "type in an IP" method that we use with LiteNetLib.<br />
<br />
* Started building out the Steam networking framework layer, currently based on the ISteamNetworking implementation that most games use.<br />
** We MAY opt to also start supporting the newer ISteamNetworkingSockets framework that Valve has rolled out more recently, but that would be an alternative networking framework in AI War 2 that you could choose between.<br />
** The fundamental premise of those two Steam networking setups is really different, and while the newer one would in some ways be easier for us to implement, it seems a lot less familiar to the average Steam player, involves IP addresses potentially, and is maybe less battle-tested, but who are we to say.<br />
<br />
* Previously it was still possible to have some exceptions happen silently in the Engine_Universal main loop, and they would log to disk but not show up in your face. Fixed.<br />
** It was also possible to get some silent errors when clicking buttons and other UI elements, turns out. This made the application just seem not to respond to the click, but now it properly shows the error if there was one.<br />
** Also it was possible for certain errors in the UI call stack to prevent the display of the error window.<br />
<br />
* When you try to connect to an IP address, or you change your active networking framework, the game settings now get saved immediately so that that is remembered even if you shut down the program right away.<br />
<br />
* There is now a screen that will be used for Steam and GOG connections, from the client side, and in Steam it now:<br />
** Shows a list of all your Steam friends, with ones that are in AI War 2 at the top, then ones that are online, and then the rest below that.<br />
** Lets you sort to just ones that are in AI War 2 or online.<br />
** Lets you refresh the list to check for updated statuses.<br />
** There is a connect button for each friend, but that is not functional yet. Just haven't gotten to that part yet.<br />
<br />
== Version 2.108 Galactic War Units And The Exostrike ==<br />
(Released July 28th, 2020)<br />
<br />
* Completely rework the way Exogalactic strikeforce leaders work, to allow per-AI-Type customization. No functional change right now, but intended to support some new AI types for DLC2<br />
<br />
* HandleHelperJournals() has been split out into a bunch of sub-methods, since they can error in rare cases and it would be nice to know where the error generally is.<br />
<br />
* Fixed an issue where we were not letting negative risk analyzer data be saved properly. Turns out that has a good reason to be negative at times.<br />
** Thanks to Badger for reporting.<br />
<br />
* Added a new UI feature that is a throwback to some of the functionality we had in various past games: the "center screen message"<br />
** This is basically a message that can show up near the top center of the screen, and stay there for a bit or for as long as needed.<br />
** It won't block the mouse, and it is over everything except modal popups and tooltips.<br />
** This isn't something we would want to use all THAT often, but for cases of things like "hey the server isn't responding, why is MP stalled," this is exactly the sort of UI functionality we need.<br />
<br />
* Fixed a harmless bug where, for the last few months since we've been doing multithreaded loading of camera xml files, the "PrivateVisExtensions" assembly would sometimes have annoying but unimportant errors appear on startup.<br />
** Essentially, it turns out that loading classes from a custom dll is not entirely threadsafe. Go figure. The fix for that is simple, and it doesn't slow things down, but now we know.<br />
** Thanks to GreatYng for the first report of this we'd had outside of ourselves running into it.<br />
<br />
* Fix a bug where macrophage achievements weren't triggering if you killed all the Telia<br />
** Thanks to GreatYng for reporting and StarKelp for the fix.<br />
<br />
* The in-game credits have been updated to include two more individuals who are key DLC2 testers.<br />
<br />
* Added new GetWasWorldStartedOnGameVersionOlderThan() and GetWasWorldStartedOnGameVersionAtLeastThisVersionOrNewer() to world, which let's people find out in a really efficient way if a world was started before some certain point.<br />
** We can't be accurate past a month or so ago, because we were not tracking the original savegame version back then. But it's useful for looking at saves older than the more recent ones and altering them if need be.<br />
** This is now used specifically to fix this macrophage disabled stuff only on older savegames than 2.108.<br />
<br />
* Fix a mispelling in the Mesopotamian planet names<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fix a typo, "reciever" to "receiver"<br />
** Thanks to Apthorpe for reporting<br />
<br />
=== UI Changes ===<br />
<br />
* In the Load Menu, campaigns are now sorted by 'most recent save game in that campaign' rather than alphabetically<br />
** Thanks to Puppet Master for the suggestion.<br />
<br />
* The default sort for the load menu is now by date.<br />
<br />
* Rename 'Exogalactic Strikeforce' to 'Exostrike' and 'Extragalactic War Units' to 'Galactic War Units' in UI. Having "ExoGalactic" and "ExtraGalactic" was a perennial source of confusion<br />
** Note that internally the code uses the old names for the moment<br />
** Thanks to a discord conversation involving relmz32, Oryutzen and NRSirLimbo<br />
<br />
=== Dyson Sphere Buffs ===<br />
<br />
* The Dyson Sphere's ships should now really level up after the hack<br />
** Thanks to GreatYng and zeusalmighty for the bug reports<br />
<br />
* Dyson Sphere hack descriptions now say "This hack will make the Dyson Sphere very unhappy with you for a while" to clarify the behaviour.<br />
** Thanks to Apthorpe for suggesting<br />
<br />
* The Dyson Sphere now gets additional income (ie it can build ships faster) that scales with AIP. As AIP goes up the Dyson and Antagonized Dyson get stronger<br />
<br />
=== Multiplayer Work ===<br />
<br />
* SendMessageToAllClients() has been split into two methods: SendMessageToAllClientsWhoAreFullyConnected() and SendMessageToAllClientsRegardlessOfConnectionStatus().<br />
** We really don't need heartbeats and frame auths and so on going to clients who are still connecting in.<br />
<br />
* Also added a GetCountOfClientsWhoAreFullyConnected() that lets us know if there are any clients who actually have gotten all the way in (and thus we should send world data)/<br />
** And added GetCountOfClientsNeedingWorldData() that lets us know we should make everybody wait for a bit until those people connect in. Otherwise everyone won't be on the same page.<br />
<br />
* Added a OnServer_IsAtPausedSpotWhereGameWorldCanBeSent() that lets us wait for a break in things happening (usually only 400ms or so at most) to then have a clean slate to send a world state to a connecting client without that state changing between them being sent the state and them getting it.<br />
** Along with this, if GetCountOfClientsNeedingWorldData() is more than zero, then it now pauses authorizing more simulation frames until the world is fully taken in by the new clients who are joining.<br />
<br />
* When a multiplayer game is stalled out for some reason, it now uses that central screen message to let you know what is happening, and if possible, why it is happening.<br />
** The game itself will have stopped having any action at this point, though you can still scroll around and look at things and give orders. But nothing is proceeding on the enemy side, so you don't have to worry about it being in your way.<br />
** When a client is first connecting into the lobby, it also uses this, to basically get the host and any other existing players to wait a moment before making more changes, etc.<br />
** On the host, this is already set up to give some context about the exchange under the hood that is happening with the new client.<br />
<br />
=== Multiplayer Transition To LiteNetLib ===<br />
<br />
* Okay then... we are switching network libraries when it comes to our non-Steam/non-GOG transport layer. Instead of FORGE Remastered, we'll be using LiteNetLib.<br />
** FORGE has grown a lot over the years, but the version we were using was from 2018...ish. We looked into updating our version of the code, but were not thrilled with how complicated it was going to be. Since we had working AI War 2 multiplayer on FORGE at least as recently as 2017 (in an alpha state), staying with the existing code made a certain amount of sense.<br />
** However, we started running into really long delays with something as simple as sending 10 bytes to say what our profile name was. This was taking upwards of 14-18 seconds between two machines sitting three inches apart and both within five feet of a powerful wifi router. We verified that the polling was happening hundreds of times per second, and that massive amounts of data was being sent via sockets. But in the internals of the old version of FORGE we have, it was taking it quite a very long time to assemble that into a full message, despite all the churn of hundreds and hundreds of data reads that were apparently all just empty headers and then noise. <br />
** Time for a new approach. It's worth noting that the current version of FORGE still lists all the most internal classes as "in development and lots of dire warnings," so that was another reason for switching up frameworks.<br />
** We chose LiteNetLib at this point, and within 40 minutes of dropping that in, we had the first successful connection between the machines on using this framework for the game. It was just a simple "hello client" message in basic unicode, but it arrived extremely instantly, as expected.<br />
** Next steps are going to be doing some cybernetic implants on LiteNetLib, rather like what we did on FORGE, to make sure that it integrates with AI War 2 properly and our network authority, and that it communicates as directly as possible with our own pre-formatted bitstreams. Most of that should be part of one day of work, at this point. We shall see. Then it's back to the actual larger "build out the multiplayer part of the game" work, but minus the lag that was tripping us up the last day or two.<br />
** It's also worth noting that, with this switch, we had to unfortunately also lose the awesome NAT punchthrough work that Doug Fields did for us with the FORGE interface back in 2018, but LiteNetLib has some of that of its own. And hopefully most people use Steam or GOG if they are behind firewalls of any complexity (since relay servers then become required, and that's where the free relay servers are).<br />
<br />
* NetPeer in LiteNet now inherits from ArcenNetworkClientConnection.<br />
** For now, we are using our own methods to generate the ConnectionIndex, rather than using the existing peer.Id. There may be some numeric conflicts, otherwise, but we can also change this later.<br />
** We also are initializing everything on the Arcen-integration side, keeping our own clientsOfServer list for quick access, and then calling the game-layer RespondToNewConnectionAcceptedByTransportLayer() that will kick things off.<br />
<br />
* PrepareMessageForSending() has become WriteLogOfSend().<br />
<br />
* Added a new SendToSpecificPeer() method onto LiteNet's NetManager. Not sure why that variant didn't seem to exist.<br />
<br />
* Wiring back up our LitNetSocket wrapper class:<br />
** SendMessageToHost_Inner() done.<br />
** SendMessageToAllClientsRegardlessOfConnectionStatus_Inner() done.<br />
** SendMessageToAllClientsWhoAreFullyConnected_Inner() done, using the new SendToSpecificPeer() method.<br />
** SendMessageToSpecificClient_Inner() done, using our own ConnectionIndices for now.<br />
<br />
* Booyah! Exclamatory phrases are not the norm in our patch notes, but this is an exciting moment. LitNetLib is sending messages, and doing so with speed and accuracy and a minimum of fuss. The username travels three inches in well under a second, as should be expected.<br />
** At first, I was getting some very strange data sent across, and I figured that this was going to be an endianness problem, but actually all of the .NET/Mono data is the same endianness from the look of things. Which makes sense, given that otherwise savegames would not work from computer to computer.<br />
** After spending the night with that rattling around in my brain, this morning I decided to definitely do some profiling of the data before I started messing with the #ifdefs.<br />
** First thing I noticed was that I'd chosen to use the RawData byte array, and immediately next thought was "I better check there's not a network header in there." Turns out, yes, there's a UserDataOffset. The first four bytes are not my data, and so of course it would give gibberish as if the endianness was wrong. Just starting my reads from the proper offset makes everything work instantly.<br />
** All of this is from a Mac to a Windows machine at the moment, but my I'll be testing three-way with my linux machine as well. Right now laptop is sitting closed under the Mac.<br />
<br />
* LiteNet logging now gets funneled to our own main logging pipeline.<br />
<br />
=== Continued Multiplayer Work ===<br />
<br />
* A fair bit of work has been done to make intentional disconnections from the client or server tell the other side more quickly.<br />
** This should help to avoid some disconnect-and-reconnect issues that are otherwise inevitable, and it just makes things feel more responsive.<br />
<br />
* Additionally, when you use the in-game controls to exit the program as a while, it now takes one extra half second to lets Steamworks and GOG actually do their exit logic properly, rather than rushing out the door.<br />
** This should hopefully help with any cases of the game still being thought to be running on Steam in particular after it closed.<br />
<br />
* When you exit the game, while it is doing its brief exiting stuff it now throws up a center-screen "exiting.." message.<br />
<br />
* Got rid of OnServer_WaitingOnConnectionIndices, as this was basically a duplicate of something we are doing better and more cleanly a new way, now.<br />
<br />
* UpdateDebugText() and all of its related variables have been removed.<br />
** This was the sort of thing that, in all of our prior games before Raptor and moving to 3D, you could hit F3 and get output information from. But it has never really been used in AI War 2 properly.<br />
<br />
* Got rid of WorldTransmissionMessageType, as it was needlessly complicated.<br />
** This was essentially us breaking the world transmission data into multiple parts and then sending those in parts. Historically there were two reasons for this:<br />
*** Back in AI War 1, we were using the Lidgren network library, and even though it was trying to work around the MTU (typicaly 1200 bytes) of various networks players might be on (or passing data through indirectly), it was often having bottlenecks and slowdowns with how it sent fragmented messages through the network card. Our theory at the time was that it was flooding the buffers of the NIC, rather than giving it data at a more reasonable pace. Network cards have grown enormously in the last 11 years, as have the OSes that control them, so that's not really a concern now. All of the newer network libraries that we would be using to send data should be able to handle 1MB of data without incident.<br />
*** Secondarily, for AI War 1 and for the A Valley Without Wind games, we were sending enough world data that you could see a noticeable wait time, and by handling this above the network transmission layer we could give you visual feedback on transmission progress (even though the whole act of that actually slowed it down). Eleven years later, we have networks that are vastly faster basically everywhere in the world, and the world savegames for AI War 2 are much more efficiently packed than AI War 1 was. So sending a file like this really is like a midsize image on any website you visit, now. Not really a progress bar sort of situation, especially if the progress bar itself causes slowdown.<br />
<br />
* ConnectionStage has moved from being just a UI-only element to being ClientConnectionStage as part of the ArcenNetworkAuthority, so that clients can better keep track of their connection status. Usually this is less than a second or so, anyhow, but we still need to keep track of it in case something goes wrong in particular.<br />
<br />
* The host now properly sends the world data to the client, for the first time in three years or so.<br />
** The client is having some trouble understanding it thus far, so now is a good time to build in error handling (it was just silently failing, until now).<br />
<br />
* Added a new SendLowLevelChatMessage() method on the network authority, which is used mainly for sending back and forth arbitrary messages from clients and the host to explain about the status of things. These can be echoed to all other clients or not, as the case warrants.<br />
<br />
* If the client fails to load a world sent by the host, then the host and any other clients all get sent a low-level chat message about that, the client gets kicked out (since they never made it fully in), and the client gets a nice error message on their screen and in the log.<br />
** This way we can solve whatever the problem is, and nobody is left sitting wondering why things are slow (when in fact they errored).<br />
<br />
* When you are loading a quick start, or loading a savegame as a template into the lobby, it now clears the chat log. This was definitely not information that needed to persist from a prior game to the new lobby!<br />
** These sorts of chat log messages, which are kept over the long term for the game (up to a limit), are no longer shown in the lobby at all.<br />
** Instead, we now are using LocalMomentaryDisplayLog, which is something that doesn't get sent with savegames, and which normally is just "stuff showing on your sidebar during the game for a little while."<br />
*** This is perfect for the lobby, and in the lobby we are just showing the last 100 of these, and not clearing them until you reach the game itself.<br />
*** These things are actually shown by timestamp, not by gamesecond (which isn't ticking yet), so that's just extra perfect for a lot of reasons.<br />
*** This also leads to privacy for people who were talking before someone new joined -- you only see messages that were sent after you were connecting -- although that's not hugely important in most cases.<br />
<br />
* Got rid of ArcenUI.Instance.CurrentNowUTC, since that was putting all of our lobby chat messages in the British time zone. We didn't use this anywhere else, and it was puzzling that we used it at all.<br />
<br />
* NatPunchEnabled is now true on the server and client for LiteNetLib. We'll see how well that works.<br />
<br />
* Added a new debug setting to the network section of the settings menu: Write Network World Serialization Logs<br />
** When sending a game world across the network to a client, write NetworkWorldSerialization.txt, and when getting one from a host write NetworkWorldDeserialization.txt -- both in the PlayerData folder (but on two different computers). The only real reason to turn this on is if a client is unable to join a host and gets an exception; this lets us do a diff of the two files and figure out what is different about what the host is trying to send and the client is trying to read.<br />
** Note these logs are often huge, sometimes hudreads of MB each. Compressing them into a zip or tarball and then uploading them somewhere we can download them to find out what is happening is a good idea. Hopefully as a player you will never need this, but this is basically a way for us to test the network world sync process, which otherwise can be incredibly opaque and take a lot of time to hunt down.<br />
<br />
* Used our new network world logging capabilities to fix an error in network world transfer where it needed to send the game version in a different format.<br />
** The client now looks at the game version very early on, and if it does not match it sends a message back to the host telling the host what the problem was.<br />
** Basically: If the client can't join because of a version mismatch, that gets shown and things happen properly.<br />
<br />
=== Milestone: World Sync Between Host And Client ===<br />
<br />
* Milestone! Initial transmission of the world data from the client to the host now works properly.<br />
<br />
* When a local player account is missing the following methods no longer throw errors:<br />
** SwitchViewToPlanet<br />
** OnClient_SendClientBatchToServer (actually still errors, because it's useful to have it do so).<br />
<br />
* PlayerAccount is now more strongly linked to the new ArcenNetworkClientConnection, and its connected status is now a method called OnServer_GetIsConnected().<br />
** There is some duplication of concepts here, but when you factor in the way that things like viewing of planets are synced in multiplayer, this is a worthwhile separation of concepts.<br />
<br />
* If two players with the same profile name try to connect to a game at the same time, it will now prevent the second one from joining and tell everyone why.<br />
** Bear in mind that these are AI War 2 profile names, not Steam or GOG or what have you. Everyone needs to have a unique AI War 2 profile name in the current game, but they can change up their names however they want and global uniqueness doesn't matter beyond the current game you are in.<br />
<br />
* In situations where a player 3 joins after player 2, and it's the first time player 3 has been in this particular world, player 2 now gets told by the host about player 3.<br />
** And of course all the more complicated permutations of this. It's the new FromServerToClient_SendNewPlayerProfile.<br />
** This is needed specifically so that all clients can know which planets are being viewed by other players, so that which planets are "tier 1" processing is honored and identical everywhere. Among other later needs.<br />
<br />
* Clients connecting to a host are now properly told what playeraccount they have been put in charge of.<br />
** This makes PlayerAccount.Local not null on their local machine, and lets them give orders and whatnot from their spot there.<br />
<br />
* Errors that happen during the main sim step will now be more visible in multiplayer contexts.<br />
<br />
=== Milestone: Initial Sharing Of Lobby Between Host And Client ===<br />
<br />
* Milestone: Clients are now able to load into the lobby, and they and the host both see most (but not all) changes that are made.<br />
** Clients are not yet assigned to any faction (making them just spectator-mode for now), and there are some specific bugs with certain data that isn't synced correctly just yet.<br />
<br />
* Map generation can no longer happen in the lobby except on the host.<br />
** We have no real way to be sure that map generation is deterministic between machines, so we need to do a world sync each time anyway.<br />
<br />
* When the map is regenerated on the host during a multiplayer lobby, it recreates all of the playeraccounts needed for each of the player connections that exist.<br />
<br />
* And when the map is regenerated on the host during a multiplayer lobby, it now re-syncs the entire world data to all of the clients so everyone is up to date.<br />
** This also solves the "authorized through frame number" issue, which was really just a smaller symptom of this larger issue.<br />
<br />
* Both the client and host are now verified able to add, remove, and edit factions and have that properly affect the world.<br />
<br />
* Window_ServerMultiplayerConnectionStatus has been removed, as we no longer use that. We've been using the new center-screen messages instead, or the chat sidebar, as needed.<br />
<br />
* In multiplayer games, the save button is now disabled and says: Cannot Save Game As Client<br />
** If you click it, it gives you this message: Unfortunately, only the host can save games in multiplayer. To save on bandwidth as well as on processing power between your machines, there is a LOT that is calculated only on the host machine. If you were to save a copy of the game on your client's end, loading it would lead to a lot of wrong and missing data.<br />
<br />
* Additionally, autosave is now something that does not happen on multiplayer clients. Just the host.<br />
<br />
* The header of the load quickstart and load saved game menus now make it clear if you are loading for multiplayer or single-player.<br />
** Also on these screens is a new "[Multiplayer Questions?]" bit of text up at the top that appears only on the multiplayer version, and which has some helpful mouseover text.<br />
<br />
* Rather than having an annoying explanatory popup to click through every time you open the various ways of hosting or joining a multiplayer game, it now puts that extra information under the "[Multiplayer Questions?]" section up at the top of those screens.<br />
<br />
* At the top of the lobby screen, it now says if you are joining as a client or a host to a multiplayer lobby, as well as having that same "[Multiplayer Questions?]" bit.<br />
** This includes the following new text in its mouseover text: Except for the host, all players are spectators by default. There is only one human player faction by default. Any number of players can share control of a single faction, or each player can have their own faction that they control on their own. You can mix and match as you like.<br />
<br />
* The connect by IP window has been completely reworked visually so that it matches the rest of the game and doesn't look like the old temporary style that we were using in 2017 (because that's what it was).<br />
** This also lets us put extra information on that screen to help anyone who might be confused.<br />
<br />
* The client connections status window is now patterned as a continuation of the connect by IP window, and it's nice and graceful and in the new style.<br />
<br />
== Version 2.106 Immortals and Unresponsiveness ==<br />
(Released July 23rd, 2020)<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in field names for the risk analyzers saving, so if they have trouble serializing we can see which field it was.<br />
** Also then made it so that the total increase and net increase both are automatically clamped to 0 instead of a negative number so that they won't throw an exception when trying to save.<br />
** Thanks to GreatYng for reporting.<br />
<br />
* When stacks are split, they now have their "time on planet" and "time alive" set to be whatever the original stack was. Same with the amount of cloaking points they have lost, and the number of cloaking points they have left.<br />
** This prevents a variety of abilities from triggering, including the "invincible if only on this planet for x seconds."<br />
** We also made it so that dying to remains does not reset the "time have been alive or on this planet" counter, for similar reasons.<br />
** This keeps the vanguard hydra heads from being insanely impossible to kill, among other issues that are probably pretty much all in the player's favor to have resolved.<br />
** Thanks to crawlers for reporting.<br />
<br />
* Added some extra debugging information for the status of gamecommands that are queued, to see if there are clogs happening. At this point, we can't replicate any evidence of that, though we have some reports from multiple players of it. So maybe the problem either takes a bit to manifest, or is in a different area of the code than we expected.<br />
<br />
* AIP should no longer increase when things die to remains if you have the "ships of X type die to remains instead of dying entirely" galaxy map option on.<br />
** This is untested, but should work.<br />
** Thanks to crawlers for suggesting.<br />
<br />
* Found and fixed the core typo from a few builds back where remains that were being rebuilt were being set to have the cost of the rebuilder, not themselves. This was previously massively overcharging players for building most things, but then once we put on a band-aid to fix that, it started giving it to them for basically free.<br />
** Thanks to Lord Of Nothing for the report and save.<br />
<br />
* Fixed a bug from the last few versions that nobody seemed to notice, where the galaxy map was not centering on planets properly when you first went into the game after loading a savegame. This had to do with when we were calculating the position of the planet, and that not always being calculated before we tried to center on it.<br />
<br />
* Fixed a bug where it was possible that a client would send more commands to the host than it would tell the host about, and thus the host would not know to read the extra ones (or vice-versa). In single-player you are both the host and client, so it still applies.<br />
** This was happening because of multiple threads adding to the queues of commands at the same time that the queue was being drawn down.<br />
** This was actually something that probably could have happened since more or less forever, but it was substantially more likely in the last few versions because of some efficiency improvements we made.<br />
** Additionally, we have now switched to using a ConcurrentQueue for each of those collections, rather than a regular Queue. This should also help with potential contention.<br />
** There was also the possibility that we might not be able to get enough commands out of the list for some reason to then send more, and we are also now guarding against that.<br />
** Previously, this problem was manifesting as orders not being carried out when you gave them, sometimes or all the time. And things like "save my game" and "pause or unpause" not working anymore.<br />
** We were able to duplicate this in one savegame after some time, but no longer can. Given the intermittent nature of this sort of thing, we can't say for sure that it is solved -- but the logic of what was going on makes sense, and the fix we put in should hold that at bay. It's one of those "can't prove a negative" things, at the moment, so fingers crossed it just never shows up again.<br />
** The characteristics that we observed while this happens, if it happens to you and you want to see what you can tell us:<br />
*** In the escape menu, under the memory pooling performance, the number of raw commands were steadily climbing. One or two every few seconds. This should never happen in that way. Increases happen, but not a steady drain flow like that.<br />
*** In the escape menu, further down under the Commands Queued By Type, you may see some null warnings up at the top of that list, now. That wasn't there when we observed it, but it would be if it ever happened now.<br />
** Thanks to zeusalmighty, Puppet Master, Gdrk, and GreatYng for reporting and giving advice on how to reproduce it.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* In our copy of FORGE networking, we've removed some useless extra code that was for the UniversalWindowsPlatform framework, which we won't be ever using.<br />
<br />
* In our copy of FORGE networking, we also got rid of a very useless set of "pending" messages on the UDPClient and UDPServer, which were ostensibly to help with reliable messaging, but in reality was just doing some useless event handling and invocation, and some useless cross-threading locks. It just put the things in the basket and took them back out, never checking the basket or doing anything with it. Thankfully, there is a second basket for reliable UDP inside the UDPPacketComposer, so this was just extra redundancy.<br />
<br />
* Added a new ArcenNetworkClientConnection abstract class, which we now store on ArcenNetworkAuthority in a ClientConnections list.<br />
** These are connections, not yet correlated to specific players. But it lets the network pipe connect up a specific connection with a specific player (or reject that connection if it's not okay).<br />
** Each individual networking framework (ArcenSocket descendent class) is actually responsible for keeping track of these connections and populating them.<br />
** But the actual network authority does the job of authenticating them into a given game and handling the challenge/response work, figuring out a match to a player slot in the game, etc.<br />
** With this in place, we can now get rid of GetNumberOfConnections(), because that's now moved out of the socket and into the network authority.<br />
** This is a substantial refactor, in that it will really make Steamworks and GOG a lot easier for us to work with as networking frameworks, faster.<br />
<br />
* NetworkingPlayer in FORGE now inherits from ArcenNetworkClientConnection, and is the first version of a networking framework using this new pattern.<br />
** On NetworkingPlayer, rather than having a public { get; private set; } for some of the immutable connection things, we now use them as public readonly. This is both more efficient in performance (slightly), but also prevents sync issues between this class and its new underlying abstract class.<br />
** This class gives the information it needs to the base class, and doesn't bother registering the host NetworkingPlayer as an underlying client connection at all, keeping things simple.<br />
<br />
* A bunch of stuff with the FORGE networking logging has been replaced with wrappers around our own logs, so that if there are internal exceptions those don't just go nowhere invisibly anymore.<br />
<br />
* Trimmed out a bunch more old FORGE code that has been commented out for years from the look of things.<br />
<br />
* RespondToNewConnectionAcceptedByTransportLayer() is definitively game code, not part of the actual networking transport layer, and it has been moved into the central codebase and away from any specific networking framework.<br />
** "Hello friend, you've connected: what's your profile name you want to play under?" Etc.<br />
<br />
* A fair bit of the "initial chatter" of clients connecting to a host and the host responding are now logged to the debug log no matter what.<br />
** There really is not that much that is said, and this will certainly help someone at some point who is having some sort of connection issue.<br />
<br />
* When clients are connected to the host, now the host not only shows the number of clients, but also sees their profile names that they have chosen to connect with.<br />
<br />
* A bunch of event-driven stuff on the FORGE networking has been made a bit more inline, improving performance a bit and also reducing certain areas of complexity.<br />
<br />
* The initial challenge-response work, and "what's your name" work, is all functional again. This is stuff that will be identical regardless of the network framework.<br />
** The host can now properly see the profile name of the client, and is poised to send the client back all the world information.<br />
<br />
== Version 2.105 Selection Hotfix ==<br />
(Released July 22nd, 2020)<br />
<br />
* The game still loads various xml files asynchronously, and loads icons and music and sound in that fashion, but it no longer tries to load the ships, shots, or wormholes in that way.<br />
** This was just too unreliable, because of some issues in the unity engine. It didn't affect all players, and not all the time -- but enough that it majorly affected the stability of the game for some folks, and that's too much.<br />
** This also removes the potential for the really long (15-30 second) lag time when you are first opening a new game or the lobby if things didn't load during the loading period.<br />
** Thanks to Ovalcircle for the most recent set of reports.<br />
<br />
* Previously, the game was using a standard List<> object for keeping track of selected ships, and that sometimes ran into inefficiencies and cross-threading issues.<br />
** In the prior build, we tried to fix some of those cross-threading issues, but wound up making things not actually deselect properly.<br />
** To fix all of the above, we've now switched to the much more flexible and robust ArcenLessLinkedList<> object, and adjust the code to handle this. This is both more efficient (not that efficiency is a major problem here), and does not fall victim to the various cross-threading woes that the old style could. <br />
** And, naturally, as part of that, this also resolves the frankly infuriating selection issues in the most recent build of the game. Sorry about that one!<br />
** Thanks to ctl0ve, CRCGamer, Chuito12, and Burner for reporting.<br />
<br />
* Previously, the tech menu only showed techs that would actually benefit a ship you have at present, or which you could capture.<br />
** This was very confusing to a lot of players, as they would not see the entire tech tree and thus think that something was missing or broken.<br />
** In some other cases, possibly due to changes in the recent past, you CAN build something (like a command station), but since you have not done so yet, it would not show up.<br />
** All of the techs now always show up, but the ones that are for ships that would not benefit you right now still show up as red and not researchable.<br />
** Additionally, the tech color shows up as white when it benefits ships you have, gray when it benefits ships that you don't have right now, and lighter gray when it benefits ships that you could capture.<br />
** Please note that since citadel upgrades don't benefit battlestations anymore, the citadel tech not showing from the start was working properly.<br />
** Thanks to Strategic Sage and CRCGamer for reporting the confusion.<br />
<br />
== Version 2.104 Negative Build Percentage Hotfix ==<br />
(Released July 21st, 2020)<br />
<br />
* Somehow or other, it became possible for some self-building ships to go very negative in their build percentage (instead of counting up to 100%, they would be way in the negative percentages of building process). <br />
** This seems to be a new bug in the last day or so, based likely around some changes that we made to improve the cross-thread reliability of the game. The problem is, upon manual code review of the areas that would be relevant, we just can't see anything that looks like a bug.<br />
** Ultimately what is happening is that the SelfBuildMetalRemaining is getting absolutely giant in value, far larger than the original metal cost of the ship that is constructing. This was probably an integer overflow from it going really negative first, and then wrapping back around, but it's hard to be sure.<br />
** We've put in some extra defensive code to make sure that if it goes negative at all, it marks itself as complete. We've also put in protections so that if you "owe more than it is worth" in general, that it will assume that there was an overflow and just go ahead and finish it now. These two changes should help to keep the problem from happening again, and fix the cases where it was already in progress.<br />
** While we were already at it, we put in a small general improvement that prevents you from being overcharged for the last tiny percentage of constructing a ship. If you had a bunch of engineers building, and each frame cycle they normally would do 1.1% of the construction of a ship, and charge you accordingly, then you might wind up in a case where you had only 0.2% remaining work to do, and yet got charged the full 1.1% rate. It is now careful to only charge you for what you would owe, so the 0.2% rate in this example.<br />
** Hopefully there are no other errors in any of the metal flows, with things like drones building, anything engineers would claim or repair, etc. The code looks clean, but then again the code for the self construction also looks clean. In the next couple of days, please let us know if you see anything else that seems amiss with how metal is being charged against you. So far we can't duplicate anything like that anymore, now.<br />
** Thanks to CRCGamer, deso, and Puppet Master for reporting.<br />
<br />
* Some code from yesterday dealing with cross-threading protections let us unfortunately sometimes wind up with runaway DoForSelected loops. This is now fixed, and it has several kinds of self-repair in place to prevent this from happening now.<br />
** Thanks to Gunner for reporting.<br />
<br />
=== Multiplayer Connection Work ===<br />
<br />
* Reworked the NetworkTrafficLog.txt multiplayer output to actually be a lot more informative.<br />
<br />
* GetNumberOfConnectsCurrentlyActive has been replaced with GetNumberOfConnections, which lets the network framework tell us a lot more about the general status of things happening.<br />
** Instead of just a generic number of players that exist, we can see how many are disconnected, how many if any are the host, how many are clients, etc, etc.<br />
<br />
* In the lobby, the host now sees how many connected clients there are, and if there are any disconnected ones, how many disconnected ones there are.<br />
** Previously it just showed one number that included the host and also disconnected clients all wrapped up into one.<br />
** It still isn't detecting disconnects properly in FORGE, but we'll get to that.<br />
<br />
* The host now only bothers sending heartbeat messages if it has at least one non-host client machine connected.<br />
<br />
* Removed some old "desync detected" code that was not fitting with the new plans for multiplayer.<br />
<br />
* Figured out some of why the client was not detecting itself as properly connected, and so was not getting messages from the host at all in the last few builds after the connection.<br />
<br />
* The way that gamecommands are queued and then given out to player simulations for both single-player and multiplayer is now more efficient.<br />
** We're using queues now instead of lists, and this gives us a lower chance of accidentally losing a command, as well (not that we know of that ever happening before).<br />
** This has several performance benefits even for single-player when there are a lot of commands going around.<br />
<br />
* Added a new FromServerToClient_AuthorizeThroughFrameNoCommands in addition to the FromServerToClient_SendNextBatchOfCommandsToExecute, to slightly save on space (1 byte per message) and make the logs clearer.<br />
<br />
* The network log no longer has a time delay built in where it logs only 100 items at a time. It just immediately dumps items to disk.<br />
** Realistically there is only substantial traffic every 100ms or so anyhow, and the delay in logging was incredibly confusing as a programmer working with it.<br />
<br />
* The network polling interval has been updated from 20 times per second to 100 times per second. In practice it will actually be variable, but the polling is extremely lightweight (the part that is on the main thread), and having absolutely minimal delays in getting and sending messages is what will keep things moving smoothly.<br />
<br />
* To make network logging even more efficient and clear, the old ArcenNetworkLogEntry is now ArcenNetworkSendLogEntry, and is now a struct instead of a class. This runs lightning fast and doesn't affect RAM usage.<br />
** We also now are then logging data that is gotten in (which we call TAKE) along with data that is sent (which we call SEND).<br />
** This way we can see the conversation between several machines all interleaved on a single machine's log, and thus figure out why they are saying what they do, and if messages are getting there, etc.<br />
** Surprisingly, the way we were logging things previously really didn't lend itself to that, so it was easy to go down rabbit holes of wrong information (thinking data did not get to a machine when in fact it did).<br />
<br />
* Furthering clarity on the networking side, we're now ignoring loopback messages-to-self on the host in our logs, which previously we were not doing.<br />
** This way we don't get drowned in a sea of stuff that "I'm telling myself in order to be the same as everyone else," and we can just see what is actually passing between machines.<br />
** The loopback stuff has been demonstrably working fine since more or less forever, unless we broke it today, since single-player relies on that.<br />
<br />
* Fun fact, after all these logging changes, we can now actually see how well parts of the networking are already doing.<br />
** As one client connects, the host is able keep talking to itself and/or others without breaking stride, letting the potential connection wait for the challenge and acceptance (not yet reimplemented) before it loops in the new client to the rest.<br />
*** This is a great example of how we can keep people from accidentally messing with the sessions of friends by trying to join during a game, etc. It's the sort of thing that only matters among friends, but it keeps it clean.<br />
** On top of that, we can see now that the reason for the host not noticing when a client disconnects is because it's ignoring the client that has not fully gone through the challenge-response process yet, and so the mystery of how it was "sending messages that failed but didn't flag the client as disconnected" is easily solved (answer: it wasn't sending messages to that particular client yet, because it is smart).<br />
** In general, by improving our logging quite a lot we can see what is actually happening and make sure all of this works properly. The vast majority of this is network-agnostic, which is doubly great. These particular logs will look substantially the same between FORGE and Steam and GOG.<br />
<br />
== Version 2.103 Hotfix ==<br />
(Released July 21st, 2020)<br />
<br />
* Fixed a bug from the prior version where the dark spire serialization fix was making any savegames with dark spire in them -- new or old -- not able to load.<br />
** Thanks to valinor000 and stanazolol69 for reporting.<br />
<br />
== Version 2.102 Digression For Quality ==<br />
(Released July 20th, 2020)<br />
<br />
* Using the "Increase Max Dyson Strength" hack will now also increase the Dyson's general mark level<br />
* Some minor buffs to the Dyson's income, mostly at higher levels<br />
** Thanks to a discussion started by zeusalmighty<br />
<br />
* When picking music (through the debug menu), the hovertext will now give you information on most of the tracks saying the original source<br />
<br />
* Improved the speed of some dictionary lookups by precalculating the ArcenAssetBundlePath CombinedPath.<br />
** This also required us to change their member variables into properties, and in return that meant that the general string fill methods needed to be adjusted to new FillBundle and FillPath methods for xml reading.<br />
** This doesn't affect as much code as it sounds like.<br />
** We also adjusted the various debug logging points to use the combinedpath, which is cleaner and easier to read, but not much faster since that almost never happens.<br />
<br />
* Fixed a bug that could happen with entity order serialization in rare circumstances if threads were fighting over putting items back in or taking them back out.<br />
** Since multiple threads do in fact often use orders, at once, this is one of the few collections prone to that.<br />
<br />
* Fixed a variety of exceptions that could happen based on cross-threading bad luck during the exit of the game either to the OS or to the main menu, all in the metal expenditures code.<br />
<br />
=== Ship Behavior Improvements ===<br />
<br />
* Fix two problems related to shields recovering from being bumped by Astro Trains <br />
** Human Home Forcefield Generators can now recover from being bumped.<br />
*** Thanks to Lord Of Nothing for the bug report<br />
** If a forcefield generator is bumped twice in short order, it will now do a better job of returning to its original location. This isn't perfect, but it's a pretty intense corner case<br />
*** Thanks to Puppet Master for the bug report<br />
<br />
* If there are only non-combatant enemies on a planet, ignore any requirement in the targeting code that particular targets need to be combatants. This prevents ships in FRD from discarding reasonable targets incorrectly. <br />
** Thanks to ParadoxSong for the bug report<br />
<br />
* Actually support Targeting tracing now; you need to set Targeting tracing and the Debug setting that lets you set the PrimaryKey for the unit you want to follow, and you'll get some actual logging. <br />
** Not for the faint of heart; intended only for developers who want to get their hands very dirty.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a bug where the 'delete campaign' button wasn't giving the campaign name<br />
** Thanks to OvalCircle for reporting<br />
<br />
* Fixed a rare and harmless (but annoying) cross threading exception that could pop up with argument out of range exceptions in RenderShip.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed a rare nullref exception that could happen in DoRemovalChecks() on shots, mainly a cross-threading thing.<br />
** Thanks to Lord Of Nothing for reporting.<br />
<br />
* Fixed two possible spots in DoForSelected() where cross-threading issues could sneak in and cause an exception in rare cases.<br />
** Thanks to Lord Of Nothing for reporting.<br />
<br />
* Fixed an issue when loading savegames that have a missing planet naming scheme. It will now default to the default naming scheme if it can't find the one that the world was started with.<br />
** Thanks to Oryutzen for a save that demonstrated this.<br />
<br />
* Fix a bug where the imperial spire wasn't Watching previously explored planets for you.<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fixed an error in TextMeshPro where it would still give us "Unable to use Ellipsis character since it wasn't found in the current Font Asset" invisible errors that would fill up the debug log even if warnings were disabled.<br />
** This was, in very long play, a memory leak as well as a performance drain, and it was generally invisible.<br />
** The ellipsis character was typically something it was trying to find specifically for purposes of showing cut-off text, and some fonts just don't have that in them. So no wonder we couldn't actually find the ellipsis character used in our own text files.<br />
** Thanks to Puppet Master for providing the log file demonstrating all this.<br />
<br />
* Fixed an issue where the stationsRemainingBeforeDepot on astro trains could go arbitrarily negative, thus causing an error on save. It now stops at 0, and thus seems not to cause the issue anymore. But on the change that an astro train does have a data exception during save anymore, it will now log what field is having the problem and we can fix it.<br />
** Thanks to Lord Of Nothing for the report and save.<br />
<br />
* The game has been updated so that the debug logging that is DoNotShow now ONLY goes to the ArcenDebugLog.txt, and not to the unity Player.log. The unity Player.log is kept in memory in a very unfortunate fashion, and in long gameplay this will be extra RAM used that should not be. Probably also extra slowness.<br />
** We added a new DoNotShowButSendToUnityLogEvenOutsideEditor Verbosity option that lets us have the old behavior of going to both of those logs, but we are not using that anywhere at the present time.<br />
** All of this is going to make it even more important that we have both kinds of logs from players if they have an outright game crash, now. But generally speaking, if it's an exception popup but not an outright crash, the ArcenDebugLog.txt has always been enough and will continue to be. It's only when the game crashes all the way to the desktop that we need the Player.log, typically, and now we'll just still need the ArcenDebugLog.txt in addition to that. However, any ShowAsInfo or ShowAsError logs to the main ArcenDebugLog will still appear in the Player.log, so potentially even that won't be true.<br />
** For a developer using the unity editor, it still logs everything to the actual unity log because that's for short testing cases and super useful to see output in realtime.<br />
** At any rate, we are trying to strike a balance between getting the logs we need, easily on the part of players, but without having any accidental extra usage of memory on very long play sessions.<br />
<br />
* All of the dark spire per-unit data is now saved in a format where we can tell which field is having trouble if one does.<br />
** The dark spire data "lastTimeAttemptedLocus" was trying to save as an int16 and would overflow any time a game saved that was more than about 32000 seconds in. Fixed.<br />
** Thanks to RockyBst for reporting.<br />
<br />
==== Memory Leak Fix From 2.099 ====<br />
<br />
* New setting on the debug menu: Show Pool Counts In Escape Menu<br />
** Used for searching for memory leaks, particularly between loads of a savegame. If pool counts keep rising after each load, then something isn't getting put back in the pool properly and is instead persisting lost in memory.<br />
<br />
* ArcenGameObjectResourcePools must all now have a unique name, and they register themselves in a central place that identifies how many of them there are.<br />
** These pools also now keep track of how many objects they have ever produced from themselves, so that if we are leaking objects from them we can tell. And we can tell if we are leaking pools themselves.<br />
** After seeing all of these in the new debug menu option above, we can clearly see that none of these are leaking and they are all behaving just wonderfully. Hmm. But we have a leak somewhere, so let's expand this...<br />
<br />
* Created a new CountedPoolBase abstract class that sits under the ArcenGameObjectResourcePool, and takes its counting capabilities and puts them there so that we can also use them for some other pool types.<br />
** This is also now used on a new "Shot Instance Renderer Pool Of Pools" so that we can tell if we are leaking there. And now ships and squads, too.<br />
** Also this is now used on LoosePool, which is the underlying basis for ship, shot, and squad visualizers (different from instanced renderers) now.<br />
** Despite all this, no memory leak was found in any of these pools. They are all working wonderfully efficiently.<br />
<br />
* ExternalizedPool now inherits from CountedPoolBase.<br />
** Same for TimeBasedPoolBase (and thus TimeBasedPool itself).<br />
** And same for BasicPool.<br />
** And holy cow, there's some sort of memory leak with the time-based pools, looks like, based on this. That makes sense, as we recently reworked some of their functionality to fix a bug with them. Apparently we introduced a new bug at the same time.<br />
<br />
* Added a new setting to the debug menu: Show Details Of Time-Based Pools In Escape Menu<br />
** Used for searching for memory leaks or other bad behavior on a certain very high-turnover series of pooled objects. If pool counts keep rising, or other numbers seem off, then we know we have a memory leak or a performance problem.<br />
** Thanks to Puppet Master, RockyBst, Lord Of Nothing, and NRSirLimbo for reports that led to us finding this.<br />
<br />
* Fixed a MAJOR bug from version 2.099 that was leading to a memory leak in general, and performance problems as well (the longer you played the slower it would get).<br />
** Our entire "time based pool" logic was not actually properly processing because we forgot a single line of code, go figure.<br />
<br />
==== Slow Load Or CTD Fix ====<br />
<br />
* Since we started using the asynchronous loading of asset bundle items using unity (the last few weeks), there have been some intermittent problems with certain random items not loading in properly. This is some sort of funky bug in Unity, we're pretty positive.<br />
** We solved that problem a week or so ago by checking the async request's asset property, and if it was not invalid, forcing it to finish loading even though it was stuck.<br />
** On most machines, this was causing a really annoying lag of 10-25 seconds while Unity did whatever it was doing to finish that load. That was really annoying, but only happened the first time you loaded a savegame or quickstart or custom lobby after starting the program, and not every run of the program, and not on all machines.<br />
** More recently, we discovered that the very act of checking the async request's asset property would cause an unrecoverable error deep in unity and an immediate crash to the desktop.<br />
** Killing two birds with one stone, we're no longer checking the async request asset property at all -- thus avoiding the crash -- and instead just do a normal synchronous load when we detect a failed load. This leaves the one async request in limbo kind of forever, but that shouldn't be a problem; if it ever decides to complete, it will see that it was already completed and just do nothing.<br />
** In the meantime, not only should this avoid the crash, but it should also avoid that awful lag spike that happened for those for whom it didn't crash.<br />
** The downside is that on our dev computers we haven't been able to replicate the error at all today, so we can't verify that this 100% works. It should work, and you should see in the arcen debugging log slightly differently that says "PrototypeObject failed async load and so loaded synchronously for [some stuff] (this is not a problem, but is odd)"<br />
*** If you're one of the people who were frequently seeing either the crash, or seeing the older "PrototypeObject fixed and loaded late for [some stuff] (this is not a problem, but is odd)" message, then we'd love to have a confirmation of you seeing the new message and all being well.<br />
** Thanks to Sol and RocketAssistedPuffin for reporting.<br />
<br />
== Version 2.101 Connection Status: Confirmed ==<br />
(Released July 17th, 2020)<br />
<br />
* Carriage returns and newlines are now supported by the "condensed" string format. This will prevent tutorial messages from turning those characters into question marks when they are dumped to the chat log. Note that this will only affect chat log messages logged in this version and on, not past versions.<br />
** Thanks to ParadoxSong for reporting.<br />
<br />
* The left and right click functions of the metal display have been switched to be more natural.<br />
** Thanks to Waladil and Galian Gadris for suggesting.<br />
<br />
* The "Spire Railgun Shop" mod that comes packaged with the game has been updated to use the icons from their new locations, and will no longer error.<br />
<br />
* We've reworked our "Window_PopupScrollingColumnButtonList" a bit to add some new handy features for us.<br />
** In the factions selection window, when you are adding new factions, it now still lets you see factions that you can't add because there is only one per galaxy, but now it shows them in red, doesn't allow you to select them, and explains why in the tooltip.<br />
** In the debug menu in the escape menu in the main game, the change music submenu now shows the current selection in red (with the note that you can't change to it because it is already playing), and it shows all of the options sorted alphabetically except for the current track, which it shows as the first item.<br />
*** Also fixed a bug where the music you selected to play would not actually be the track that played; it was choosing a random other track.<br />
<br />
=== Scourge Updates ===<br />
<br />
* The hovertext for the Scourge "Strength" in the game lobby now tells you what the strength does (more scourge ships/structures, and faster).<br />
<br />
* Add a "Sandbox: Extra Strong Mode" for the scourge<br />
** This is not balanced for regular play, but is intended as a sandbox thing.<br />
** Thanks to Avenger1649 for suggesting<br />
<br />
* Fix a bug where the scourge were periodically suiciding Defensive Fireteams into player positions.<br />
** Thanks to ParadoxSong for the save.<br />
<br />
* On intensities >= 5, the scourge can create cloaked "blockade running builders" if the player has tried to blockade the scourge into a small region of the galaxy<br />
** Thanks to ParadoxSong for the suggestion<br />
<br />
* On intensities >= 6, the scourge is intended to sneak a builder off to another part of the galaxy at the beginning of the game, to make it much harder for the player to blockade them in. This was not working on some map types, including the X type.<br />
** Thanks to ParadoxSong for the save that exposed this problem.<br />
<br />
* These changes should make the scourge much harder to deal with in general, and on the X map type in particular.<br />
<br />
=== Initial Multiplayer Connection ===<br />
<br />
* AllowOtherPlayersToConnect was a setting on the World object in the past, and thus something that was getting saved into savegames and that dictated how a lot of things worked for player connections.<br />
** We've removed this concept, and instead are making it based on the menu choices you make on the main menu.<br />
** We now have a DesiredMultiplayerStatus on ArcenNetworkAuthority, which lets us recall if you wanted to be the client, a host, or just left alone in single player.<br />
<br />
* The basic shells of SteamSocket and GOGSocket have been added to the game. The in no way function yet, but this will allow for them to be built out in the future.<br />
<br />
* The SpecialNetworkType has been moved into ArcenUniversal, and is now copied onto ArcenSocket along with the InternalName of the row that created the socket.<br />
** There is now a list of AllPossibleSockets on the ArcenNetworkAuthority to allow it to swap between sockets as needed, and particularly by type.<br />
<br />
* When you open the multiplayer menu, if you have that enabled, it will now set a default network framework for you based on the status of your game at that time.<br />
** If you are logged into Steamworks, it will set steam as the default network.<br />
** If that didn't work or wasn't true, and you are logged into GOG Galaxy, it will use that as the default network.<br />
** If none of those worked, then it will pick the first "other" network type, which in this case would be Forged.<br />
<br />
* All of the options in the multiplayer menu for hosting a savegame, quickstart, or custom game now properly do those things identically to as if it was the single-player menu, but put you into host mode first.<br />
** The single-player menu puts you into single-player mode, and makes sure that your ArcenSocket is set to NullSocket.<br />
<br />
* When you try to go into one of the client or host multiplayer areas from the multiplayer menu, it now properly activates your most recent chosen network framework, or switches to the first available one that actually can function right now on your system and gives you explanations for why it did that.<br />
** Essentially there is a fair bit of under the hood plumbing now for the frameworks to register themselves with the network authority class and explain about their availability.<br />
<br />
* If you are looking to connect to another machine, then the "connect as client" tooltip now gives you information about what to expect based on your currently-selected framework.<br />
** Are we connecting by IP? How much of a hassle will that be? Is it going to be by selecting a friend on Steam or GOG? Etc.<br />
<br />
* For IP-address-based networking frameworks, either starting a host mode or client mode event now pops up with a message explaining what information you need to give to the client players or get from the host.<br />
** This is not really the preferred networking method unless you're having a LAN party, and the game makes that clear, but it also goes out of its way to address the most likely areas of potential confusion for people who are using these frameworks.<br />
<br />
* Fixed a few bugs, and added a bit more debug logging clarity, so that the host can once again properly open a socket and wait for connection.<br />
** This was working up until a week or so ago, and was simply messed up a bit when we reworked things to support multiple networking frameworks. There were lots of lonely hosts never getting any client requests ever since the game has been in public beta.<br />
<br />
* When you quit out of the multiplayer lobby back to the main menu, it now immediately disconnects you as a host or client, to avoid confusion of lingering connections.<br />
<br />
* When you are in the lobby in multiplayer, the chat sidebar/log now appears again. At the top it says if you are hosting multiplayer or a multiplayer client.<br />
<br />
==== Choosing A Networking Framework ====<br />
<br />
* The main menu has been updated so that the "network" button at the top of the multiplayer menu now updates its text to show the current network.<br />
<br />
* The network button at the top of the multiplayer menu on the main menu is now fully functional. It shows available network frameworks, and gives you explanations for each one, as well as showing unavailable ones in red with an explanation for why they are not available right now. It lets you select from available ones, which then get set as your current socket when you try to host or join a multiplayer game.<br />
<br />
==== What Is My IP Address If I Need It? ====<br />
<br />
* In the networking section of the settings menu, it now has helpful informational displays of your local IP addresses and your public IP address.<br />
** To get your public IP address, we have to make a public call to the url http://checkip.dyndns.org, so this may flag your software firewall to ask permission when you go to the networking tab now.<br />
** Our goal is of course for you to not have to use your direct IP addresses at all in this game, but if you're playing on a LAN then that would be one great example of when you'd want to use this.<br />
** At any rate, each IP address is stored in a textbox that you can copy-paste from, which is very handy when sharing with friends.<br />
** There are also lengthy explanations about what the public IP address is for, and under what circumstances to use it, as well as the local IP addresses, plus special notes for any IPV6 addresses that it detects.<br />
** Getting this data is time-consuming for your computer, so you will notice micro-lags every few seconds while you are on the networking tab, now. This is normal and should not impair your use of the functionality.<br />
<br />
==== Milestone: Successfully Connecting A Client To Host ====<br />
<br />
* The old interface for network connections by IP address is restored and works again. We'll have a different one for connecting via friends list on Steam and GOG, later, but this is the one that gets used for Forge and any other IP-based network frameworks.<br />
<br />
* Connections are now able to be established from one computer to another, for the first time since 2018!<br />
** We added the ability to see how many clients there are connected to a host in the lobby (including the host), so you can see the connection tick up.<br />
** Next up is them actually exchanging enough information to get the client into the lobby and have them see shared world info and be able to chat and all that. But this is milestone one!<br />
<br />
== Version 2.099 Last Rabbit Holes ==<br />
(Released July 15th, 2020)<br />
<br />
* There is now a galaxy setting to grant players Watch vision for 1, 2 or 3 hops from all command stations.<br />
** Thanks to uhamster9 for inspiring this addition.<br />
<br />
=== Fixes And Tweaks ===<br />
<br />
* Improved the way that time-based pools are incremented in time, so that we're never having accidental cases where we miss one.<br />
** Also made it so that they actually work as intended when the world is being cleared (running 16 seconds' worth of time at once). This then keeps the pools smaller if you repeatedly load savegames.<br />
<br />
* On the escape menu, under where it shows you the various numbers of objects in memory, it now shows you the number of galaxy planets and planet links activated and in existence.<br />
** This lets us tell when these have a memory leak, if there ever is one with them.<br />
<br />
* Additionally, galaxy map links are now pooled for the first time ever, as the discarding of them was previously a definite memory leak. Normally this just happened between saves and loads, but it was also possible to happen when nomad planets moved.<br />
<br />
* In addition to the existing time based pools, we now have a new ExternalizedPool.<br />
** This is now used for the galaxy map links, and actually we have stopped the galaxy map planets themselves from using the super-old IArcenGameObjectResourcePoolable and they also now use this.<br />
<br />
* The way that planets for the galaxy map are initialized, and the way that their positions are set, is completely overhauled.<br />
** This is more efficient and properly uses pooling (which never was working properly before, it turns out).<br />
** It also makes the position of planets automatically react to them having moved in the game sim, without having to do anything special.<br />
<br />
* The arcencolors asset bundle has been removed, with its contents simply rolled into arcenui. Ultimately this is a bit faster to load, and saves a bit of disk space and RAM also.<br />
** Also removed the aiw2squads bundle, and the examples bundle.<br />
*** The examples bundle simply has its example content still there, but not in a bundle (it's to help aspiring models modders).<br />
*** The squads bundle is old data that we've not used in forever, and so has just been cleared out. It wasn't huge, but wasn't worth being there.<br />
<br />
* Starting to load a savegame (including for a quickstart or the last settings for a lobby) now writes to the log when you start the process, and at the end of the process writes how long it took.<br />
<br />
* Added a new debug setting: "Write Detailed Savegame Timings"<br />
** When loading a savegame, including the 'last settings' for the lobby or the basis for a quick start, keep track of detailed timing data and write that into the normal debug log so that it's clear what is taking longer and shorter amounts of time.<br />
<br />
* It turns out that chasing "why savegames now take 16 seconds to load sometimes" was a snipe hunt. The serialization sizes logging, when enabled, actually was causing that amount of slowness. With that off, it loads in about 2 seconds.<br />
** The extra instrumentation that we added for the savegame timings is still nice, but ultimately was not a useful bit of time spent at the current moment.<br />
<br />
* Fixed an issue that could happen in the lobby in particular where it could not properly save your prior settings because the fleet ID or speed group ID was lass than zero.<br />
** This pretty much could only happen if you already had another error first.<br />
<br />
* Fixed an exception in SeedNormalEntities that could happen if you rapidly tried to regenerate maps in the lobby in just the wrong way.<br />
<br />
=== Under The Hood Improvements For Icon Modding And RAM Usage ===<br />
<br />
* The last of the icons from the ExternalIcons folder have been moved into the unity project that generates the asset bundles, simply to dispel any potential confusion about the fact that they can be edited directly and that have some change on the game without recompiling asset bundles. This was a frequent modder confusion.<br />
** That said, the ones that were in the Official_1 folder are now in a CentralIconBits, and can now be used in the UI for the first time if we ever want to. That means things like health bars and whatnot could in theory be used in the ui if someone wanted to, whereas before they could only be used on gamespace-level icons.<br />
<br />
* Cleaned out a variety of unused icons from the arcenui asset bundle, and in general tidied up some of our organization of working files versus final files.<br />
** Also standardized the naming of certain things.<br />
<br />
* Broke the "official icon dictionary" out into six dictionaries:<br />
** One is for the "central bits" like health bars and so on, and would be the same for all ships.<br />
** Two are for the overlays, like for saying what kind of starship or guard post something is. There can be more than one of these, and the fact that these are split out like this demonstrate the modding capabilities and how things can combine.<br />
** Three are for ship icons and their borders, and there can be more of these modded in as well. As with the overlays, not only does this demonstrate how such mods would work, but it also has the side benefit of slightly less VRAM usage in a few cases.<br />
<br />
* The way that GUI icons are discovered from the xml based on their gamespace-icon counterparts is completely revised, and is now based on extra information in the ExternalIconDictionary entries.<br />
** This is a lot more flexible, and allows us to load icons from multiple asset bundles and/or multiple files within the same bundle.<br />
<br />
* The naming for finding icons is now much more complicated, in the sense that they don't all come from a single dictionary called "Official."<br />
** So there were over 1100 places in the base game and expansions where we've had to modify to point to the new dictionaries. Any mods would also need to be updated to point to the new places, unless they want to start using their own icons (once we put together a tutorial for that).<br />
<br />
* The external sprite dictionaries have been updated to be able to properly load in in multiple threads.<br />
<br />
* The game is now able to load the xml files for external icons from any mod or expansion, in:<br />
** Expansions/[ExpansionName]/GameData/ExternalIcons/[thefile].xml<br />
** XMLMods/[ModName]/ExternalIcons/[thefile].xml<br />
** XMLMods_NonDistributed/[ModName]/ExternalIcons/[thefile].xml<br />
** It's worth noting that these are xml files that are generated by Texture Packer, not xml that we create.<br />
** These files are referred to in the "ExternalIconDictionaries" xml as something along the lines of xml_path="Official_CentralIconBits.xml"<br />
*** It will then search the main game's folder (/GameData/ExternalIcons/[thefile].xml), then all the expansion folders, then any activated mod folders for a file with that name that was specified.<br />
** This allows for mods to be self-contained when it comes to their icons, and it allows expansions to have their own icons that are not packaged with the main game (not that we have imminent plans to do that).<br />
<br />
* On the icons used in the game, we previously were not using any compression, which made them absolutely massive in size (80mb for the main dictionary).<br />
** This was done in order to preserve quality, but we're also using GIANT icons in order to allow for really super-high-res displays of the future, as well as square ones to allow for ideal mipmaps, etc. So the lack of compression was hugely overkill.<br />
** We're now using compressed textures, which turns what was 80mb into more like 8mb. This has a very direct impact on performance and VRAM usage, so particularly on low-spec machines they will likely run far better.<br />
<br />
* The game now automatically constructs custom "gimbal materials" for the in-gamespace icons, in as many combinations as are needed for the things that it has drawn for you so far.<br />
** The total number of materials always in the past was "one," but it was using a single large dictionary and a lot more VRAM -- and it had a finite amount of space for things. There was a solid chance we were going to run out of space in that one dictionary as part of implementing DLC2. But either way, mods were not possible. The new number right now is 8, looks like.<br />
** Now it may make a handful of materials, depending on how many mods you have installed that have custom icons, and several for the core game and expansions itself. But these are vastly smaller, and while this does increase the number of "draw calls," each material is still mostly instanced together (there are a few mesh differences depending on if there are health bars shown or whatever), but the overall load on the GPU pipeline is lower.<br />
** All of this is automatically handled by the game in as efficient a pattern as possible, and if you're curious how many combination materials it has created, you can see that in the escape menu at the bottom of the list of memory pooling info.<br />
<br />
* A new debug setting, "Log Gimbal Icon Material Creation", has been added:<br />
** When this is on, any 'gimbal icon' material creation events will be logged as to what was created and how long it took to do so.<br />
** Turns out that this uses an immeasurably small amount of time for each material (less than 1ms each), so that's awesome.<br />
<br />
=== Under The Hood Improvements For Mods With Code ===<br />
<br />
* The game is now able to load dlls from mods or expansions, rather than just from the central game folder.<br />
** This works just like the external icon files, and basically looks for the dll in the central game folder first (/GameData/ModdableLogicDLLs/[thefile].dll), and then looks at expansions and then installed mods if it can't find them.<br />
** The paths are:<br />
*** Expansions/[ExpansionName]/GameData/ModdableLogicDLLs/[thefile].dll<br />
** XMLMods/[ModName]/ModdableLogicDLLs/[thefile].dll<br />
** XMLMods_NonDistributed/[ModName]/ModdableLogicDLLs/[thefile].dll<br />
** We really don't have a need to do this with expansions, but the flexibility is nice.<br />
** With mods that are more than just xml, however, this finally lets a modder distribute just a single folder that has everything in it, and not have to worry about putting some things in central game folders.<br />
** This is only partially tested, but should work.<br />
<br />
* It's worth pointing out that expansions and mods already did (and still do) have the capability to load asset bundles (icons, music, sound effects, models, textures, shaders, etc) from their folders.<br />
** The structure for those is /GlobalBundles/ in the main folder for anything not platform-specific, /AssetBundles_Linux/, /AssetBundles_OSX/, or /AssetBundles_Win/ for the things that are.<br />
** Inside the folders for expansions it is: Expansions/[ExpansionName]/[OneOfTheAboveFolders]/<br />
** Inside the folders for mods it is: XMLMods/[ModName]/[OneOfTheAboveFolders]/ or XMLMods_NonDistributed/[ModName]/[OneOfTheAboveFolders]/<br />
** None of this is new, but it's worth mentioning for now.<br />
** This is only partially tested, but should work.<br />
<br />
=== Larger Gamespace Icons And Fixed Galaxy Map Line Offsets ===<br />
<br />
* We also now have a non-billboarding version of our shader for purposes of our icons on the galaxy map.<br />
** Our core shader does on-GPU (read: hyper efficient) billboarding to always fully face the camera. This is very useful in the main view where you are moving around the camera a lot but always want the icons to face you.<br />
** The downside, however, is that with a largely-straight-overhead camera like the galaxy map uses, this billboarding would cause there to be a perspective shift where the icons for planets would get offset from the lines leading between planets no matter what we did. It also caused them to move relative to the text that was next to them.<br />
*** This offsetting of the lines to the planets was one of the largest "visual papercut" issues that we've had for a really long time, and it is finally fixed!<br />
<br />
* The ship icon scale has been adjusted from a default of 1.5 to 2.2, and will affect all prior settings files.<br />
** It's description has also been updated for the personal settings tooltip: For the icons in the main display area (not the sidebar), how large should they draw? Default is 2.2. If you go too large, it can be hard to see things because they overlap too much. If you go too small, they can get extremely blurry because of flipping to a lower mipmap. The larger your screen DPI, the smaller you can go without losing clarity.<br />
<br />
== Prior Release Notes ==<br />
<br />
[[AI War 2: Building Multiplayer]]</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:The_Paradigm_Shift&diff=40801AI War 2:The Paradigm Shift2020-10-13T22:58:56Z<p>Democracy? Democracy!: /* Turret Rebalance */</p>
<hr />
<div>== Known Issues ==<br />
<br />
* Any bugs or requests should go to our [https://bugtracker.arcengames.com/ mantis bugtracker]<br />
** 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.<br />
** 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:<br />
*** Windows: C:\Users\username\AppData\LocalLow\Arcen Games, LLC\AIWar2\Player.log<br />
*** macOS: ~/Library/Logs/Arcen Games, LLC/AIWar2/Player.log<br />
*** Linux: ~/.config/unity3d/Arcen Games, LLC/AIWar2/Player.log<br />
<br />
* '''Multiplayer is in public alpha, as noted below.''' There is a [[:Category:AI War 2: All About Multiplayer|detailed multiplayer guide]] that we are working on building up.<br />
<br />
* Feel free to [https://discord.com/channels/240637654717300736/242012213580136448 join discussions on discord]!<br />
<br />
== What Does Multiplayer Alpha Mean? ==<br />
<br />
[[:Category:AI War 2: All About Multiplayer#Initial Caveats And Related Resources|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.<br />
<br />
== What's this phase all about? ==<br />
<br />
We've been preparing for this for months, tightening up the codebase and getting everything ready as much as possible. Now it's time to start having machines actually talk to one another, and then refine from there. At this point, LiteNetLib, Steam, and GOG Galaxy are all fully working as communication frameworks, and the game is in an alpha state (as of September 9th) where not all of the functionality is there, but the game can be played together. <br />
<br />
It's important to remember what an alpha is! There are glitches and inefficiencies, and we'd like to know more about those. There are also glaringly missing features. Beta means feature-complete but not bug-free, and we're not there yet. Please don't assume that we will implement some feature you want, like the ability to share X between players. If you're testing the alpha and want something, please do drop us a message and ask for it, just in case.<br />
<br />
We expect to be into beta of multiplayer in late September. Hopefully the alpha and beta periods are both short due to all the work of the last phase, but we shall see how it shakes out.<br />
<br />
Once we get into a stable beta period for multiplayer, then we'll let the clock run a bit and Chris will work on adding interplanetary weapons to the base game as a free update (that's the last of the kickstarter stretch goals). This phase should wrap up all our kickstarter promises (including a laundry list of other smaller items).<br />
<br />
Badger has already done the bulk of his work for the second expansion, Zenith Onslaught. Chris has done none of his work for that, as yet. Once multiplayer is in the "let it exist in beta and have people bang on it" phase, then Chris can circle in and get his work done for DLC2 along with those base game bits for interplanetary weapons, etc. The full version of multiplayer should launch alongside of DLC2, but we're not sure exactly when. October?<br />
<br />
Either way, multiplayer will be in a solid state that is "beta but just because we want more time with more people testing it" for a month or so while the DLC2 work from Chris's end happens. None of the actual multiplayer stuff is delayed in any fashion for DLC2, it's been the other way around.<br />
<br />
== Version 2.613 ==<br />
(Not yet released -- we're still working on it!)<br />
<br />
* In the settings menu, in the game tab, hovering over the enable/disable button for mods and expansions now gives a very brief tooltip with just the name of the item in question, and brief instructions on what will happen. It then has a note that for the full explanation, you should hover over the name of the thing, to the left. <br />
** The descriptions of many mods were so long that it was impossible to see what you were doing as you tried to click things, previously! This works around that while still allowing for the long descriptions.<br />
<br />
* When you are viewing the list of major AI structures on a planet, it no longer just gives you this jumbled unsorted list of every item.<br />
** Now it sorts them by name, and for any that have multiples, it shows you x2 or x3 or whatever rather than just writing them multiple times. Yay legibility!<br />
<br />
* Hovering a planet in the Game Lobby now tells you that you can click on it to make it your new homeworld<br />
** Suggested by the Puffin Emeritus, thanks in part to discussion by Asteroid, Arnold Schwarzenegger, and others.<br />
<br />
=== Turret Rebalance ===<br />
<br />
* Upped base Turret type count of RaidOffensiveTurrets and GeneralTurrets Battlestation/Citadel fleet design templates.<br />
<br />
* Seeker Turret base damage reduced to around a third. Versus things such as normal Guardians and Starships, it does less than a Nucleophilic Turret would, but would still start to outscale it on larger targets.<br />
** Said larger targets is around mass 8.<br />
<br />
* Ruffian Turret range increased 25%, damage increased 50%.<br />
<br />
* Scrap Turret reload time 2s -> 1s, damage doubled, shots to self destruct 15 -> 20.<br />
** Results in it doing 4x the DPS it was before, allowing it to get more shots out overall if under enemy fire. Double damage and 33% more "shots until self destruct" result in an overall 2.6x damage increase before being destroyed, assuming no enemy fire.<br />
<br />
* Blaster Turret damage increased 30%.<br />
<br />
* Counter Sniper damage reduced 20%.<br />
<br />
* MLRS Turret damage increased 20%.<br />
<br />
* Tripled Harmonic Turret base damage, doubled Harmonic effect damage and cap.<br />
<br />
* Increased Fortified Tesla range and AoE radius by 50%.<br />
<br />
* Decrease firing rate of Plasma Turrets<br />
<br />
** Changes contributed by Puffin Emeritus<br />
<br />
Please note, turrets are still being rebalanced. We are updating them one chunk at a time so everything doesn't radically change overnight.<br />
<br />
=== AI Reserves Rework ===<br />
<br />
* When a player starts deepstriking, there's a notification that the AI reserves will start spawning "soon" (a minute or two). <br />
<br />
* Once the reserves are ready to start spawning, they will begin creating wormholes on planets near the place you are attacking. Each wormhole will periodically release AI Reserves ships that will fly to any deepstriking planets you have and begin attacking. Each wormhole has a separate budget, and will spawn more ships the longer it exists. The strength of the ships spawned is based on AI Wave size, so AIP/AI difficulty are factored in.<br />
<br />
* When you stop deepstriking, the AI reserves ships will fly back to their wormholes and vanish. Once all the ships are gone, the wormholes will persist for a short while (3 minutes at release time), then vanish.<br />
<br />
* If you are deepstriking at multiple planets, a new Wormhole will be randomly placed near one of the planets you are deepstriking. As a result, deepstriking multiple places at once can split the reserves response.<br />
<br />
* The ships spawned are based on the sort of ships the AI uses at a given planet (so hopefully you'll get a good amount of variety). There's also a unique new ship for the Reserves designed by zeusalmighty.<br />
<br />
* Goals: <br />
** Make the AI reserves have some new, unique behaviour, to make them more interesting/exciting.<br />
** Make it so that 'Oops, I triggered the Reserves' feels less like a coin flip where sometimes you get crushed out of nowhere<br />
<br />
* Definitely needs some balance feedback<br />
<br />
* Note: This is technically a DLC2 backport, since it reuses tech from DLC2<br />
<br />
* New field in the AI Behaviors section of the galaxy options: AI Reserves Grace Period<br />
** If you lose a planet deep in AI territory, how many seconds will you have to recapture the planet before the AI Reserves start anti-deepstriking attacks against you?<br />
** The default is 60 seconds (1 minute), to give you a moment to collect yourself, but still probably have the deepstriking attacks kick in at least a bit if the AI snipes you off a forward planet base.<br />
** This is vastly reduced from the 20 minute grace period (1200 seconds) that the game gave you as of last version, but the AI Reserves attacks are more gradual now in general. And you can still increase this to 20 minutes if you want (but that will not be considered a "pure" 10/10/10 win if you're aiming for that).<br />
** Thanks to Badger and Smidlee for suggesting.<br />
<br />
=== Strength Calculation Revisions V2 ===<br />
<br />
* The strength calculation constants have been moved into the ExternalConstants xml file so that those can be modded or so that players can tweak them.<br />
** We have balance_strengthcalculation_hull_divisor, balance_strengthcalculation_shields_divisor, and balance_strengthcalculation_final_divisor from the prior build.<br />
** We also have a new balance_strengthcalculation_dps_multiplier, which allows us to weight DPS higher.<br />
** Thanks to Puffin for suggesting.<br />
<br />
* A new "GameEntityStrengthList.txt" file is written, which just exports the ship names and their strengths.<br />
** This allows us to do quick diffs with different values for the strength calculations and see how those affect overall strength amounts.<br />
<br />
* The new DPS multiplier is now set to 2, which winds up having the strength values in this version be more like what they were in 2.609 and prior in overall scale, but with things more appropriately weighted towards DPS.<br />
** There are a lot of ships that have almost identical strength to before, some golems and such that now report nearly double the strength they did before, and other things which have far less strength.<br />
** The spread is different, but remember that these are for informational purposes (and AI decision-making on where to put stuff and if it can win a fight) only. These don't actually make the units stronger or weaker, it's just how it's estimating their stats translate into a single "strength" number.<br />
** Thanks to Puffin for suggesting that DPS was still under-represented.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an issue from the tooltips that show how long it has been since the humans last owned a planet, where it was showing information based on when the AI last reinforced the planet instead.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* The "major AI structure" field now only counts for ships that belong to the AI Sentinels.<br />
** So this means that ships from Civilian Industries, or Scourge, or whatever else, won't ever have this flag on them in a way that matters (the flag will still be set to true, but it won't count for the rollups).<br />
** Essentially, if you are playing with allied scourge or just civilian industries in general, they could block ownership of your own planets by accident and cause deepstrike warnings really fast.<br />
** Thanks to CRCGamer for explaining what wasa happening, and Endovior for the report.<br />
<br />
* Fixed an issue where savegames were incorrectly deserializing how long it had been since the humans or the AI had last controlled a planet, leading to nonsensical results all over the place.<br />
** This data all gets wiped out for older savegames now, since it was gibberish anyhow.<br />
<br />
=== Updates To Included Mod: Civilian Industries By StarKelp ===<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where various Militia Buildings could be caught by functions checking for Guardposts or AI structures.<br />
*** Chris fixed this on the game end as well, but this was some pretty poorly done entity code all things considered, so its better now.<br />
*** This may additionally fix a weird bug that Waladil was experiencing where Astro Trains would attempt to path to Civilian structures.<br />
** Fixed a bug where Militia would always try to expand with your allies even when disabled.<br />
*** Thanks to many individuals for reporting.<br />
** Fixed a bug where some cleanup code in the mod could get too aggressive, causing out of index exceptions.<br />
*** Thanks to Endovior on the Forums for reporting.<br />
<br />
== Version 2.612 Divide By Zero Hotfix ==<br />
(Released October 12th, 2020)<br />
<br />
* Fixed a bug in the most recent version where if there were no planets valid to reinforce in a category, it could have a divide by zero exception.<br />
** Thanks to Metrekec and Badger for reporting.<br />
<br />
== Version 2.611 AI Defensive Huddle ==<br />
(Released October 12th, 2020)<br />
<br />
* There are now Journal entries for Hunter/Warden/Praetorian, which pop up when you see that faction.<br />
<br />
* There's now an Advisor journal entry suggesting that players should use some of the Automations settings, if they haven't used those and they are 5 minutes into the game.<br />
<br />
* The 'Auto-Build Assault Frigates option is now an int-slider, so you can ask all your planets to build up to a specific number of assault frigates.<br />
** Suggested by ParadoxSong<br />
<br />
* Slight buff to CPA movement speeds. CPA ships from further away now move a bit faster, to try to increase the peak CPA incoming ship rate.<br />
** From a discussion with Democracy<br />
<br />
* Hacking a Tech Vault now shows the tech line to be granted in the tooltip for the Hack<br />
** Thanks to Asteroid for suggesting.<br />
<br />
* Spire infested macrophages now turn to Liches when nanocausted<br />
** Reported by GreatYng.<br />
<br />
* Player allied scourge can create an extra builder, thus allowing them to do more upgrading<br />
** Thanks to GreatYng.<br />
<br />
* Human Resistance Fighters will no longer attack planets with AI Eyes on them<br />
** Their appearance had a bad tendency to alert the eyes <br />
** Suggested by Strategic Sage.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a problem with the GCA hack text<br />
** Thanks to ParadoxSong for reporting<br />
<br />
* Added a new "savegames_from_this_version_are_broken_message" field, which lets us specify when a given game version is broken, and what is broken about it.<br />
** This should be something that is hopefully very rarely used, but it does eliminate confusion about something like the fact that games saved in 2.600 are all broken, for instance.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Change the 'Hack DS for ships' hacking hovertext<br />
** Reported by GreatYng.<br />
<br />
* AI Eyes no longer give you an alert if you aren't Watching the planet. Previously you would get alerts if you'd even explored the planet<br />
** Thanks to Asteroid for the bug report.<br />
<br />
* In the StrengthCounting code, if there are any planetfactions missing for factions that exist in the game, it now complains about this in more detail so we know what is happening.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed a bug where the game would not correct for missing planetfactions on destroyed planets. This could interact with factions that were added belatedly after planets were already destroyed.<br />
** Thanks to zeus for the report and save.<br />
<br />
=== Dyson Anti-Hacking buffs ===<br />
<br />
* Each time you hack a dyson sphere, the antagonized sphere gets more powerful<br />
* The Antagonized Dyson Sphere now attritions all enemies on its planets<br />
* The Antagonized Dyson Sphere now takes the safest path to the player homeworld, not the most direct, once its been hacked a few times<br />
* Decrease the number of Sentinels you can have from hacking the Dyson; they were felt to be too powerful<br />
** Prompted by GreatYng<br />
<br />
=== Strength Calculation Revisions V1 ===<br />
<br />
* Changes to how strength is calculated:<br />
** Previously, hull health was added in based on a formula that included dividing it by 12. That is now divided by 28.<br />
** Previously, shield health was added in based on a formula that included dividing it by 20. That is now divided by 30.<br />
** The DPS portion of the strength calculation has been left alone for now.<br />
** The final step of the strength calculation was dividing it by 20, but now we're dividing by 16.<br />
** Hopefully this leads to more accurate strength values that better reflect the fact that firepower is king in determining battle results.<br />
** We may need to keep adjusting this, but didn't want to go too far in one direction right away.<br />
** Having increasingly-accurate strength values will lead to better AI decisions, as well as making the odds more clear to human players as well.<br />
** Thanks to Puffin for the suggestions that led to this change.<br />
<br />
=== Overhaul of AI Sentinels Reinforcements And Alert Levels ===<br />
<br />
* The concept of "alerted planets" in this game has always been a bit on the loose side, particularly compared to the first AI War.<br />
** It was hard to tell what planets were alerted, for one thing, and for another, planets were not allowed to reinforce planets that were not on alert. It was a very binary system.<br />
** This in some ways really made it so that deepstrikes were more powerful than they should have been (thanks to those planets never having been reinforced), and even made surprise homeworld assaults too effective.<br />
** In general it could cause issues with too-few reinforcemetns on the map as a whole, which would then lead to tsunami CPAs actually draining the galaxy of AI sentinels mobile ships.<br />
<br />
* We have now added a new AISentinelAlertLevel table, which can be customized or modded, but has alert levels defined in four tiers:<br />
** 1: Lowest Readiness<br />
*** Reinforcement cap: 30%<br />
*** Reinforcement priority: 50%<br />
*** Sentinel command at this planet is unaware of any credible threat to itself within the galaxy.<br />
*** This is most planets until the AI has lost a few planets.<br />
** 2: Distant Readiness<br />
*** Reinforcement cap: 60%<br />
*** Reinforcement priority: 100%<br />
*** Sentinel command at this planet is aware of threats elsewhere in the galaxy, but does not judge that any special precautions need to be taken at this location.<br />
*** This is most planets after the AI has lost a few planets.<br />
** 3: General Readiness<br />
*** Reinforcement cap: 80%<br />
*** Reinforcement priority: 250%<br />
*** Sentinel command at this planet is not aware of any direct threats to itself, but feels that it has a general duty to remain prepared for the unexpected.<br />
*** This is triggered by certain AI structures on planets, such as troop accelerators, raid engines, or an AI overlord.<br />
** 4: High Readiness<br />
*** Reinforcement cap: 100%<br />
*** Reinforcement priority: 600%<br />
*** Sentinel command at this planet is aware of direct and credible threats, and requests aid to defend itself or repair from past assaults.<br />
*** This is triggered in much the same way that the "alerted" status previously was, but now you can actually see it. This is based on having been attacked recently, or being on the front lines against an enemy planet (such as humans, not only humans).<br />
<br />
* A bunch of extra instrumentation has been put into planet serialization logs, to help with any issues we may run into with that.<br />
<br />
* Planets now not only track their current alert level, but also keep track of the last time a reinforcement happened, how strong the last reinforcement was, how many reinforcement events have happened so far this game, and the total strength of all the reinforcements so far this game.<br />
** Note that since this data is only being tracked starting now, it won't have any useful information about savegames that were started prior to this version. It will just tell you how much has happened since you resumed playing in this new version.<br />
<br />
* A new xml tag, triggers_general_readiness_on_ai_sentinels, has been added to unit definitions in general.<br />
** If any unit with this set to true is on an AI planet, then the sentinels on that planet will have a minimum alert level of 3. Even if neutral or hostile to the AI sentinels.<br />
** This is currently applied to: troop accelerator, raid engine, magnifier, superterminal, coprocessor, major data center, risk analyzer, exo wormholes, overlords phase 1 and 2.<br />
<br />
* There is a new CalculateAISentinelAlertStatus() that happens every sim frame and which determines what the SentinelsAlertLevel is on each planet.<br />
** It's valid for SentinelsAlertLevel to be null, which basically is it saying "not relevant."<br />
** "The Distant Readiness" status is calculated instead of "Lowest Readiness" if the AI has lost more than 3 planets.<br />
*** This could trigger immediately, or very nearly so, in galaxies where there are a bunch of other factions, even if they are allied to the AI. The AI does not like losing planets, and doesn't care who took them.<br />
*** A faction having influence over a planet won't trigger this, so generally the other faction would have to be hostile to the AI to cause this to tick up.<br />
<br />
* Previously, the logic for AI Sentinels reinforcements to planets was kind of stupidly simple.<br />
** Essentially if the planet was on alert, which was an invisible status, then it would get an even portion of the reinforcement budget that the AI is working with at the moment. This was... extremely simplistic. In the impossible event that no planets were alerted, it would reinforce the king planet. But that was impossible, so never happened.<br />
** This is being entirely reworked as follows:<br />
*** First, roughly a third of the budget is allocated to alert-level 4 planets.<br />
**** This is divided evenly between all of the tier 4 planets, so the more of them there are, the less of an effect this has. Remember, these used to be the ONLY planets getting any reinforcements.<br />
*** Then, roughly 10% of the budget is allocated to alert-level 3 planets.<br />
**** This is divided evenly between all of the tier 3 planets, so the more of them there are, the less dangerous this is.<br />
*** Lastly, the remainder is applied to planets at random, based on the probability of them needing reinforcement in general as defined by their alert level.<br />
**** So in this step, tier 3 and 4 planets might get more budget from this portion, and in fact are very likely to.<br />
**** This remaining budget is broken up into 10 allotments, which are given out based on whatever pops up.<br />
** Previously, if there was any remaining reinforcement budget after trying to give it to all the planets in question, it would donate this to the CPA budget. This no longer happens. It just saves it for a future reinforcement cycle, now.<br />
** Also a change is that, previously, a reinforcement booster (like troop accelerators) would cause extra budget to be used at the planet in question (thus taking from other planets, in effect). That is no longer the case.<br />
*** Now that extra "reinforcement boost" is just free extra budget, which is how it worked in the original AI War. That's way more in keeping with the theme of what those units are actually supposed to be doing, anyway.<br />
** Additionally, there were a lot of cases where a planet that was "full" could wind up wasting quite a bit of budget that then would just get thrown towards a CPA later on. Instead, that budget is now thrown over to another planet in whatever the current budget category is.<br />
*** So for example, an alert level 4 planet that is already full will wind up donating its unused budget to be spread evenly among the other remaining planets that are alert level 4. And then that cascades on down the priority chain.<br />
<br />
* IAIDefensePlacerImplementation's Reinforce method now requires an int AddedStrength reference parameter, which should be incremented inside that method to let the caller know how much strength actually went up in this case.<br />
** This is a big deal for our proper monitoring of how much strength actually resulted from each reinforcement event, as opposed to how much AI budget was spent on the event (those are two different things, and the latter wouldn't mean anything to the average player).<br />
<br />
* Same with PlaceGuardPosts() on IAIGuardPostAndCommandPlacerImplementation.<br />
** This is used only for reconquest events, but still should be counted in the information that the player can see on reinforcements that happened at a planet.<br />
<br />
* Added a new "Log Reinforcement Event Details" option in the debug section of the personal settings menu.<br />
** Writes the details of each AI Sentinels reinforcement event into your main log. If you suspect something is off with how budgets are being spent or allocated, then this is a way to check up on that.<br />
** This is of particular relevance right now, with the logic all being so new!<br />
** So far, everything that is popping out in the log looks very sensible, so this is good -- that means we can actually release this.<br />
<br />
* In the planet tooltip, the text "AI Reinforcement Points" now says "AI Reinforcement Spots" to be less ambiguous.<br />
** In that same tooltip, it now gives some general information about the time of the last reinforcement of the AI sentinels at that planet, and what its strength was.<br />
** It also shows you the alert level of every AI planet. (Of course, planets you have not explored yet show none of this.)<br />
** If you hold any of the hotkeys that give you medium-or-more details about the planet, then it will show you the description of the alert level, and more details about all the reinforcements that ever happened at that planet.<br />
<br />
* It is possible that, given how reinforcements are being spread out now, that they may need to get a buff to their budget.<br />
** It's worth noting that, given the nerfs we made to the AI budgets in the recent past where the AI can't gift to the reinforcement budget if another budget fills up, this may need a boost anyhow.<br />
** That said, the budgets are being distributed so much more effectively now, and never just shunted over to the CPA budget, so it may actually be okay. We need some feedback on this.<br />
*** This change, of course, may mean that CPAs are substantially less frequent now since the reinforcement budget isn't being diverted to that anymore. It's hard to know just how much that was happening before.<br />
** We don't want to give the AI an unintentional mega buff to their reinforcements, so for now we're leaving the actual budget amounts alone. We suspect it's too low, but look forward to hearing from folks on that.<br />
<br />
* Added a new AIUtilityMethods static class, for ease and efficiency of access of certain things.<br />
** GetGuardingUnitAICostPurchaseCap() has been moved there.<br />
** GetAICostPurchaseCapForBudgetType() has also been moved there.<br />
** And GetAIToPurchaseCostPresentForBudgetType().<br />
<br />
* Previously, the cap on strikecraft strength at AI homeworlds was always 2x that of any other planet. This was insanely too high.<br />
** This has been changed so that it thinks this way for the initial seeding of the galaxy only (so that it starts out strong), but after that it isn't applied at all.<br />
<br />
* Previously, the cap on strikecraft strength guarding an AI-owned former human homeworld was 67% of normal. A nice penalty that makes sense.<br />
** This now applies to the other categories of reinforcements at those sorts of planets, so also turrets and guardians and so on.<br />
<br />
* The AI homeworlds are now constrained a bit by gametime in terms of what their total caps can be.<br />
** They start out at the 0 second mark with their cap set at 50% of the max cap that they will later have.<br />
** Over the course of the first 3 hours of the game, in 10 minute increments, their cap raises from 50% of what it would normally be up to the full 100% amount.<br />
** This keeps the AI homeworlds from getting overly reinforced during the early game in particular, since there are far fewer alert-level-3-and-4 planets at that stage.<br />
<br />
* The reinforcement logic for planets is now more efficient, in that it now early-on discards any planets that don't have open budget for strikecraft or guardians.<br />
** If a planet has reached its "cap for now" as the game progresses, then it basically makes it more likely that a budget event will properly use that budget somewhere else.<br />
** The idea is a bit on the side of efficiency, but it also makes it more likely that the full 10 planets will get their reinforcements at other locations.<br />
<br />
* Thanks to Puffin, Badger, Democracy, StarKelp, Ovalcircle, Burner, and others for the discussions that led to all this.<br />
<br />
* In order to avoid situations where certain planets -- particularly level 4 alerted ones -- get absolutely overpoweringly reinforced, we are making a few changes.<br />
** First of all, the changes in general to reinforcements in this release already help with that a lot by distributing the reinforcement budget to not be SOLELY to alerted planets.<br />
*** Previously, if you had 1 alerted planet, then all of the reinforcement budget for the entire galaxy went to that single planet, and any overflow went to the CPA budget. That could lead to mega-death planets right next door to you.<br />
*** Also previously, if you had 6 alerted planets but had neutered 5 of them and so they were at cap, then the 6th and final one would be in that same situation again of getting all of the reinforcement budget for the entire galaxy and becoming a mega-death planet.<br />
*** Largely our existing changes in this new system already work around this, because those planets would at most be getting 30% of the budget for the reinforcements for the entire galaxy, and the rest rolls over to the rest of the galaxy. That said, it might actually often work out to more frequently be something like 36%, because of the extra weight to these planets in the "random other planets" section.<br />
**** Even so, having 36% of the budget for the galaxy going to one or a very few planets is just bad juju, frankly. Even with the 10% budget for alert-level-3 planets, we were seeing some internal test cases of homeworlds going absolutely wild because of them being too aggressively filled with reinforcements when there were not enough alert-level-3 planets to share the load.<br />
** With that in mind:<br />
*** If there are no alert level 4 planets that are free for reinforcement, then all of that budget (30% of the total) just gets used for random planets.<br />
*** If there are fewer than 10 alert-level-4 planets that are free for reinforcement, then it will shrink the budget proportionately.<br />
**** So in the case of there being 9 valid planets that can receive reinforcements at alert level 4, it will give 90% of the usual alert-level-4 budget. In the case of 4, it gives 40% of that budget.<br />
**** In the even that there are fewer than 2 planets, it will never give less than 20% of the budget. So for 1 or 2 planets, those both get 20% of the overall 30% slice, aka 6% of the final galaxy budget. And they may pick up an additional (100-16 = 84/10 = ) 8.4% from the "random assignment to planets" logic.<br />
*** If there are no alert level 3 planets that are free for reinforcement, then all of that budget (10% of the total) just gets used for random planets.<br />
*** If there are fewer than 5 alert-level-3 planets that can receive reinforcements at alert level 3, then it will shrink the budget proportionately.<br />
**** So if there is 1 out of the 5, then the budget is naturally 20% of the full 10%, and so on.<br />
** Additionally, if there are fewer top-tier (alert level 4 or 3) planets being reinforced, then the number of "desired unique random planets" now goes up by an equivalent amount.<br />
*** So for instance, if there are no alert-level-4 planets at all that have room for more reinforcements right now, then the number of random planets being reinforced goes up by 10 (from the original count of 10 to 20).<br />
*** With this, it keeps the overall "ambient reinforcements" more widespread, rather than giving a larger budget to just a few random backwater planets.<br />
*** This may be overly cautious, partly because those planets already have an alert-level-based cap on their total reinforcement amounts allowed, but we figure it can't hurt to be too cautious.<br />
** Overall, depending on how things play out, these changes should help to make it so that no one single planet gets so overwhelmingly strong, but the overall danger of the galaxy grows more realistically instead.<br />
*** Do bear in mind that the same number of units are being sent out anyhow, so this is just about where they go. Although in the past, sometimes it was sending the excess budget to CPA budget instead of units, so there may be more raw units in actual practice in some games (late into those games).<br />
*** Also please bear in mind that this doesn't create a "doomsday clock" where the entire galaxy will fill up. Rather, instead a CPA will come through and periodically clear out a LOT of these units, since CPAs specifically use existing guards rather than generating new units of their own.<br />
**** This will probably work best with the Tsunami CPAs on, which might should be the new default, but we shall see with time.<br />
**** It may also be that without the budget coming from stuck-reinforcements, that CPA budgets feel too small now on their own. It's hard to say. If that's the case, then we can up the CPA budget.<br />
*** At any rate, with Tsunami CPAs on, in recent versions we could sometimes run into cases where the galaxy was literally empty of any mobile guards right after a (smaller than it should have been due to lack of guards to free) CPA. That should no longer be a concern, but it should still thin out the guards in a way that helps counterbalance what would otherwise be a doomsday clock.<br />
*** Some of this will still just frankly take some testing, to see if we're missing anything. A lot of the variables here are based on your playstyle, the map types involved, how high the AI difficulty is, and many other difficult-to-predict factors. We did our best to account for as many edge cases as possible.<br />
** Thanks to UncleYar, smidlee, Strategic Sage, and arnaud_defrance for pointing out some of the issues that could happen with the old alert system, so that we could account for those in this system.<br />
<br />
* The description for the Troop Accelerator has been completely rewritten.<br />
** It used to say: The AI gets additional reinforcements on this planet.<br />
** It now says: The AI Sentinels are far more likely to reinforce this planet, and every time they do any reinforcements here, they get an extra 50% budget for free.<br />
** We are keeping this functionally the same for now. These will likely be intense, which is the idea. They are also rare.<br />
<br />
* GetIndexOfMostAnnoyingFaction no longer takes a boolean as its second option, but instead takes a AnnoyingFactionFlags flags parameter. <br />
** This allows for us to make more precise requests for what kind of annoying faction is required.<br />
** The two options at present are:<br />
*** DefaultToRandomNonHumanHostileFaction, which works the same as the boolean used to.<br />
*** AIMustBeAbleToSendWavesAgainst, which excludes a few factions like the macrophage and devourer, which might be very annoying at a planet but which the AI can't send waves against.<br />
**** We now use this new flag on raid engines to prevent them from getting into a situation where they want to fire, but cannot because the most annoying target on their planet is something that they can't fire at. Now they will fire, if a less-annoying-target on that planet is present that they can launch a wave against.<br />
<br />
* Raid engines previously were set to fire as soon as there were any hostile enemies on the planet with the raid engine, which was WAY too sensitive. That isn't what raid engines used to be.<br />
** Updated their description from this: Causes extra waves to be sent against anyone who has units on this planet, after a short delay.<br />
** To this: While the AI Sentinels on this planet are at alert level 4, they will spawn waves against the strongest viable aggressor every two minutes or so.<br />
** Additionally, raid engines now trip after being aggro'd for only 2 seconds, rather than the previously-required 30. Now you have to actually get them to a state of alert level 4, which takes far more doing, so they need to respond faster.<br />
<br />
=== Deepstriking (AI Reserves) Updates ===<br />
<br />
* Planets now keep track of the last time they were owned by a human, the last time they were owned by the AI sentinels, and the number of "major AI structures" that are currently on a planet.<br />
<br />
* There is a new is_major_ai_structure boolean that can be set on ships. If this is true, then they will count as "major AI structures" for the above.<br />
** Guard posts, the AI King command station version (not phase 2 mobile), AI command stations (normal and reconquest) all automatically get counted as this.<br />
** Other major structures for the AI are explicitly defined as: warp gates, AI eyes, troop accelerators, black hole machines, AI fortresses, AI superfortresses, raid engines, alarm posts, and magnifiers.<br />
<br />
* The way that "a deepstrike is happening" is calculated is a lot more complicated now, but actually does a better job.<br />
** Previously it was "players have a big force X distance away from planets they own."<br />
*** That might sound elegantly simple, but the problem is that if you have a planet you own way out in the middle of the AI empire and you lose that planet, suddenly you're deepstriking and getting hit by AI Reserves unexpectedly.<br />
** Now, if the humans own the planet, or have owned the planet within the last 20 minutes, then for purposes of deepstriking calculations it acts as if you still own it.<br />
*** That gives you 20 minutes (gametime) to get your planet recaptured before it starts thinking of you as being in enemy territory. Even if the AI recaptures the planet during that 20 minute period, it doesn't matter.<br />
** But wait! What if you are using "aggressive command station" placement? Basically, where you go hard into an AI planet, pop their command station, and throw your own up as fast as possible... before dealing with the entire rest of their planet.<br />
*** That's fine, but it will now still count as deepstriking. So if the AI Reserves were going to come for you, they'll still come for you if you use this tactic.<br />
*** Essentially, if there are any "Major AI Structures" (as defined above) on a planet, then it will NOT count as a human planet, even if it is currently a human planet. And this overrides the grace period, too.<br />
*** Actually, this means that if the AI recaptures the planet, it will be overriding the planet while it has its new command station and guard posts there. You have to kill those first, and then your grace period resumes (if you had 5 minutes left after doing that killing, then you have those 5 minutes left).<br />
*** It also means that if somehow the AI buys something from the Zenith Trader on a planet that is neutral that you then take, or something crazy like that happens, then it could wind up blocking you. That's way less likely, though.<br />
** The overall goal of these changes is to make deepstriking detection more accurate, and prevent the AI from sniping your command station and taking advantage of you... and to keep you from sniping their command station and taking advantage of them.<br />
** Thanks to Badger, zeus, Strategic Sage, Smidlee, and others for ideas on this, and Arides and Asteroid for reporting the initial issue.<br />
<br />
* In the planet tooltip, if a planet has any major AI structures on it, it now shows that number.<br />
** If you hold any of the hotkeys that show more than basic detail, then it will also list what those structures are.<br />
<br />
* In the planet tooltip, if a former AI homeworld is now owned by nobody or owned by someone else, it now says it was a former AI homeworld.<br />
** Same deal for if the planet was once a human homeworld.<br />
<br />
* In the planet tooltip, if a planet was owned by humans within the last 20 minutes, but is not currently owned by them, it shows how long ago it was owned by humans.<br />
** It also tells you that "Deepstriking reprisals, if relevant, will not take place until it has been 20 minutes"<br />
** If humans owned the planet longer ago than that, it now shows how long it has been since humans owned it, but in a drab sort of green, and without the nice message about deepstrikes.<br />
<br />
=== Mod Updates: Extended Ship Variants by NR SirLimbo ===<br />
<br />
* Fixed the "Elctro-Strike Corvette" (typo).<br />
** Thanks to crawlers for reporting on Discord<br />
<br />
*Fixed the Oculus being overpowered. Its damage modifier to enemies over 2 minutes at the planet has been reduced from 3 to 2.5, and its energy use per 1x added multiplier increased from 2500 to 3500.<br />
** If this needs further adjustments, feedback is welcome.<br />
** Thanks to ArnaudB for reporting on Discord<br />
<br />
'''For the Fallen Spire Extended Ship Variants Mod:'''<br />
<br />
* Reduced the health and shield of the EMP Missile (from the EMP Missile Frigate) from a base of 5000 each to a base of 100 each (reduced by 98%) since there was no way to shoot them down, ever.<br />
** Also disabled the EMP Missile from having Strike Craft status, which means health (unless default settings were changed) goes down to actual 200 combined instead of 20000 (wow, 99% reduced health now!) and damage goes down from 750 to 500.<br />
** Background is that these missiles come in a swarm that's supposed to get some missiles shot down. Which, at the speed versus time to kill was impossible unless the entire enemy fleet had nothing to do other than point defense.<br />
<br />
== Version 2.608 MP Deduplication And Bugfixes ==<br />
(Released October 7th, 2020)<br />
<br />
* Make it even harder for the zenith trader to be killed improperly<br />
** Thanks to Mckloshiv, Fritz1776, and GreatYng for reporting<br />
<br />
* Made the "Coroutine container not configured... did you forget to call Init?" message not something that just goes to the player log, as that was really confusing.<br />
** That actually now self-repairs, in cases where it may have had a problem for whatever reason. This had to do with dropdowns hiding themselves and not always doing it properly.<br />
** This was probably invisible as an actual error, but probably left the dropdown visible when it should not have been.<br />
** Thanks to A Classy Mushroom for reporting.<br />
<br />
* Fixed another bug that could happen during "UIBehaviour.IsActive()" when dropdowns were being hidden in some contexts.<br />
** This was probably invisible as an actual error, but probably left the dropdown visible when it should not have been.<br />
** Thanks to A Classy Mushroom for reporting.<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a potential source of multiplayer desync in the trade code.<br />
** Fixed a long standing source of 'stutter lag' in the Trade Station Creation code.<br />
*** 'Stutter lag', for lack of a better term, is when ship movement looks to be moving like a power point presentation.<br />
*** It was notably frustrating to hunt down because it can happen even without any slowdown, at 100% speed even!<br />
<br />
* Fixed a very unexpected error that could happen in DoAICounterattackForcesPerSecondLogic(), which we instrumented yesterday in order to find where the error could be, but did not actually fix anything with. Turns out that ShipGroup_WavesFromHere_Normal's draw bag could sometimes return a null result. We now continue trying to pull a non-null result for 30 tries if this happens for some reason, and then if it is still null then skip the parts that would throw errors.<br />
** Thanks to Democracy and Puffin for reporting.<br />
<br />
* Fixed a severe multiplayer bug that was leading to a wide range of issues, mostly involving having a lot of extra ships that should not exist on the client.<br />
** These involved unloading ships from transports, ships coming out of guard posts, ships spawning from waves, ships spawning in hacking responses, turrets being placed in bulk batches by the player, and assumedly other cases as well.<br />
** Essentially in all of these cases, the client and the host wind up with different values for their PKIDs of those units, and thus on the client the units get deleted and the host sends over the proper copies that they have created.<br />
** The problem was, the client was doing the deletions in INCREDIBLE slow motion. It would remove those ships at a rate of about 1 per 3 seconds, rather than "all of the ships that are erroneous go away every 3 seconds."<br />
** The reason for this is how we are ruthlessly scrubbing out the existence of these ships; it was breaking out ability to loop over the full list of ships properly. So we instead gather up the list of ships first, then ruthlessly delete them, and all is well.<br />
** There are still going to be spurious brownout notices that pop up at the moment, and extra ships that appear, but they should only last about 3 seconds and so should not cause any major lag or other problems, unlike what was happening before.<br />
** Our PKID allocation chain is going to be revised in order to completely bypass this sort of problem in general, but we first wanted to fix this issue since whenever there IS a problem, the game is supposed to be able to repair itself, and so these problems sticking around longer and being easy to reproduce (in the end) were a golden opportunity for us to make sure all that works. Now it does.<br />
*** When the PKID allocation chain is reworked, there won't be those spikes of deletions and recreations, or those spurious brownout notices. Until then, that will be an ongoing minor annoyance.<br />
** Thanks to OzoneGrif, Puffin, Democracy, 𝔳☆𝔩𝔱𝔞𝔤𝔢, and probably others for reporting.<br />
<br />
* Added in a variety of logging on deserialization and serialization surrounding "MinorFactionCommon Data," so that we can tell by manual review a bit better if something is off.<br />
** Same for all of the various AI faction externaldata, for the common case, sentinels, warden, hunter, PG, AI budget item current config, and AIP history.<br />
** Then same for the external factioncommon data. And fireteam data. And some ship stuff. And some transported ship stuff. Wow.<br />
<br />
* Made some improvements to how the deserialization logging works for super old-school data formats from back in April and before (April of this year was like 10 years ago, right?).<br />
<br />
* Fixed some very old savegames not being able to load because of missing "Lesser ZenithMatterConverter".<br />
** There are a few spotty savegames from a long time ago (1.302 and 1.304), or from right around 2.600, which don't load for mysterious reasons.<br />
** This seems probably to have something to do with the changes to how we started reading ExternalData in during the post-2.600 betas, but we can't find any errors in code review, and looking at the actual data in the serialization logs isn't giving us anything useful.<br />
** We're not sure if it's possible to actually cause a broken savegame with the current builds or the last few builds that have been public. And most other older savegames except right around those exact version numbers also seem to work just great.<br />
** There was a much wider range of older version numbers that were breaking until today, based on some things that could be null, but those are all fixed now. The remaining issues are all centered around those specific versions.<br />
** Oh man! Wait, we just wasted a fair bit of time. Actually, version 2.600 saves were known-bad and we can't fix those because of the nature of that error: https://wiki.arcengames.com/index.php?title=AI_War_2:Multiplayer_Alpha_And_Beta#Version_2.601_Savegame_Hotfix<br />
** However, the version in the 1.302 to 1.304 range we're not sure what is wrong with. Those are old and don't seem to affect much of anyone, though.<br />
** Thanks to myrion1 for reporting.<br />
<br />
== Version 2.607 MP Stability, Exo Syncs, And Limbo Mods ==<br />
(Released October 6th, 2020)<br />
<br />
* The Imperial Spire is now better at ending games with crazy-strong AIs<br />
** Thanks to Isiel for reporting<br />
<br />
* The Nanocaust's ability to get turrets and some bonus ships is now the default behaviour<br />
<br />
=== Exo Syncing with AI attacks ===<br />
<br />
* If an Exo is pretty close to done when a CPA or a Wormhole Invasion is also close to being ready, the Exogalactic Strikeforce will sync itself to the AI attack so they'll launch at the same time. The goal of this is to get some particularly epic moments, where the Exo punches a hole in your outer defenses and the CPA floods through to your backline (or the CPA distracts your fleet while the Wormhole Invasion destroys your backline).<br />
<br />
* Once the sync happens, the Exo Notification will begin to lie to you about the charge percentage; instead of measuring its actual strength it will instead fudge numbers so that it will hit 100% when the CPA hits.<br />
** The goal is to make sure that you can't tell easily that the sync has happened before it's announced<br />
<br />
* When the CPA/Wormhole Invasion is announced, the Exo notification will tell you that it's sync'd to the strike, but until the CPA/Wormhole Invasion notification appears you won't know.<br />
<br />
* Exos that are syncing are still capped at their intended strength (so if the Exo waits an extra 5 minutes, it won't be stronger than usual. If an exo launches early then it will be weaker than usual)<br />
<br />
* This behaviour is only available for AIs at difficulty >= 7<br />
<br />
=== New Off By Default Mod: Extended Ship Variants by -NR- SirLimbo ===<br />
<br />
* Adds 13 more Strike Craft and 4 Frigate ship lines.<br />
** Ship variants are balanced further towards Medium Hull and less-used Weapon Tech groups to make them an alternative to the default Fusion-Generalist-Concussion combo.<br />
** The FRS Ship Lines do not have fleet-wide bonuses but are low-AIP by comparison and very powerful, and offensive damage multipliers increase with mark level.<br />
<br />
* Strike Craft:<br />
** Obstructor Wing -> V-Wing variant which deals more damage to slow enemies.<br />
** Strike Wing -> More agile and higher-damage but lower-durabiltiy raid-VWing variant<br />
** Oculus -> Eyebot variant with improved damage to a planet's idle defenders<br />
** Vex Guard -> Shieldless Vanguard variant that deals more damage the lower its health goes<br />
** Cannon Bot -> Higher-range and very high-damage Gunbot variant with very slow reload during which it can re-cloak<br />
** Elctro Strike Corvette -> Inhibiting Tesla Corvette variant dealing full damage every attack distributed to all enemies hit<br />
** Fortified Agravic Pod -> Uncloaked Agravic Pod variant which is almost invulnerable from afar<br />
** Ablative Artillery -> High-range and damage variant of the Ablative Gatling with higher damage if the target is further away<br />
** Metabolizing MLRS Corvette -> MLRS Corvette variant that grants metal when enemies it attacked enough die<br />
** Tracker -> Shorter range Raptor variant with decloaking capabilities and longer-lasting ambush modifier<br />
** Space Bomber -> Uncloaked Space Plane variant with better radar dampening and high damage against heavy enemies<br />
<br />
* Frigates:<br />
** Translocator Sniper Frigate -> Tritium Sniper Frigate variant which knocks back even larger targets and deals bonus damage if the target very far away, at the cost of other damage<br />
** Shredder Frigate -> New Melee-Frigate type with very durable shields and high damage, even more if the target's hull is low<br />
** Sharpener Frigate -> Shredder Frigate variant with much lower damage but the ability to amplify all allied attacks upon its target<br />
** Wedge Frigate -> Anti-Large Shredder Frigate variant with greatly improved hull and damage against heavy targets, but no shields<br />
<br />
* FRS-Only Strike Craft:<br />
** Alpha Strike Wing -> Strike Wing variant with much higher stats and longer-lasting buffs, and of cause greatly enhanced ship cap for a mere 20 AIP<br />
** Void Bombers -> Space Bomber variant with perfect and very-close-range radar dampening, combined with overall enhanced stats for a mere 30 AIP<br />
<br />
=== New Off By Default Mod: Extended Ship Variants For Fallen Spire by -NR- SirLimbo ===<br />
<br />
* Requires The Spire Rises (DLC1)<br />
<br />
* Adds 5 more Strike Craft and 1 Frigate ship line for any player's taste, similar to the Vanilla variant. Naturally it requires Fallen Spire to be installed and enabled.<br />
<br />
* Strike Craft:<br />
** Beam Bombard -> Bombard variant with a higher-range multi-railcannon attack well suited to destroy Strike Craft and strong shields, though slower and with very low hull<br />
** Compact Bombard -> Smaller, lighter, faster, cheaper and lower-range Bombard variant with on average higher ship counts. Attacks are weaker but faster too, intended for players who dislike the Bombard's lethargy<br />
** Cloaked Viral Shredder -> Viral Shredder variant with cloak and the ability to attack up to 6 times without revealing itself. Naturally its replicants are able to do the same. In return loses a lot of durability<br />
** Parasitic Viral Shredder -> Replicates everything: Itself when attacking, and enemies via Zombification. Naturally its replicants are able to do the same. Has lower damage and ship counts to compensate<br />
<br />
* Frigate:<br />
** EMP Missile Frigate -> Similar to Lighting Torpedo Frigates or Tackle Drone Launcher Frigates launches very fast EMP Missile-Drones that disable enemies, even up to underweighted Frigates<br />
<br />
* FRS-Only Strike Craft:<br />
** Rail Bombard -> Very high-range Beam Bombard variant that deals high ambush and anti-Strike-Craft damage. Much slower, but in the middle of a planet can just about attack everywhere at once for a mere 35 AIP<br />
<br />
=== Bugfixes ===<br />
<br />
* Since Steam networking has a 512kb limit per message, kind of arbitrarily baked in from what we can tell, we're working around that by splitting any messages that are larger than (512kb minus 100 bytes) into multiple fragments for reassembly on the other side.<br />
** The only known way to hit this right now is with a sufficiently large savegame, and so this should probably only happen from client to host. But technically it can happen in either direction.<br />
** Our logic for doing the fragmentation and adding extra header information onto each fragment for reassembly on the other end seems to be successful, but we have not yet taken the steps to actually reassemble it and read in the interior message yet on the receiving end.<br />
** Another challenge we ran into before that is that we get a mysterious "limit exceeded" result back when we are sending two large messages (aka the two fragments) too close behind one another. The documentation just has a cutesy "too much of a good thing" note as an explanation, so no idea what is actually happening there, or what the real limits are.<br />
*** To work around THAT, we hang onto whatever the fragment is that it is failing to send, sleep the current thread for 10 milliseconds, and try again. We do this for up to 400 times if required, but so far in our testing it takes between 42 and 46 tries before it actually gives us a proper result.<br />
*** It's important to stress that this would have been an incredibly roadblock if we were actually having during-gameplay code running into this more, but for now this seems to be a minor annoyance in some edge cases.<br />
*** Next step is actually reconstituting the internal message on the receiving end from the fragments.<br />
<br />
* Added a new setting to the Network section of the personal settings screen: Log Fragmented Messages<br />
** Depending on the networking framework you are using, there may not even BE any fragmented messages (or rather, there are, but they are handled well below our code). In certain cases, such as anything over 512KB being sent on Steam, we have to do our own fragmentation. <br />
** This fragmentation is pretty much limited to just the initial sending of exceptionally large savegames across the network. When this option is on, then any fragmented messages that are sent or reconstituted will be written into the PlayerData/NetworkFragmentedMessages folder. If there is some sort of problem, then by enabling this on all the involved computers and then comparing the files with the same names helps us figure out what is going on.<br />
<br />
* The fragmented messages that are able to be sent now are properly reconstituted on the other end.<br />
** Several messages from difference sources can be sent or received at the same time, if needed.<br />
** This really should only apply for basically one message (initial world sync on Steam on some savegames) during a typical session, but it makes it so that those savegames once again finally work.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Previously it was possible for GetCurrentDefensePlacer() or GetAIDefensePlacerForPlanet() to throw an exception during map generation in various circumstances.<br />
<br />
* Previously it was possible for two instances if GenerateMap to be called simultaneously in some circumstances when you started the game from the lobby or started a quick start, which led to all sorts of chaos.<br />
** At worst, it should now run those back to back. But in general it should avoid the second call and save you something like 0.8 to 1 seconds of load time.<br />
<br />
* The "A Twisted Enemy" quickstart has been replaced with a version that no longer has “Super Strong” accidentally enabled on it.<br />
** Thanks to Ovalcircle, smidlee, and ArnaudB for reporting.<br />
<br />
* GenerateMap() now gives better errors if it has any, and there are several more places where it repairs bad data if it can't find things it was expecting.<br />
** This often applies to something like trying to load a savegame into the lobby for editing when it includes explicit content from DLC or mods you don't have.<br />
<br />
* If you try to load a savegame or quickstart into the lobby and it requires mods or expansions you don't have installed or enabled, then it will give a nice error message complaining about that rather than a hodgepodge of death error messages.<br />
** Thanks to Spyrooooooo for reporting.<br />
<br />
* Fixed a longstanding oversight where the "number of times a save has been loaded" was not being incremented if you loaded it via the continue button.<br />
<br />
* Made it so that if a savegame metadata file line fails to parse, it will not be treated as a fatal error and will instead just move on past it.<br />
** Thanks to Ovalcircle for reporting.<br />
<br />
* Put in a bunch of improvements to UpdateVisualObj() to prevent cross-threading exceptions that could still happen, and also put in more instrumentation so if a future error happens we will know more where it is. Also this should be less disruptive to gameplay if it ever does happen, now.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Put in a bunch of extra debug logging in DoAICounterattackForcesPerSecondLogic() for if there are any errors in there. It won't fix any of them, but will make them less disruptive to game flow, and also will give us more information on what to fix.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Fixed one more oversight in DoForSelected() that could still lead to cross-threading exceptions.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Previously, if you had multiple AIs and then removed one of them, it would leave behind an extra Praetorian Guard faction that would then error out. Now, when you remove the extra AI faction it will also remove the extra PG subfaction.<br />
** For existing lobbies that are unable to start, you can hit Reset To Defaults in order to work around this.<br />
** Thanks to Fenrakk101, Badger, GreatYng, and Asteroid for reporting.<br />
<br />
* Added a new remove_if_more_than_one_per_ai_prior_to_this field for factions, which is set to true for the hunter, warden, and praetorian guard sub-factions.<br />
** This causes any extra of those sub-factions to be removed when you load up your lobby settings or quick start or whatever it is that you're loading into the lobby.<br />
** This makes it so that existing bad data doesn't require resetting to defaults to get back to it.<br />
** Thanks to GreatYng for the settings file that let us fix this.<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where some turret types were using incorrect tech types.<br />
*** Thanks to crawlers on Discord for the report.<br />
** Fixed a bug where some External Data values that could sometimes be negative were always assuming they were positive.<br />
*** Thanks to SirLimbo for the report.<br />
** Finally fixed a bug that could result in the raid notification causing an error on mouseover/click.<br />
*** This was due to a race condition that I was failing to account for.<br />
*** Thanks to Badger³ for helping to finally fix this.<br />
<br />
* Fixed a variety of client-side issues in multiplayer that were triggered by building custom fleet leaders on the client.<br />
** Prior to now, those would cause the game to lose sync fully and spam errors to death.<br />
** There was a whole huge cluster of things that could probably cause this, but the custom fleet leaders was the simplest reproduction case. All of the other cases should also be resolved now.<br />
** Thanks to RocketAssistedPuffin and 𝔳☆𝔩𝔱𝔞𝔤𝔢 for reporting.<br />
<br />
== Version 2.606 Lurking And Influencing ==<br />
(Released October 5th, 2020)<br />
<br />
* Improve hunter fleet lurk planet finding logic<br />
<br />
* Improve Astro Train depot/train spawning logic to prevent them from spawning on weird places<br />
** Thanks to GreatYng and GophTheGreat for reporting<br />
<br />
* Improve fireteam logic at detecting when their ships are ready to attack<br />
** Thanks to Democracy for the bug report<br />
<br />
* Fix a several bugs where CPAs could wind up allied to seemingly random other factions. <br />
** Note this fix applies only to freshly started games; in progress games will still have this<br />
** Thanks to Isiel and Ovalcircle for reporting<br />
<br />
* Fix a bug where click on a Notification for a Dark Spire Locus you couldn't see would still show you which planet it was on<br />
** Thanks to GreatYng for reporting<br />
<br />
* A planet can now have multiple minor factions with Influence on it. The game will automatically sort the factions with influence and use the strongest minor faction as the thing to show on the galaxy map.<br />
** This should solve periodically seen problems with planet colour flickering between faction colours.<br />
<br />
* Hopefully high-level astro train carrier variants now will produce drones.<br />
** Thanks to GreatYng for reporting and Puffin for suggesting a solution<br />
<br />
* Fix a bug with the Nanocaust getting units they should not, including Astro Trains and Antagonized Dyson units<br />
** Thanks to GreatYng for reporting<br />
<br />
* Minor buff for the nanocaust if it's stuck on one planet<br />
** Thanks to ovalcircle for reporting<br />
<br />
* Add a new Galaxy Setting under 'scouting' to allow your allies to share vision with you<br />
** Thanks to the appropriately named Lux Imperia for reporting<br />
<br />
* In the science screen, there are two new numbers on the bottom row which are 'number of offensive ship lines that can be upgraded' and 'number of defensive ship lines that can be upgraded'.<br />
** Badger found himself often wishing for that information, since the strength estimator doesn't tell me how many lines there are.<br />
<br />
* Put in changes to the Facepunch Steamworks wrapper to change k_cbMaxSteamNetworkingSocketsMessageSizeSend from 512 kb max send size to instead be 512 MB.<br />
** As feared, this did not work. To override this limitation we would instead have to recompile the C++ client-side files for Steam itself, and we're not sure we could actually do that, since only the networking portion is open-source.<br />
** We could ask Valve about this, but the nearest time a change would be in place that could affect this positively would be "whenever they next do a developer SDK update," which is a very different schedule from their public client update schedule.<br />
** It's possible that we could also use some form of decompiler to alter the existing .dll (windows), .bundle (OSX), and .so (OSX and Linux) files and change the value of this one precompiled constant int32 in the version that we distribute with the game, but that risks messing up other things that are working fine right now. And it's probably a TOS violation for us to do that, though it would likely be a harmless one. Then again if someone started using that in a way that adversely affected Valve's networks, we'd be in major trouble, so best to punt on that entire line of thinking.<br />
** So with that in mind, we're going to just have to work around the 512kb-per-message send limit on Steam as a hard limiter for now. This will take a bit more engineering to do, but it's not the end of the world. We used to have such things for the original AI War because network card drivers were such that this volume of data often swamped their internal buffers, so this is not a new problem. It's just unexpected in this context since we missed this obscure reference in the documentation of one of our three network libraries in use here.<br />
<br />
== Version 2.605 Hunter Intelligence ==<br />
(Released October 2nd, 2020)<br />
<br />
* Planet In Combat notification improvements<br />
** The Hacking notification tooltip now includes strength data about the enemy hacking response, so you can just hover the tooltip without going to look at the hack, if you are multitasking<br />
** Planets with at least 5 strength in your turrets are now eligible for Planet In Combat notifications, even if you do not own those planets.<br />
*** The goal is to also cover Beachheads, and planets where you are still fighting but the AI just sniped your command station.<br />
** Thanks to Burner for the suggestion<br />
<br />
* New cheat codes:<br />
** 'instacpa' --> spawns a CPA in 30 seconds. Perfect for trying out the new tsunami CPAs.<br />
** 'destroyp,planet name' --> destroys the planet listed. Works like findp. <br />
<br />
=== Flavor Improvements ===<br />
<br />
* The ARS and Tech Vault now have more flavour in their description, and their associated hacks. <br />
** The ARS updates contributed by Puffin<br />
<br />
* Thanks to UncleYar for reminding us about this<br />
<br />
=== Intelligence Buffs ===<br />
<br />
* Hunter Intelligence improvements at higher difficulties (specifically when targeting player) at higher difficulties (>=7)<br />
** Hunter fleet now prefers to go after critical targets like GCAs, MDCs, Zenith Power Generators, etc... rather than just thinking EXTERMINATE! EXTERMINATE!. <br />
** The AI will begin to prefer critical targets over just killing player planets at 6 and 7, but the effect is weak and entirely absent in the early game. It's a much stronger preference at difficulties 8-10.<br />
** If loss of a particular command station would put the player into brownout, that is always a valid target.<br />
*** As a result of these changes, the hunter fleet should be less willing to attack you except over something you really care about, so baiting the Hunter to wear them out should be harder unless you really take a risk with the bait.<br />
<br />
* Note this behaviour is controlled by the Hunter Fleet Difficulty, so you can play AI 9 Hunter 7 if you don't enjoy this behaviour. <br />
<br />
* Fireteam intelligence improvements<br />
** Make Fireteams willing to wait a bit longer between switching targets. I think this was preventing them from properly gathering their strength to strike<br />
** Improve Fireteam intelligence for determining whether they should take a battle and when they should reteat. Should be a buff to all fireteam-using factions. They were often attacking players in particular without enough strength to break them<br />
*** Done as an additional improvement when updating the Hunter<br />
<br />
* This section brought to you by Burner, who wanted the Hunter to be more evil<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an error in the tooltips for CPAs where non-tsunami and tsunami tooltips were reversed. Confusion!<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Fix 2 problems with the Nanocaust Lich. First, its guns now have at least as long of range as its tractors. Secondly, its tractors are slightly nerfed to no longer be able to grab Battlestations <br />
** Thanks to crawlers for reporting<br />
<br />
* Fix a number of bugs related to the allegiance of AI-allied minor factions during a civil war, causing them to ally with one AI in particular<br />
** Thanks to Nyteblade and GreatYng for reporting<br />
<br />
* Fixed an issue with the Dark Spire ships that humans were able to hack for. Essentially, the does_not_use_multipliers_from_mark_level flag was being inherited from the dark spire faction versions, so this made all faction levels act the same. Now they properly upgrade their stats over mark level increases.<br />
** In addition, all of the dark spire human ships now get upgraded by the Heavy tech type. But they still remain without weapon techs (you have to use fleet upgrades to get them the rest of the way).<br />
** Thanks to julian509 for reporting.<br />
<br />
* Fixed a bug in multiplayer faction sync that would mess things up quite royally if you had much in the way of tech history for a faction and also speed groups.<br />
** Thanks to Tzarro for reporting.<br />
<br />
* Fixed a general nullref exception that could happen in cross-threading cases in SquadWrapper's GetSquad() method.<br />
** Why NRSirLimbo always hits these is a mystery, but thanks to him for reporting it!<br />
<br />
* PreCalculateAllRepairableTargetsForPlanetFaction now actually gives better error messages if something goes wrong.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Data is probably very broken is this happens anyway, but it should no longer be possible for exceptions to happen during GetHasRelationshipWith() checks between two factions.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* There are several groups of spurious "we had a network error" messages that should no longer appear when clients and hosts disconnect while in the middle of trying to send a message.<br />
<br />
* It was not super common, but it was possible in multiplayer to have it silently fail to send a message from the host to the client for various reasons, and no error was shown anywhere and it just looked like they were connecting infinitely.<br />
** This now actually shows an error message, so that we know what's up and people don't waste time just sitting there.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Our serialization buffers in general now do a more accurate and efficient job of expanding their capacity when they need to.<br />
<br />
* Discovered that Steam networking is only willing to SEND up to 512kb of data at a time, thanks to a const k_cbMaxSteamNetworkingSocketsMessageSizeSend, even though it's willing to take in more data than that and can send messages that are larger than that if not for this one random constant.<br />
** This is... really irritating, to be honest. We'll have to see how to best work around this, but this was not clearly documented at all and in fact seems to have gone against what we thought their networking protocol was.<br />
** Our other two networking libraries don't have this limitation, so building in a workaround for just Steam (admittedly the majority case) is annoying either way.<br />
** This is going to take us a bit to figure out how best to handle; this is literally a limitation purely based on a config setting that is hardcoded into the Steam API at the moment, so that's... not our favorite thing. We may simply be able to recompile the wrapper libraries, though, we're not sure.<br />
** Thanks to Andyroo for discovering this limitation.<br />
<br />
=== Included Mod: Civilian Industries By StarKelp ===<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where hacking a Civilian Beacon when there were already existing Civilian Subfactions would sometimes fail to activate yours.<br />
** Fixed a bug where Traders would try to trade with crippled structures.<br />
** Fixed a bug where Resources could randomly be regenerated as the game goes along.<br />
*** This fix may result in one more resource regeneration upon loading an old save. One day these resources will cool off.<br />
<br />
* Fixed a bug where civilians wouldn't stance to help allied attacks.<br />
** This was a conflict of interest with the new logic that was put in place to make them group up around wormholes before attacking, instead of trickling in and dying constantly.<br />
** Thanks to ussdefiant60 on Discord for the report and save.<br />
<br />
== Version 2.604 A Thousand Screaming Idiots ==<br />
(Released October 1st, 2020)<br />
<br />
* Add a Tip of the Day reminding players they can change their starting planet in the custom game lobby<br />
** Prompted by a discussion with Fenrakk101<br />
<br />
* Make the 'bait the hunter into a meatgrinder on a player planet' strategy a bit less effective on Hunter difficulty 8 or higher<br />
<br />
* The hunter fleet type that was previously Kamikaze has been renamed to Reckless. This avoids some confusion.<br />
** Thanks to crawlers and Puffin for suggesting.<br />
<br />
* The "overconfidence ratio" of the AI is something that has it overestimate the competence of its own forces and charge in in various situations where the strength values are not exactly equal-or-in-its-favor.<br />
** For difficulty 6, the value has long been 2.0. For all other difficulties above that, it has been 1.0.<br />
** For difficulties 8 and above, the value is now 0.9.<br />
** It has been pointed out to us that not all strength is equal, and leaving some margin for error in there to account for potentially strengths and weaknesses playing a bigger role is a good idea. Let's really make sure the AI is going to smash them.<br />
** Bear in mind that this only applies to the regular threat controlled by the sentinels, and the hunters and warden use their own separate logic.<br />
** Thanks to TechSY730 for suggesting.<br />
<br />
* In external constants, there is a new field called strength_multiplier_for_turrets. It is by default now 2.<br />
** This basically makes the apparent strength of all turrets twice what they have previously been estimated to be. Turrets are observed to have a number of advantages when absolutely wrecking enemies, so this should more accurately reflect reality. We look forward to future suggestions on more accurate numbers here.<br />
** Individual turrets are still able to have their own strength_multiplier, and this is still added in for those on top of the general turret bonus.<br />
** Thanks to Badger, Puffin, zeusalmighty428, and others for helping with this idea.<br />
<br />
=== "Tsunami" CPAs ===<br />
<br />
* Add a new Galaxy Setting, "Tsunami CPA". This setting can be applied to ongoing games, but is off by default. If people like it, this can become the default mode (and the old mode can be enabled with a setting)<br />
* When enabled:<br />
** CPA units are now ineligible to join Threat or the Hunter.<br />
** The units for a CPA will just charge straight at you. No quarter asked or given. They try to be reasonably clever about it, but they will just come at you in an unstoppable tide until you or they die.<br />
** Twice the number of units will be sent as a normal CPA, roughly.<br />
<br />
* From a discussion started by UncleYar on Steam. Badger thinks this is really cool and will be playing with it in all his games from here on.<br />
<br />
* The description for the galaxy options setting:<br />
** Enabling this changes the Cross Planet Attack logic. Ships released by a CPA now flood into your empires from all over the place in a jumbled and exciting rush, rather than joining the Hunter fleet and waiting for an opening.<br />
** This reckless attack can create surprising openings for the rest of your enemies to exploit, or it can lead to you mopping up a lot of ships that arrive haphazardly. One way or the other, it's going to be an event.<br />
** Additionally, because the CPA is using such a staggered approach that you can defend against piecemeal, it's going to send twice as many ships as usual. This can be really good for you, in terms of greatly weakening the defenses of AI planets, but it comes with inherent dangers.<br />
<br />
* The tooltips for CPAs have been rewritten in general. At best it was confusing before.<br />
** When tsunami is NOT on, it now says:<br />
*** Cross Planet Attacks free a massive amount of AI guard ships all at once across a large area of the galaxy. It does not generate new ships, but it turns ships that were guarding various planets into active Threat against you. You don't know what will be in the CPA, or even exactly how strong it will be, until you see it. The higher the AIP, the stronger the CPA, though, as a general rule. The most likely result of these ships turning to Threat will be that they join the Hunter Fleet and strike at you at a much later time, but you never know. If you want far more exciting and interesting CPAs, consider enabling the 'Tsunami CPA' option in the Galaxy Options.<br />
** When tsunami is on, it now says:<br />
*** Cross Planet Attacks free a massive amount of AI guard ships all at once across a large area of the galaxy. It does not generate new ships, but it turns ships that were guarding various planets into a staggering barrage of attackers who will arrive from all directions and over a varied span of time. You don't know what will be in the CPA, or even exactly how strong it will be, until you see it. The higher the AIP, the stronger the CPA, though, as a general rule. Since you are using the exciting Tsunami CPA option, you'll have the chance to mow down lots of AI ships in your own defenses... but at the same time they may create dangerous openings for the Hunter to exploit, or may burst down your defenses by sheer volume over time.<br />
<br />
=== Lore ===<br />
<br />
* The game now has a Lore journal for the backstory of the AI (and thus AIW2 in general)<br />
<br />
* When you start a game with Zenith or Spire factions, there's now a Journal Entry with Lore about the Zenith or Spire race giving some flavour/background.<br />
<br />
* Also Risk Analyzers and Scourge have Lore sections as well which explain some of their mechanics and give flavour<br />
<br />
* Eventually I'd like to have Lore entries for all the factions in the game, and this is a start.<br />
<br />
* Updated the Zenith introductory lore to talk about their biology and a lot of information about their golems as automatons and so on.<br />
** It's not clear if we ever published anything about this before in a canonical sense, but we were writing up a lot of this sort of thing for Stars Beyond Reach. At any rate, now we've got perhaps the best look at the Zenith -- including the massive amount of things we don't know -- actually in the game!<br />
<br />
* Update the lore for DLC2's Zenith to mention that they are LIKELY from another universe in the multiverse, but not to make it absolutely rock solid certain that they are interdimensional.<br />
** This lore bit now does establish in-game for the first time that the existence of the multiverse is known to scientists to be a definite fact... but that so far there hasn't been any evidence of beings traveling between universes. This may be changing for the first time in DLC2...<br />
<br />
=== Included Mod: Civilian Industries by StarKelp ===<br />
<br />
* Fixed a bug where Civilian Resources were reset upon saving and loading.<br />
* Made it so Civilian Units would load up into their patrol posts when they have no active orders.<br />
** This change in particular is an absolutely massive speed improvement, increasing late game speed from 30~% to 90~% in stress tests.<br />
<br />
* Added Beacon Support to Civilian Industries<br />
* A large number of optimization to militia movement code.<br />
** Units will no longer go on a battle rage and immediately fly to another adjacent planet after winning a fight.<br />
** Units now chill out and wait for 66% of their forces to ready up before attack instead of the old 33%.<br />
*** This is still ignored when reinforcing other Militia or Allies.<br />
** Units that are At Ease in their patrol post will no longer sleep through apocalyptic levels of danger when they could stop being lazy and help.<br />
** Units that are loaded up into their patrol posts are now more accurately counted.<br />
** Militia HQ units should now be far better at keeping up with their assigned Battlestation/Citadel.<br />
* Some more multiplayer-specific fail safes were put in place.<br />
* Fixed a bug where planets were improperly saving their resources.<br />
** This will be retroactively 'fixed', but the fix will simply be them regenerating their resource on load. There is no way to get their prior resource I'm afraid, sorry about that.<br />
<br />
=== AI Budget Planning ===<br />
<br />
* Adjust the way most AI spend their budgets by a bit.<br />
** Most AIs actually gets to reinforce the praetorian guard early; previously if you kept your AIP to 50 or less the praetorian guard would get essentially no reinforcements over time, which meant that very low AIP games would find the homeworld easy pickings. <br />
** Also shift a bit of AI income from Waves into CPAs, since there were reports that CPAs weren't particularly scary<br />
** This doesn't affect AIs like the Tsunami that do unique budget allocations.<br />
<br />
* AI Budgeting Overhaul: Allocations!<br />
** So, basically, the AI has a variety of budgets for different things (various forms of defense and offense, reconquest, etc).<br />
** In the first AI War, these budgets were all independent and could not be reallocated based on the situation. In AI War 2, Chris and Keith both thought it would be awesome to have the AI more intelligently allocate its budgets for various situations (such as when its king is threatened).<br />
** The problem with this sort of reallocation is that it's invisible and causes all sorts of ill effects. A few of which are noted here:<br />
*** When the king is threatened, the AI can become so defensive that it loses the ability to strike back at you. This can make it hard for it to win in the very late game, which can make your eventual victory feel inevitable or boring once you get to that point. The back-and-forth can stop, which is the opposite of what we want.<br />
*** If you choose to threaten the king early, on purpose, then you can put the AI into a defensive footing that gives you breathing room that you should not have.<br />
*** While the AI is feeling threatened and is all defensive, it actually can pour far too many resources into its homeworld defense, making it so that it's tedious for you to win at the same time that it is hard for you to lose. Absolutely the opposite of our goal.<br />
*** While the AI is feeling threatened, some of its various other budgets will still have events that fire (wormhole invasions, waves, etc), but they can be hilariously underpowered to the point that it seems like a bug and confuses people. We've been having sporadic reports of this for years.<br />
** Overall the idea now is to stop allowing for this reallocation of budgets, and just keep it fixed regardless of the situation the AI is in,<br />
*** This prevents various forms of advanced player cheese against the AI.<br />
*** This should make final homeworld assaults go faster, BUT also make it so that you're at much greater risk of counterattack during these same time periods. So your ease of winning will go up, if you're in the position to do that final push, but your risk of losing at the last second also is majorly going up.<br />
*** Since this budget-shuffling was invisible to players in the first place, this means that there are no longer situations where the AI seems to be either cheating ("infinite" defenders at the expense of offense) or buggy (why a wormhole invasion with barely anything in it?).<br />
*** This also preserves the uniqueness of various AI types, as those with unusual spending ratios will do that now even when their kings are threatened, versus falling back to a very generic defensive posture during king-threatened situations. This sort of situation could lead to AIs doing "unallowed" events for their AI type if you threaten their king long enough.<br />
** TLDR: the AI will act more like you already probably expected, and the endgame will not be as prolonged but will also be more dangerous for you.<br />
** Thanks to Puffin for raising a lot of the issues here.<br />
<br />
* AI Budgets: donations when full between sub-factions.<br />
** This is another one that has many negative implications, but mainly in edge cases.<br />
*** Essentially, if an AI had a huge budget for its hunter fleet or something of that nature, but the hunter fleet was already full, then it could donate its budget to something else. As just one example. There are a lot of categories.<br />
*** In practice, what this would often mean is that certain specialized AI types could become masters of something that they were not supposed to be, such as a very aggressive AI type having amazing defenses by accident because its offensive arm was full and didn't need the excessive budget it had, and thus was reallocating that to defense.<br />
** One of the the advantages of having separate budgets that don't intersect too much is that we can add a new feature, like the Praetorian Guard for instance, and have that be a new thing that doesn't impact the rest of the AI's budget.<br />
*** Similarly, we can have certain features that have their own budget get turned off in the lobby, like wormhole invasions, without throwing off the rest of the budgeting for the AI.<br />
*** Up until now we have mostly enjoyed these advantages, but at the same time we consistently ran into some unintended consequences because of the donations between budgets winding up causing extra-beefy spends "out of nowhere" in some cases.<br />
** The new solution is very much like what AI War Classic used: if there is a case where a donation would have happened between budgets, then instead it just loses half of the budget it would have spent and waits to later think about spending it again.<br />
*** Thus in our hunter fleet example, it won't stay in a situation of "max money, instant respend and respec" at all times if it is truly maxed out, but it also won't beef up the defenses more than the AI type designer was expecting.<br />
** At present, these changes just cover the hunter, warden, and praetorian guard fleets.<br />
** Thanks to Puffin for again raising a lot of these points.<br />
<br />
* Previously, if you had wormhole invasions disabled, or waves were not allowed, or reconquest waves were not enabled, then the budget from those things were given to the reinforcements instead.<br />
** This is counter to what we actually want, these days. Those other features are meant to be something you can turn off, and they just make the game easier if you do. The fact that they were rolling over their income into reinforcements on the other AI planets is highly undesirable and no longer happens.<br />
** Thanks to Puffin for finding this particular case of donation.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix several problems with the 'flush units from reinforcement points' code that was causing it to be over-responsive<br />
** Thanks to SortYa for reporting<br />
<br />
* Renamed the "id" field on Fireteams to be FireteamID, and made it a get-only property rather than a naked variable.<br />
** This way we can make sure that it is not accidentally being set when we don't expect (it was not).<br />
** There is now a SetFireTeamID() method that is used for actually changing the ID, and it can have extra instrumentation in there as needed, if needed. At the moment it's good.<br />
<br />
* Also made the constructor for Fireteam private, so that it can't be called directly from other classes.<br />
** There is instead now a public static CreateNewWithIDFromList() factory method on Fireteam which should be used, and which ensures that it's not possible to forget to assign the FireTeamID when initializing a new Fireteam.<br />
** As with the other change, we found no errors in the code, but we are keeping the changes partly to make fireteams that little bit more accident-proof both in terms of our own future code, and modder code.<br />
<br />
* Fixed a line that was missing where during fireteam deserialization we were not actually assigning the fireteam id to the fireteam. This has been present since September 3rd, when we were overhauling a lot of the externaldata and how it is read in.<br />
** This was particularly tricky to find, because the data was being read in properly, and so the serialization logs all showed things properly as did the deserialization logs. However, since nothing was done with the read-in ID, it then would have the game behave improperly and the NEXT time that serialization happened it would write -1 for all the fireteam IDs that it had previously deserialized, which was the first sign in data of something being wrong.<br />
** Anyhow, this was causing the hunter and other factions to be notably stupid for a few minutes after loading any savegame, but is now fixed.<br />
** Thanks to Badger for reporting.<br />
<br />
* The tooltip for the 'Hack Dyson For Ships' hack now reminds the player it will antagonize the dyson for a while<br />
** Thanks to TechSY730 for reminding me<br />
<br />
* ArcenLessLinkedList and ArcenOverLinkedList have both been updated to be a bit more threadsafe by making it so that when items are removed from them, they can't have errors based on being aske to remove themselves twice.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* Fixed a whole raft of potential cross-threading errors that could happen inside HandleShipToShipLinesIfAny() in various rare cases.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Fixed a number of possible places where sync errors between the host and client in multiplayer could lead to errors on the client in GameCommand_UnitSetCommands.<br />
** Also put in more instrumentation so that if we get future errors in this area, we will know more precisely where they are.<br />
** Also put in protections so that if one unit does get an error, it will give a harmless popup and then move on with life, versus corrupting a bunch of units' orders after that.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Fixed an issue where AI Eyes were once again flipping back and forth between alerted and non-alerted status.<br />
** This was causing duplicates of them in multiplayer, as well as making them un-targetable in single-player.<br />
** Thanks to Ovalcircle and Arides for reporting.<br />
<br />
* Fixed an exception that could happen in the warden fleet when ships die, particularly in multiplayer.<br />
** Ditto astro trains.<br />
** Ditto devourer.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Improved the logging of exceptions from when things die related to the dark spire. Also, it should just carry on with the game rather than stalling many more things.<br />
** Ditto with the human factions.<br />
** Double ditto macrophage.<br />
** Ditto NP faction from DLC2.<br />
** Ditto ZM faction from DLC2.<br />
** Ditto the Zenith Trader.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
== Version 2.603 Nanocaust And Civvies Strike Back ==<br />
(Released September 29th, 2020)<br />
<br />
* Add a Tip of the Day to remind players about holding R when hovering units to show strengths/weaknesses<br />
<br />
* When player ships are being constructed by factories to join fleets, those ships previously would ALWAYS come out un-stacked... and if they needed to stack, then they would explode and stack themselves shortly thereafter.<br />
** Now the game automatically stacks them from the start, when needed, and does so in a really efficient fashion with as small of stacks as possible spread out as much as possible.<br />
** This works both when ships are loaded in a transport and when they are outside of a transport.<br />
** This helps performance, multiplayer sync, and also makes things a lot less confusing for new players in particular (but avoids visual clutter for everyone).<br />
** Thanks to UncleYar for suggesting.<br />
<br />
* Fix a bug where Hunter fleet ships were picking really bad planets to lurk on. <br />
** Reported by NRSirLimbo without a save; debugged using a save from Suzera<br />
<br />
=== Included Mod Updates: Civilian Industries Working Again ===<br />
<br />
* Updated Civilian Industries for the latest builds.<br />
** Single Player looks to be working fine.<br />
** Your Civilians will oddly request an exceptionally large number of cargo ships as the game begins, but they eventually calm down.<br />
** Multi Player has a few odd bugs here and there, but appears to also be working.<br />
*** The main thing that seems to still occur are instances of the game being unable to find ExternalData at points. I (StarKelp) am still working to hunt these down, but it has been out of commission for long enough. No reason to hold off the single player compatible version for the multiplayer optimized version.<br />
<br />
=== Nanocaust Buffs ===<br />
<br />
* At the moment, many ship types cannot be Nanocausted; AI Golems, Scourge units, units with zombifying/nanocausting weapons, etc. <br />
** Now when the Nanocaust kills (most) non-nanocaustable ships, they get a new Nanocaust ship instead. The Lore is that the Nanocaust can transform these units into new ships, instead of just taking over the existing ships. This doesn't apply to Players, Dyson or Dark Spire for balance reasons, and certain individual ship lines might be prevented as well.<br />
*** Fleetship-level units transform into Husks, melee units with engine stunners<br />
*** Guardian-level units transform into Ghouls, which have an AOE acid weapon<br />
*** Dire-Guardian level units transform into Liches, which have Deathgrip (tractors, and guns that do extra damage to tractored units) <br />
<br />
* Also when the Nanocaust kills an AI turret (not a turret owned by a player or modded faction), it generates a weak turret of its own.<br />
<br />
* These changes are intended as a nice buff to the Nanocaust, since the Nanocaust is feeling really lackluster these days. It would be good to bring it back to "terrifying" <br />
<br />
* These changes are currently locked behind an opt-in Setting in the "Game" section so people can give balance feedback before I unleash it on everyone. This setting is not multiplayer friendly.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an exception that was happening in new games with the fallen spire on, where the spire relic was having trouble seeding the very first time. Not sure if this is new in this version or if a very recent thing.<br />
<br />
* Fixed a "CalculateSpeed exception" that could happen on ships in general in thread race conditions, but particularly on multiplayer clients.<br />
** Thanks to Tzarro and narwhalofages for reporting.<br />
<br />
* Fixed an exception that could happen if you were viewing the escape menu while receiving certain data at just the wrong time as a multiplayer client.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Put in a lot of extra instrumentation into shot deserialization to make it less likely for there to be any errors in that, and/or to find out where errors are if any happen.<br />
** Also put in some protection against the time-based-pools having spurious nulls in them for whatever reason.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Fixed an exception that could happen in GetLocalPlayerFactionOrNull() in some instances, including apparently during game startup if your mouse cursor was in just the wrong position.<br />
** Thanks to zeusalmighty for reporting.<br />
<br />
* Fixed a couple of exceptions that could happen in GroupAllowedToSpawnOnPlanet() after a failed savegame load in particular.<br />
** Thanks to zeusalmighty for reporting.<br />
<br />
* Fixed the Damage Modifiers MyHullPercentageMissing and MyShieldPercentageMissing not referring to "my" current hull/shield percentage but to the target's.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Redid a number of the entity hover tooltip pieces of code in order to make it so that there are a number of exceptions that are not possible to have happen anymore. Most of these are related to the orders collection, or the next order of the entity.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* The tooltip for AI Eyes that are alerted now says "You do not have too many units on this planet, so this unit will probably stop being alerted before long." rather than having a negative number when you no longer are alerting an eye.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Put in a bunch more instrumentation of entity system steps to avoid potential errors there.<br />
<br />
* Also found another place where there were apparently nulls getting into the time-based pools for shots and fixed that.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* The major cause of "Unable to render visuals for 3.01s, because of:" was some timing issues that really should not have been happening in the first place, but they kind of compound display strangeness when it did happen.<br />
** These messages should no longer show, and so far as we can tell it should let things continue working appropriately.<br />
** Thanks to Tzarro and narwhalofages for reporting an excessive number of these happening for them in multiplayer in particular.<br />
<br />
* UpdateVisualObj() will no longer ever complain about PlanetFaction being null. This is an indication that a ship is dying or moving between planets, and so just silently returning and moving on with life is the appropriate course of action. This could happen in single player or on multiplayer hosts or clients.<br />
<br />
* Combat Engineers that were assigned to a battlestation or citadel would not construct properly in prior versions of the game. They still won't, but they will no longer be assigned to those (they are meant for support fleets only).<br />
** In new savegames started this version, anyplace that you would have encountered combat engineers on a battlestation or citadel, you will now instead see Interplanetary Engineers.<br />
** These are the same as regular engineers, but are able to move between planets. They also have the extra health and shields of a combat engineer.<br />
** These are built from the sidebar like regular engineers.<br />
** Thanks to CRCGamer and Mckloshiv for reporting, and Puffin for figuring out what was going on.<br />
<br />
== Version 2.602 Transports Fixed In Multiplayer ==<br />
(Released September 28th, 2020)<br />
<br />
* Fixed a bug in multiplayer where transported ships were being doubled on the client every second or so.<br />
** This was causing all sorts of issues ranging from brownouts flipping on and off, to a memory leak and performance degradation.<br />
** If nobody was transporting ships, or transporting ships for very long, then this problem would solve itself. This is how Suzara and Ipsum were able to win the first complete game against the AI in multiplayer for this game, where others were hitting a wall a bit sooner.<br />
** Thanks to lots of folks for reporting, including Puffin, OzoneGrif, Burner, Democracy, jradishurr, and potentially others.<br />
<br />
* Split out the spire relic transformation code into its own sub-method, ConvertRelicIntoCity().<br />
** Fixed an exception that was very likely to happen in there (amazed it did not happen more frequently) where we were using the wrong index to search into the SpireCities array.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
== Version 2.601 Savegame Hotfix ==<br />
(Released September 26th, 2020)<br />
<br />
'''Please note: this was supposed to go out late on the 25th, but accidentally did not go out for the entire next day. Apologies! We thought we had this out much faster than that.'''<br />
<br />
* Fixed a stupid one-line typo that snuck in at the very end of testing the last release, which broke all savegames in 2.600.<br />
** The bad news is that this is an error with the save process, not the load process, so those savegames are just toast. :/<br />
** Thanks to TechSY730 and Ovalcircle for reporting.<br />
<br />
== Version 2.600 Multiplayer Alpha Full Announcement==<br />
(Released September 25th, 2020)<br />
<br />
* Fixed a bug where melee units given a load-into-transport order would keep trying to go back to their remembered melee anchor spot.<br />
** Thanks to Isiel, crawlers, fwiffoforce, and TechSY730 for reporting.<br />
<br />
* Hopefully make eyes stay visible through transformation on Explored planets. Otherwise if another faction triggered the eye you would lose vision of it until you looked at the planet again.<br />
** Thanks to giftgruen for reporting.<br />
<br />
* Tweaks to hovertext for units with multiple wormhole movements queued<br />
** If at the planet view, it will say "finalDestination via nextDestination" if you have the tooltips on Full<br />
** If hovering at the galaxy view, it will always show the wormhole orders (if any) to tell you where the ship is going.<br />
*** From a discussion started by Tzarro<br />
<br />
=== Multiplayer Work ===<br />
<br />
* Fixed two deserialization issues with factions that would mainly come up during multiplayer, where the hacking history and speed groups could lead to deserialization errors.<br />
** Thanks to Suzera and Ipsum for reporting.<br />
<br />
* Added a new ListExtensions class in ArcenUniversal, which adds a new RemoveEndEntriesWhileCountLargerThan() method to the List<> class.<br />
** This is something that can be centralized as well as having a limiter to make sure that the max count is not negative.<br />
<br />
* Fixed yet another typo in the factions sync code where it could mess up on the hacking history.<br />
** Thanks to Suzera and Ipsum for reporting.<br />
<br />
* Previously if you tried to load a savegame into multiplayer as a host, but your profile name was not in that game, then it would give you the proper error message but also put you into a very broken half-main-menu-half-game state. Now it just keeps you on the main menu properly.<br />
<br />
* GetLocalPlayerFactionOrNull() now actually returns null, rather than the "first found player faction" if you are in any form of multiplayer.<br />
<br />
* Fixed an even larger bug in GetLocalPlayerFactionOrNull() where it was looking by the index of player accounts, rather than the actual ControlledByPlayerAccounts_DuringGame list. This was going to be problematic for a whole host of reasons.<br />
<br />
* A new GetIsCurrentlyInSpectatorMode() is now on Engine_AIW2, and also can be called via IGameSpecificEngine from Arcen Universal.<br />
** Also added GetFullListOfPlayerAccounts() onto these, which can give you a full list of the player slots that are there and what their status is (host, already full, spectator, etc).<br />
<br />
* Added a new GetFirstFactionControlledByPlayerOrNull(), which lets us find the first faction (hopefully there is only one) assigned to a player account, regardless if there are many of them or not.<br />
<br />
* When you connect fresh as a client to a multiplayer game, it now logs a different message if you are attached to a faction or if you are a spectator.<br />
** If it's starting the world for real, such as loading into the game after being in the lobby, or joining a savegame in progress, or just re-joining a game in general, it now also does a popup telling you that you are in spectator mode.<br />
<br />
* For some reason, a player joining an MP game in progress with a username not assigned to any faction was still being put in charge of a faction,<br />
** So we are now writing a full list of all the accounts in the game when a client joins into their client log.<br />
** This will likely be useful in general in the future, to avoid confusion.<br />
** But it turns out that the host was being WAY too free with how it was trying to match incoming clients to usernames. Essentially it was giving the first non-taken spot to whoever joined in if there was a name mismatch, which was intentional logic for some reason but definitely not what we wanted to have happen.<br />
*** Now the host properly creates a new account for the incoming profile and goes from there. The lack of this may have been substantially hampering three-plus-player games in at least some cases prior to now.<br />
<br />
* When you are in spectator mode, all of the resource slots in the top bar now show up as empty, except for the metal line, which shows "Specator Mode."<br />
** Looks like a lot of spectator mode works just fine, as far as we can tell from a quick look around.<br />
<br />
* Added a bool GetInSetupPhase() that we can read in Arcen Universal.<br />
** And added a RegenerateWorldImmediately() that can be called from Arcen Universal.<br />
<br />
* Since some other changes in these internal builds, new players to the lobby were coming in as spectators... sort of. Basically until the map was regenerated.<br />
** Prior to this build, they probably could not see their starting planet properly until the map was regenerated.<br />
** Now it regenerates the map automatically before bothering to send it to the client, and thus gives them the full info from the start, and without them being in spectator mode wrongly.<br />
** This MAY open up a slight window where if two clients try to connect within something like 400ms of one another, the second client might get an error and have to try again. Not sure 100% on that.<br />
<br />
* A number of scary-looking-but-harmless error messages that would happen on clients and hosts when they disconnect from one another should probably now still happen but in a less scary-looking fashion. We'll work on making those not happen at all.<br />
<br />
* Fixed an issue with how the scourge were being initialized that was causing them to throw errors constantly on clients in multiplayer.<br />
** Thanks to Badger for pointing us to how to fix this.<br />
<br />
* Fixed a minor issue with "Ship syncs sent" always being zero on the host.<br />
<br />
* SecondsSinceBrownout is no longer synced via the periodic-sync-correction for factions, since that was probably messing with things on the client.<br />
** Additionally, brownout messages will never be shown except for the actual player who is in a brownout.<br />
<br />
* QueueChatMessageOrCommand() now properly handles the ChatType.ShowLocallyOnly. This was never fully implemented for multiplayer purposes, it seems.<br />
** This also now only writes to the "MomentaryDisplayLog", and does not clutter up the long-term chat log even in single-player.<br />
** This means that brownout notices, "can't build there" notices, and similar don't go in the way of the chat from the AI or other informational bits.<br />
<br />
* Between the above two items, this should be a solution to the excessive brownout notices reported by Puffin, Democracy, Suzera, Ipsum, and perhaps others.<br />
<br />
* LocalMomentaryDisplayLog has been moved off of the world object and onto Engine_Universal.<br />
** This keeps it from being wiped out whenever new world sync data is sent in, which in turn keeps client-side chat in the lobby from disappearing when map changes are made in the lobby.<br />
** Did add in code to make this still properly clear when you leave a game and go back to the main menu, though.<br />
** Thanks to Puffin for reporting.<br />
<br />
* _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient has been changed from 3 to 5, which means that the server will still keep giving orders even if it is 500ms ahead of the client.<br />
** This lag in the client is what was leading to a lot of the command-lag that was client-side only, but it's also the sort of thing that makes the network connection volatility more of a factor.<br />
** Increasing this number on its own gives us more leeway, but ultimately doesn't do anything to help the client catch up.<br />
<br />
* Also reduced the _SyncMessageFromClientToServerInterval_Frames_InMultiplayer and _BatchMessageFromServerToClientInterval_Frames_InMultiplayer from 2 each to 1.<br />
** This helps to reduce the command lag that was on the client, and the network bandwidth that we're dealing with here is absolutely fine.<br />
<br />
* Also put in a "catch up" period on the host, where if the client winds up being 500ms behind, it waits until it catches up and then proceeds after that.<br />
** This is better than the prior method, where it just waited until it was no longer 300ms behind, which meant that there was a constant 200-300ms delay on the client, and it was always at imminent risk of being too far behind.<br />
** This almost completely eliminates the "waiting for client/host" messages in our test environment, but the movement of ships on the client is still jerky and we need to work on that.<br />
** There is still excessive input lag on the client, but there's still one remaining thing to handle with the client.<br />
<br />
* GetCurrentFrameFrequencyMulitplier() has been updated so that if the client detects that it is falling behind, it starts speeding itself up in its frame processing.<br />
** This puts extra load on the client CPU, but usually only temporarily, and probably on frames that were more or less already dead air already (time where it would have just been waiting for the next sim cycle to start).<br />
** This adaptive processing plays extremely well with our multi-tiered simulation and visual playback layers, and winds up more or less eliminating the lag spikes.<br />
<br />
* However, what we DID find was that it was often the case that the clients could get a bit ahead of the host, simply because the host is still waiting for sync confirmation from the clients, which is not the best.<br />
** Another wave of changes will be related to dealing with that in just a moment.<br />
<br />
* Since the client is now adaptively able to catch up to the host, we are just changing _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient to an extreme 10, which is 2 seconds of time.<br />
** This basically will stop things when there is a client that is syncing the whole world or something along those lines, but at no other times.<br />
<br />
* We also then got rid of the new useStrictFramesWhileClientsCatchUp that we added, since the clients are now responsible for catching themselves up.<br />
** We would have gotten rid of the _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient entirely, but then the long initial syncs of the clients getting in would have messed things up.<br />
** It's possible we may revisit that concept and handle those giant syncs in a different fashion.<br />
<br />
* On the client, it was still possible to be seeing little "waiting on host" messages popping by, which was quite irritating. Those now only show if it would be more than 1 second that they would last there.<br />
** There's still some choppiness in the movement of units, but we'll work on smoothing that out in the future. For now, the simulation speed stays where it should be, and it's just a bit of ships moving a bit too fast and then too slow as things try to correct themselves on the client.<br />
<br />
* Fixed a bug that could affect multiplayer sync in a variety of ways with index out of range exceptions because of the serialization gates for each PKID type not being updated before certain types of sync activities. Those are now explicitly synced before those kinds of messages, and require a "whopping" (note sarcasm) 12 bytes to handle.<br />
<br />
== Version 2.511 "Last Lobby Settings" Robustness ==<br />
(Released September 24th, 2020)<br />
<br />
* Fixed literally a few hundred more places that the center color and trim color were being referred to by other names.<br />
** This doesn't fix the outstanding issue with the player trim being set to the center color, but maybe it will help us find it.<br />
<br />
* Found and fixed a really annoying case where player starting faction colors were still having the trim set to be the center color. Instrumentation for the win.<br />
** Thanks to folks for letting us know that was still there.<br />
<br />
* Fixed another seemingly-rare exception that could happen inside DoForSelected() when there was a lot of cross-threading competition.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* If you have serialization logging enabled, then now when the lobby writes out its "last settings" for savegames, it will write to the file WorldSerialization_LastSettings.txt<br />
** We were seeing some strange issues with only 92KB saves being written there, without properly being able to be loaded back in, in our internal build.<br />
** Loading into the lobby and then exiting immediately now lets you compare WorldSerialization_LastSettings.txt and WorldDeserialization.txt.<br />
<br />
* The world save method now takes a bool IsForLastSettings parameter, which lets us strip out yet some more data from the last settings.<br />
** In particular, this lets us forget what expansions or mods you had installed last time, so if you were changing that it will hopefully still load your settings properly.<br />
<br />
* When savegames fail to load from the "last lobby settings" file, it's supposed to just give you a blank fresh copy of the lobby, which it has been doing and still will do.<br />
** But now it also logs some errors silently to the log, so we can see what is happening if that is of interest.<br />
<br />
* The stripped-down lobby settings files are definitely by design, but they were dying in SetGuardPostAndCommandPlacerFromPlanetStats(), which is no longer called when loading them (as GetCurrentDefensePlacer() is no longer called, too).<br />
** This saves time on map generation in general, in addition to fixing the ability for last lobby settings to load.<br />
** The nice thing is that the last lobby settings are sometimes as small as 92KB instead of 1.5MB, but it just depends on when you were saving it. Exiting out of the lobby via the quit button gives a very different result from it saving after you go into a game from the lobby, when they should be identical or close.<br />
<br />
* When saving for the "last settings" for the lobby, the "externaldata" is no longer saved at all.<br />
** The details of PermanentSerializationIndicesForThisWorld are also not saved, which makes us have to be extra vigilant with SerializeByIndex... but on the plus side, it should throw errors immediately on game start from the lobby when we mess that up.<br />
*** AICounterattackForces on planets no longer saves in the "last settings" path, since this would break (and is useless).<br />
*** Same with Player_AddedToCommandStation_Permanent and Player_AddedToCommandStation_Current on the World.<br />
*** Also same for the ChatLog, journal history, and fleets on the world.<br />
*** Also for TechUpgrades, FreeTechUpgrades, SpeedGroups, HackingHistory, TechHistory, on factions.<br />
*** Also for the entities of all types on planetfactions.<br />
** So far this seems to properly do the job of getting you into the game faster, and it SHOULD prevent issues with "my last settings were from having three mods on, but now I disabled those mods and want to load a savegame and it just throws me to the default settings."<br />
*** Worst case, it should just throw you to the default settings like before in these cases, but hopefully that happens at least a lot less frequently, if at all, now.<br />
<br />
* In the event that the "last settings" file is unrecoverably messed up (probably from trying to load the data from a mod that is not on at present), then it no longer has the chance of throwing a bunch of errors when you go into the lobby. Instead it logs a couple of errors silently to your log, and gives you a fresh lobby with default settings.<br />
** The other changes in this release to make it less likely for "last settings" files to be unrecoverably bad are the second part of this solution, but there's always some edge cases (or suitably old data) that we can't work around.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Version 2.510 Astro Train Safety Training ==<br />
(Released September 23rd, 2020)<br />
<br />
* Fix a bug where games with astro trains would crash<br />
** Thanks to CRCGamer for the bug report<br />
<br />
* Some additional improvements toward helping hunter fleet ships not suicide<br />
** Thanks to a save from Burner that let me reproduce this<br />
<br />
* Fix several typos in the game lobby/settings.<br />
** Thanks to Fenrakk101 for reporting<br />
<br />
* Hacking a conquest mode VG will cause it to transform into a regular VG<br />
** Thanks to crawlers for the suggestion<br />
<br />
* Fix a bug where the AI was not sending reconquest waves to unexplored planets<br />
** Thanks to Burner for reporting<br />
<br />
* Over the years, internally in our code we've had a variety of different terminologies for the "center color" for a player faction, which is sometimes the "main color" or "text color" or other things, and the "trim color" or "border color" that goes around the edges.<br />
** Apparently this has led to an error somewhere where we are inverting the main and border colors, so we're taking this chance to standardize all of the naming since it was something we were clearly making an error somewhere in, but couldn't see it in the code.<br />
** Now these are universally in the code referred to as the "faction center color" and "faction trim color".<br />
<br />
* As part of the above refactor, found a spot in GetDefaultFactionConfigurations() where we were assigning the player's trim color to also be their main color.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Version 2.509 Melee, Stacks, And Fireteams ==<br />
(Released September 22nd, 2020)<br />
<br />
* Fixed missing descriptions for the Damage modifiers of TargetHullPercentageMissing, MyHullPercentageMissing, TargetShieldPercentageMissing and MyShieldPercentageMissing if not used in combination with the MultiplesOf comparison type.<br />
* Instead this was displaying Unknown DamageModifierBasedOn.TheModifierName twice in the tooltip.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Fix a problem introduced recently by my hunter fleet performance improvements that was causing the Hunter Fleet to just sit around<br />
** Thanks to a number of people for pointing this out, including ArnaudB, CRCGamer and Minotaar<br />
<br />
* Tweak the journal messages about exogalactic war front units<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Fix a very longstanding bug with fireteam histories, where they would report the planets they were lurking on incorrectly<br />
** This won't apply to previously existing histories, just new histories<br />
** Thanks to a save game from Minotaar for making this really obvious to me<br />
<br />
* Make it harder for players to trigger exogalactic war units without allied factions<br />
** Several people have had thoughts about this<br />
<br />
* Some buffs to the stronger astro train variants<br />
** Thanks to crawlers for requesting<br />
<br />
* Tweak the stacking/splitting code to make it harder for ships to decide to stack and split themselves over and over<br />
** Reported by Gott365 and TechSY730 for reporting<br />
<br />
* Fixed some issues with the new-ish melee unit behavior of flying out to attack nearby enemies when otherwise idle:<br />
** Fixed a bug where a melee unit would go back to its prior location after a direct order from the player (like a normal move order).<br />
** Fixed a bug where a melee unit's memory of where to go back to after no targets were in range would persist across wormhole jumps (causing it to try to go to that location on the new planet, which doesn't make sense).<br />
** Fixed a bug where melee units wouldn't use their implicit attack-move behavior if their internal behavior flag had been changed away from default and then back. So new melee units would use the behavior, but ones that had been around for a while often would not.<br />
** Thanks to OzoneGrif for reports revealing these.<br />
<br />
=== Data Dump Improvements ===<br />
<br />
* Fixed a couple of problems that were leading "cmd:dump data tables" to actually crash the game rather than exporting things nicely. Sometimes the crashes were only intermittent, which was doubly "fun."<br />
** This obviously made this far less useful in terms of actually debugging anything!<br />
<br />
* In general with our data dumps, we've been using ObjectDumper in a customized fashion. But now that we're moving to use it in more places, we're customizing it even further and making it more efficient.<br />
** For the largest export, the GameEntityType, this makes the data go from 35.8MB down to 29.2MB<br />
** More importantly, it makes the data a lot more legible.<br />
** For all of the various lists and dictionaries and other collections, this also now gives us counts of how many items are in each one, which it did not do before.<br />
<br />
* Fixed a variety of other things that would be different in those exports on different machines, or at different runtimes, that thus would have been in the way of our log comparisons.<br />
<br />
* In our exports, a variety of cases of contents that would just have empty brackets now do not export the useless empty brackets. A good example is ArcenPoint, which was saying its coordinates and then four lines of empty brackets.<br />
** Additionally, a bunch of default values that would be "None" or "-1", or collections that are empty no longer export at all. This is consistent with things already not exporting that were 0 or false or an empty string.<br />
** This gets our GameEntityType down to 24.8MB, and even easier to read.<br />
<br />
* Fixed several places where the ExternalData was still keeping a parentobject reference on an object that was meant to be used by all the parents.<br />
** This then caused some of the calls in the mods and externaldata to need to slightly change again.<br />
*** Really this is just an easy search and replace for GetCollectionByPatternIndex() to have a first parameter of ParentObject now.<br />
<br />
* Added a new "dump external data" command:<br />
** This causes all computers involved in the current game (so not just the local machine in multiplayer) to immediately dump all their 'external data' from all entities (World, Factions, Planets, Player Accounts, and Ships) into the ExternalDataExports subfolder in the PlayerData on each machine. <br />
<br />
* Added a number of improvements to the dump logging, for attributes like: SkipWritingNullEntries, NotForDumpingWithDataTables, and NotForDumpingWithExternalData.<br />
** These help us control the way that dumping works, making for more readable and legible output.<br />
<br />
* For better exported data in general (both in terms of the external data dumps and the data table dumps):<br />
** We've now implemented to ToString() method on ArcenSparseLookupPair, Pair, RefPair, ThreeTuple, RefThreeTuple, FourTuple, and RefFourTuple.<br />
*** This lets them actually show whatever their contents are, rather than just the semi-gibberish of their outer type (which is also not informative in general).<br />
** Also implemented ToString() on DeathEffectType and DeathEffectType.OffenseTier, so that they actually show real data rather than just writing their names.<br />
** Also implemented ToString() on ArcenDynamicTableRow so that those say their InternalName rather than just what type of row they are.<br />
*** Of the many things this improves, you can now actually read which expansions or mods tables were modified by.<br />
** Also implemented ToString() on all of the various inheritors of IDeathEffectImplementation, to make the exports more brief and clear.<br />
*** Well, this one didn't actually make any difference, even with making ToString() a required thing for the interface to implement. Not sure exactly why this last one didn't work, but it's ok.<br />
<br />
* ArcenSparseLookup now implements ICollection, making itself render its contents properly in logs.<br />
** Both ArcenOverLinkedList and ArcenLessLinkedList now do the same.<br />
** Now all three of these expose IEnumerable, which lets them be iterated-over and render their contents in a sensible fashion too.<br />
** With the various changes here, we are back up to 28.8MB of data on the GameEntityTypeData export in the data tables export, but it's actually meaningful data that is using that space.<br />
<br />
* Added a new INeverDumped that can be used to make an entire class or struct not dump.<br />
<br />
* In all of our data dumps, when it is dumping lists and dictionaries and other collections it now gives some commentary after them that you can search for to look for problems:<br />
** If more than 1 million items, it will say BIGLIST-E.<br />
** If more than 100k items, it will say BIGLIST-D.<br />
** If more than 10k items, it will say BIGLIST-C.<br />
** If more than 1k items, it will say BIGLIST-B.<br />
** If more than 100 items, it will say BIGLIST-A.<br />
** This lets anyone use any standard text editor (Notepad++ is great) to search for either "BIGLIST" in general, or one of the larger-format ones.<br />
** If players in multiplayer suspect that there is a performance degradation on a client via a memory leak, then having anyone type "cmd:dump external data" and the client-who-seems-to-be-having-troubles search for BIGLIST-E and BIGLIST-D in particular in the resulting files should help find anything suspicious. Or people can send those exports to us to look at.<br />
** Quite aside from this, however, it lets us get a general idea of how much externaldata we are actually using, and what is attached where, which is useful for developers and modders anyway.<br />
<br />
==== How To Use The New Log Dumps To Help Find Multiplayer Errors ====<br />
<br />
* New explanations on how to use the log dumps for multiplayer debugging purposes are in here:<br />
** This one is less likely to be useful: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#cmd:dump_data_tables<br />
** Whereas this one is very likely to come up as something to check: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#cmd:dump_external_data<br />
<br />
== Version 2.508 Waverider ==<br />
(Released September 19th, 2020)<br />
<br />
* Fixed a couple of places in the metal flows tooltip where it was stating the left and right mouse buttons backwards. (There were three places in all, and we had only changed one of them).<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Fixed a rare exception that could happen inside GetControllingOrInfluencingFaction() when exiting the game either to the OS or to the main menu.<br />
<br />
* Fix a bug where waves were not spawning any units. This affected regular waves and hacking responses.<br />
** Thanks to weapon master, CRCGamer, DaniExpert, ArnaudB, Gott365 and probably others for reporting<br />
<br />
* The Zenith Trader no longer sells AIP-increasing black hole machines to the player<br />
** Thanks to TechSY730 for reporting<br />
<br />
* The Zenith Trader will no longer sell things to dead AI factions<br />
** Thanks to GreatYng for reporting<br />
<br />
* Really fix that Macrophage null reference in LRP bug that's been annoying badger<br />
<br />
* Some performance improvements for fireteams in general (and some extra improvements for hunters) in late game scenarios<br />
** Thanks to a giant save from crawlers for letting me see what was going on<br />
<br />
* When you see the name of a song in the Escape Menu, it should now be formatted in a more readable way. For example, it now shows "Waking To Darkness" instead of "WakingToDarkness"<br />
<br />
* Improve the text of several "You can't hack this because of...." messages<br />
** Thanks to GreatYng for reporting<br />
<br />
* The experimental "Astro trains get stronger after you kill some of them" code is now enabled for everyone, and the setting is removed<br />
** I've heard reports that it works okay<br />
<br />
* Allow the HRF to flush enemies from command stations and guard posts<br />
** Thanks to GreatYng for requesting<br />
<br />
* The "This faction has no allies, not even itself" message is cleared up; this was being triggered by dead AIs, usually after the civil war started<br />
** Thanks to a number of people for reporting<br />
<br />
=== Dark Spire Tweaks ===<br />
<br />
* Fix a bug that was preventing the Dark Spire from being suitably aggressive in late game situations<br />
** Thanks to crawlers and Gott365 for the bug reports<br />
<br />
* Other factions will now actively go after Dark Spire Conquest mode VGs<br />
** This should give some counterplay against the Dark Spire<br />
<br />
* To compensate for the fact that Conquest Mode VGs will be targeted more, they are also tankier<br />
<br />
* In conquest mode, the Dark Spire will get a bit more energy<br />
<br />
== Version 2.507 Bugfixes ==<br />
(Released September 16th, 2020)<br />
<br />
* Fix a bug where player-allied nanocausts that aren't allowed to kill command stations weren't properly expanding. Add a journal entry to point out to the player that this leaves their allied nanocaust vulnerable<br />
** Pointed out to me on discord<br />
<br />
* Fix a bug where the render vengeance generator hack wasn't completing<br />
** Thanks to a number of people for reporting, including jradishurr, Magiik and Gott365<br />
<br />
* Fixed several cases where cross-threading issues could lead to some issues in the selected-ships counter.<br />
** Thanks to MasterGeese and GreatYng for reporting.<br />
<br />
* Fixed several cross-threading bugs that could happen in GetIsWithinRangeOf() or GetIsWithinRangeOf_VeryBasicCheckOnly().<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Fixed a bug introduced in the prior build that made it impossible to save most games that had outguard in them (all of them...?), and probably was messing with initial multiplayer sync, too. This was not seeming to affect every last save, but nonetheless was not good.<br />
** Thanks to Badger for reporting.<br />
<br />
* The "long range planning" code for the Macrophage now includes a lot more instrumentation for more detailed error messages. We started having some sort of error in at least some games starting the last release.<br />
** But after putting in the instrumentation (and having fixed the outguard serialization bug that also manifested in the same savegame), we no longer can duplicate the problem. So for now there's nothing more to do, but if it comes up again we'll at least know where it is.<br />
** Thanks to Badger for reporting.<br />
<br />
== Beta 2.506 ExternalData Overhaul Two ==<br />
(Released September 15th, 2020)<br />
<br />
'''This is kind of a nasty one, in that we're fixing a ton of things but potentially also breaking more things. External code-based mods are definitely broken again (sigh). But a bunch of things that were question marks for multiplayer are either now working properly for the first time (a few dozens of things), or are now verified-correct (even more dozens of things). So we're dropping back to beta briefly, to let people test things and let us know if there are any bugs that make this unplayable for some reason. Once folks have been through it sufficiently, we'll move back to the non-beta branch.'''<br />
<br />
* Previously, the dark spire ships that you could hack for had a starting mark level of X, and a max mark level of 4. Now they all start at mark 1 and level up like normal, but have a max mark level of 7 (because why not).<br />
** Essentially, tech unlocks for players probably did not work terribly well when the starting mark level of a player unit is greater than 1. And having a low mark cap on top of that can be frustrating for folks.<br />
** Specter used to start at mark3, now is 1.<br />
** Phantom was already mark1 at the start, but still is.<br />
** Okay, wraith was already mark1 at the start, and still is.<br />
** Anyhow, the level caps were a big part of what was messing with people, probably.<br />
** Thanks to crawlers and CRCGamer for reporting.<br />
<br />
* Fixed a potential nullref that could happen in CheckForInternalShipDeployment_DroneProducers_FromSimBGThread(), probably more likely on multiplayer clients than elsewhere, but definitely possible anywhere.<br />
** Thanks to Puffin for reporting.<br />
<br />
* Fixed a strange capitalization issue in the logging for faction deserialization where MinFIreteam and MaxFIreteam would thus show up as diffs.<br />
** Thanks to Puffin for the report.<br />
<br />
* New debugging command added: <code>dump data tables</code><br />
** This causes all computers involved in the current game (so not just the local machine in multiplayer) to immediately dump all their data in the same way that happens from "Dump All Data Tables After Load" from the debug section of the settings menu. <br />
** ''Please be advised that this will cause all of the computers involved in this game to freeze for something like 20-60 seconds, depending on their relative speeds, how many expansions and mods are installed, and so on. It's a good idea to warn people before you run this comment.'''<br />
** Aka, this writes a text file for each in-memory data table into a DataTableExports subfolder in the PlayerData folder. <br />
*** The purpose of this is mainly to use with diffing tools between one run of the game and another, to see what sort of data changes happened. If you are modding and made changes to some ships and want to see how those changes cascaded, this would be one way to do that. This is also a way for us to verify correctness when we make structural changes internally.<br />
*** In multiplayer, this can also be used to compare the contents of these folders between the host and various clients, to check for things that might be amiss thanks to mods or other local changes.<br />
*** To compare folders at a time, you'd need to share the contents of these folders between machines (zip and email, etc), and then run a folder-wide diffing tool like WinMerge to find any discrepancies.<br />
*** Lastly, if you're a mod author and concerned that your mod is adding to the data tables incorrectly over time, then you can use this to get snapshots of what those look like as you are playing. Normally this data should not be changing after the initial load of the application.<br />
** Never considered a cheat.<br />
<br />
=== Multiplayer And ExternalData Continued Improvements (Breaks Code-Style Mods Temporarily) ===<br />
<br />
* There are some issues with the data table dumps now actually dumping some game data.<br />
** To combat this, the ArcenOverLinkedList and ArcenLessLinkedList both no longer dump their firstItem and lastItem fields.<br />
** Hopefully we will still see the count of items in these, but that's really all we can do right now without getting into circular references by the very nature of these linked lists.<br />
<br />
* This also finally pushed us over the edge when it came to IArcenExternalDataPatternImplementation, and this is now becoming an ArcenExternalDataPatternImplementationBase abstract class that we can control a bit better in several different ways.<br />
** In general this will be a help for us with multiplayer sync, among other issues.<br />
** This class should never be directly inherited-from by things in External or mods, however.<br />
** Added a new ArcenExternalDataPatternImplementationBase_World, which is for use with things being attached to worlds.<br />
** And also a new ArcenExternalDataPatternImplementationBase_Faction, for things being attached to factions.<br />
** And a new ArcenExternalDataPatternImplementationBase_Squad for things being attached to ships.<br />
<br />
* Took this chance to fix a number of data structures that might not be multiplayer client-sync safe based on the fact that MP sync data might be missing and might need a catch-up:<br />
** AIReservesData (constructor updates, DeserializeExternalData updates).<br />
** Okay, 33 other classes needed the same update pattern, so we'll save you the list of going through all of those again.<br />
** Added a new ArcenExternalSubManagedData class, which all 34 of those classes now inherit from.<br />
*** This lets the increasingly-complex central logic from DeserializeExternalData be written only once, not 34 times.<br />
**** This is all handled, for the default case, via the new generic method DeserializeExternalDataAsArcenExternalSubManagedData().<br />
*** Also worth noting, we can no longer use constructors with arguments on this, because of how the logic is centralized. The default constructor is always called now, and then DeseerializeIntoSelf() is called after that if needed.<br />
**** This is doubly worth noting, since it makes sure that there are no cases where object initializations from the default constructor are not called.<br />
<br />
* While we are at it, we're marking the various lists and other collections as readonly in ArcenExternalSubManagedData-inheriting classes.<br />
** This helps us avoid ambiguity and extra code, and is a double reminder for us to review places where we could get into infinitely-expanding lists on multiplayer clients.<br />
*** Fixed the following infinite-expanding collections for multiplayer clients:<br />
**** The FinalComposition dictionary on PlannedWaves was going to infinitely expand while waves were incoming.<br />
*** Fixed the following "accidental data churn from throwing away collections on multiplayer clients":<br />
**** The DZPerUnitData ConversionList and ConversionBag.<br />
**** The metalByTier on DysonData.<br />
<br />
* Added a new ArcenExternalSubSubUnmanagedData abstract class for classes that is for the sub-data types that a few things use, like DarkSpirePerPlanet.<br />
** This adds some structure, but is not as fully managed as the main classes above it. These again help us to avoid some bad habits that can lead to memory leaks on clients.<br />
<br />
* Fixed a general cross-threading issue that could happen with Loci_ForUI in the dark spire. This could happen in single player or multiplayer, and we found it because of the new code rigor enforced by these new abstract classes.<br />
<br />
* The DeserializeDictionary utility method, and a few similar ones, no longer take their dictionaries as a ref parameter. That's now allowed syntactically for readonly dictionary fields, and it's not needed logically at all for dictionaries as a whole, which are reference objects and thus always passed by reference no matter what.<br />
** Same deal with ArcenRandomDrawBags, for the same reasons.<br />
** And same for some various working methods that were passing generic List<>s with ref explicit. It doesn't matter if the contents of the list are a value type, the list itself is still a reference type.<br />
<br />
* Fixed a client-only bug where certain things were being cleared incorrectly on the DLC2 "ZM" faction data object during faction sync, but now are not.<br />
** In that same faction, fixed another of the "ForUI" list cross-threading issues.<br />
<br />
* Added a ClearAndCopyFrom() method onto ArcenSparseLookup, which does what it says on the tin.<br />
** This is useful in places where we are no longer shuffling around sparse lookups by reference (think pointer), but instead are now keeping the lookups but needing to copy from one to another.<br />
** The need for this is pretty rare, but it's used in wave planning.<br />
<br />
* Discovered a rather dire issue from the last week or so, and have fixed it.<br />
** Essentially, the objects that previously inherited from IArcenExternalDataPatternImplementation (and now from a descendant of ArcenExternalDataPatternImplementationBase) are NOT UNIQUE per object.<br />
** So the fact that we were starting to store the ParentWorld and ParentSquad and so on on those was actually a major problem, and probably a source of some sort of random bugs in single player and multiplayer.<br />
** We were mostly saved by the fact that we ignored those properties and were using the Source object cast properly, which is what was supposed to happen.<br />
** But upon refactoring things, we ran into increasing problems with this. It has now been corrected, and this should hopefully also prevent us (or a modder) from making the same error in the future.<br />
<br />
* With the new way that we are using readonly for collections on the ArcenExternalSubManagedData and ArcenExternalSubSubUnmanagedData, we have to initialize all those collections properly in the constructor, which was not always happening before.<br />
** We now are just initializing them as part of their definition itself, which is easier to check for correctness and has the same end result and performance.<br />
** If we missed any of these, or heck if we made any typos in the many many other changes list above, then there will be errors when loading certain savegames or when during certain parts of gameplay.<br />
** We should be able to fix such issues very quickly, and for now we're not seeing any issues, but we'd definitely appreciate testers in both singleplayer and multiplayer.<br />
<br />
* It goes without saying, perhaps, that this breaks all of the code-style external mods again. We will probably break those a few more times in the coming weeks as we get things multiplayer-safe, and then will stop that.<br />
<br />
== Version 2.505 Multiplayer Alpha Starts, Take Two ==<br />
(Released September 14th, 2020)<br />
<br />
'''Let's try this again! This is one big reason we did a "soft launch" into MP alpha. If anyone is able to test tonight and let us know how it goes for you, then we will probably make the official "hey there's multiplayer alpha now!" posts tomorrow, unless new showstoppers are found. At this point there's the periodic minor "waiting for players" micro-hitching annoyance, but beyond that being a small thing, Chris was able to play for 18 minutes between two computers across Valve's network tonight. No permanent sync issues, no degradation in performance, nothing that seemed glaringly off. There will be more bugs, but the core stuff -- knock on wood -- seems to be working. [[:Category:AI_War_2:_All_About_Multiplayer#Selected_Short_Term_Todo_List|There's a good list of things that need to be done in the near term here]], and that's just in terms of general functionality, not MP-specific features.'''<br />
<br />
* Fixed a bug where "??? Name" was showing up incorrectly in the factions list in the prior build.<br />
** Thanks to Badger for finding the typo.<br />
<br />
=== Multiplayer Sync Initial Implementation Now Tests Out Initially Working ===<br />
<br />
* Followed several paths of code trying to fix the ship sync, but ultimately wound up reverting a lot of that code after we found the actual cause.<br />
<br />
* Found a one-line typo that was leading to infinite duplication of every fleet on the client every few seconds.<br />
** Essentially every fleet was trying to match to fleet 0, and never finding it, and then creating a new one.<br />
** This was leading to a really devastating amount of duplicate data, and confusing everything on the client.<br />
<br />
* Manually reviewed the code for all similar things, including factions and planets, and all of those seem good for now.<br />
<br />
* Discovered that it was possible for extra fleets to wind up on the client just hanging around after a full fleet sync. Those extras (usually were only one or two) now delete themselves.<br />
<br />
* The clients no longer automatically add 1000 to all of the PKIDs that they are syncing from the host. We welcome the extra conflicts at this point... maybe... as it will also lead to some sometimes-correct things that don't need to sync.<br />
** This was something we were doing as of a couple of versions ago in order to try to prevent things from fighting over the same dictionary spot.<br />
<br />
* At this point we have far fewer syncs needing to happen between the host and client, which is awesome.<br />
** The number of ships and fleets is consistent between the client and host, and the energy usage is also consistent, and so on (though energy usage may be misleading since that gets synced from the host as part of the ultra-frequent processing).<br />
** A bunch of ships are showing up as invisible on the client for whatever reason, we know for certain, but those ships that are showing up maintain sync properly.<br />
** There are still some extra ships in ship fleet lines on the client that should not be there, and may just be duplicate references to existing ships.<br />
** Overall the total stats on the number and size of messages sent and received on the clients and the server seem to be incorrect, although sub-parts are often correct.<br />
<br />
* The "Deletion Time!" header in the ship sync details log now only appears when there is actually something to delete, which is not all that frequently anymore.<br />
<br />
* Fixed a bug on the client and host in multiplayer where the total messages received, and the total bytes of them that were received, were far too low. A filter based on message type was incorrectly being applied to these overall counts, where no filter should have been applied.<br />
<br />
* Fixed the remainder of the network messages still not being properly logged, in size or number. There are two places where filters applied, and we missed the second one at first.<br />
<br />
* Fixed an issue where ships that were network-synced were properly added to fleets and the global registry, but NOT to the planet faction (and thus faction) registries. So they were showing up as invisible, despite syncing properly as of today.<br />
** Now the ships show up just fine!<br />
<br />
* Previously we had put some logic in place to not delete ships too fast on the client if they were not discussed by the host in a sync pass. But now that the sync passes are working, this is no longer needed (and in fact actively makes things look wrong for seconds at a time).<br />
** The game now does a much quicker job of removing these extras, and consequently there are not as frequently extra ships that should not exist in the fleet memberships sitting around.<br />
** It's worth noting that for 3ish seconds at a time right now, it is possible for these ships to hang around (but they only appear on the client, and can't be given any orders, which is confusing and annoying but a comparably minor thing and will be tamed soon when we improve how PKIDs are allocated so that fewer clashes happen.<br />
<br />
== Version 2.504 Clarity And Fair Play ==<br />
(Released September 14th, 2020)<br />
<br />
'''We're no longer on the beta branch, because we don't think that this will negatively affect the single player experience. However, multiplayer's alpha is still not ready to go. This build is focused on fixing things up to get things back working properly for single player (which of course also affects MP), and we'll be resuming work on getting MP ready now that this is out.'''<br />
<br />
* If a player-allied faction kills something that would grant rewards (science, hacking, metal), the game now sees if there were player ships on the planet too. If so then it grants the rewards to the strongest player on the planet.<br />
** This seems the path of least frustration for players<br />
** Thanks to Ymir for the bug report, and others for a spirited discussion on steam.<br />
<br />
=== Bugfixes ===<br />
<br />
* When placing wormholes on a planet, the game now makes an effort to make sure they aren't on top of eachother. In very rare cases, some map types could wind up with wormholes that basically overlapped eachother, which was very hard to work with.<br />
** Thanks to Mac for pointing this out.<br />
<br />
* Fixed a longstanding issue with the number of entities contained within a ship where it was showing much lower numbers than appropriate, because we were indexing into the wrong array of display numbers. Above 100 units, it should now show much more appropriate numbers.<br />
** Thanks to TechSY730 for the report that finally tipped us off to the potential cause of his strange area.<br />
<br />
* Fixed an issue that could cause exceptions in the target list sorting if ships died at just the wrong moment.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed a very unexpected bug that our recent extra-strict ExternalData checking logic let us find. Essentially it was somehow possible to get a second Praetorian Guard faction for a single AI, although we're not quite sure how. The game now actively clears those out when it is loading a savegame or settings as a template, to keep you from having double-strength PG forces for no apparent reason.<br />
** Thanks to Deathlymad and Metrekec for reporting, and for providing the savegame that let us practice testing and fixing the issue.<br />
<br />
* Fixed an exception that could happen at various times if the spire debris data was null when it was thinking about making notifications relating to them.<br />
** Thanks to jradishurr for reporting.<br />
<br />
* Fixed a minor visual error where it would say "ERROR: my FleetMembership is null!" if you were viewing a tooltip or popup window with a ship in it that had died. It now will say "This ship has died." instead, if the ship properly died (which is likely to be the case).<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Preventatively 'fixed' theoretically-possible-but-not-encountered bugs (that might not actually have been bugs in the end relating to the following, all based on the new ExternalData changes:<br />
** Winning a game and getting a superterminal achievement (probably not likely).<br />
** Exceptions in notifications about wormhole invasions (this one probably would have been hit eventually).<br />
** Exception in notification tooltip about spire debris (again was likely to be hit).<br />
** Exception in notification tooltip about instigators (very unlikely).<br />
** Two exceptions in notification tooltip about astro trains (somewhat likely).<br />
** Exception in notification tooltip about relic trains (unlikely except maybe for multiplayer client).<br />
** Exceptions in five tooltips for DLC2 (likely to be hit).<br />
** One other exception relating to DLC2.<br />
** Possible exception with the Shark B plot on.<br />
** Several possible exceptions in writing out the list of AI factions and their subtypes (most were very unlikely, except maybe in multiplayer on clients).<br />
<br />
* Fixed a pretty huge bug where if certain entities died to remains (rather than permadeath), they would give AIP every time they died to remains, but when the normal permadeath setting was on they gave no AIP. This was the opposite of our intention and has apparently been incorrect since July 23rd.<br />
** This meant that things like GCAs, etc, would not give their proper AIP on death.<br />
** Thanks to ParadoxSong, Strategic Sage, crawlers, Isiel, and Puffin for reporting and helping track this down.<br />
<br />
* Regular engineers are no longer part of the fleet membership selections for anything that you can get via battlestations or citadels. Instead, combat engineers are used for those cases.<br />
** This will not affect existing savegames, only new ones.<br />
** Thanks to ultamashot for the report.<br />
<br />
* On September 6, we added the following: "QoL tweak for repair. Any ships on a planet where you outnumber the enemies 10 to 1, or the enemies have less that .2 strength are eligible to be repaired immediately. The previous rule was 'Any ships on a planet without enemies'"<br />
** This now only applies to ships and structures of factions that are friendly to the humans. Any neutral or enemy factions will now use the old style of logic that existed prior to September 6th.<br />
** This prevents the AI and Exos in particular from developing invincible shields when they have overwhelming firepower against you, among some other unintended consequences.<br />
** Thanks to TechSY730, crawlers, and MasterGeese for reporting.<br />
<br />
=== Fireteam dynamic resizing ===<br />
<br />
* In the late game, powerful factions can have hundreds or thousands of fireteams, which can make LRP threads run very slowly.<br />
* Each faction using fireteams has some variables that control 'how large should my fireteams be'. <br />
* Now for every 50 fireteams a faction has, it will require future fireteams be larger 1.5x larger. If a faction starts losing fireteams, the size requirements will go back down<br />
** The end result is fewer but larger fireteams, which should be a nice performance boost. Note this won't really help existing games as much as it will help new games to never have that many fireteams at all. Applies to all factions that use fireteams except the Imperial Spire, since that ends the game quickly<br />
<br />
=== AI Difficulty Description Rewrites ===<br />
<br />
* The tooltip descriptions for AI difficulties have been updated after folks have given us indication that there was some confusion based on the old ones (particularly sometimes players felt bad for playing too low, or did not understand the true purpose of difficulty 10, etc):<br />
** Difficulty 1:<br />
*** Old: So easy it might be asleep.<br />
*** New: The AI is effectively dormant; this difficulty is good for practicing the game without any real opposition.<br />
** Difficulty 2:<br />
*** Old: Actively does stupid things.<br />
*** New: The AI will only utilize its most basic subroutines. Retaliation will be minimal in response to your efforts.<br />
** Difficulty 3:<br />
*** Old: Excellent if you're just wanting to mess around with no stress and you've never seen an RTS, ever, before.<br />
*** New: The AI is conscious, but will operate primarily in a reactive capacity. Most of your opposition will be in the form of defensive AI forces in enemy territory.<br />
** Difficulty 4:<br />
*** Old: If you're only vaguely familiar with RTS games, this might give you an interesting time. But bear in mind all the cool and clever tricks aren't remotely here for the AI yet.<br />
*** New: If you’re ready for a little push-back from the AI and some confrontation on the homefront, this will be a good introduction to some of the behavior you can expect from higher difficulties.<br />
** Difficulty 5:<br />
*** Old: If you're here for the first time, but know your way around RTS games, this isn't an awful place to start. The AI is partially brain-dead still, but it should give you an interesting time. But if the game seems too easy, you'll know why.<br />
*** New: The AI takes your presence a bit more seriously. You may find your attention split from time to time and will have to more carefully consider the repercussions of your choices and how the enemy will react to them. Ongoing reckless expansion on your part has the potential to incite a deadly response from AI.<br />
** Difficulty 6: <br />
*** Old: If you're solid at RTS games, then this is what would typically be considered 'Normal' for you... potentially. The AI doesn't have its full bag of tricks yet, but it's still pretty crafty and is starting to have some of its tricks. This difficulty is also great to use if you're really wanting to have the AI be there, but some other factions be the MAIN threat. This will keep the AI interesting but not on your back all the time.<br />
*** New: Against a Difficulty 6 opponent, your choices are really starting to matter. You will notice more devious tactics being used by the AI and will need to watch your back as you claim assets and territory. Other factions have the potential to be more threatening depending on how you set them up, but the AI will continually make its presence known.<br />
** Difficulty 7:<br />
*** Old: Players in the first game had a saying, that 'the real game starts at difficulty 7.' And while that is kind of... rude?... there is also some truth to that, in that the AI is finally fully unshackled. There are a few truly nasty things for the AI that you would still need to turn on in the AI Behaviors section of the Options tab if you really want full pain, but this is a fully competent AI. This is also the difficulty that Chris, the original developer of the games, plays at. It's fun and he can play in a relaxed fashion and not be super focused on every detail, but still win only about a third of the time playing that way. So if that gives you some measure. He plays most other RTS games on their max difficulty or close, not that that's always saying much.<br />
*** New: This is where the AI stops holding back and utilizes all of the strategies and resources at its disposal to try and keep you at bay as your power grows. Its economic power is still somewhat limited, and while you can still get away with being a bit of a nuisance early on, the enemy won't hesitate to put you down if you make yourself too much of a threat.<br />
** Difficulty 8:<br />
*** Old: This is the sweet spot for veteran players. The AI has all its tricks, and has a bit of a stronger economy and stronger responses, too. You COULD make the argument that the economy of the AI at difficulty 7 is a bit on the weak side, so it's not that this is a cheaty AI or something. For players who are really paying attention and managing all the small things and want to have a drag-out battle, this is the difficulty of choice. If Chris really wanted to white-knuckle it, he could probably maintain his 30% winning streak at this level. But he's not into that kind of stress. There's a good chance you're better at RTS games than he is, though, if you're a veteran in particular, so maybe that's not so much stress for you.<br />
*** New: If you take the fully-functional Difficulty 7 AI, provide it with a bit more fair allotment of assets, and make it more sensitive to your actions, this is where you end up. Ideal for veteran players really looking to test themselves.<br />
** Difficulty 9:<br />
*** Old: Are you super awesome at RTS games in general, and this one in particular? Difficulty 8 is just proving too passe? This keeps all the tricks from before, but cranks up the economy and some of the frequency with which the AI will harass you. You could argue that at this point it is getting to be slightly a 'cheating AI,' but frankly things are so lopsided it is hard to make that kind of distinction. If you're so much better than the average player at managing your empire, then... I guess this is kind of taking away that advantage that would otherwise let you roll the 'fair' AI? We get into murky waters here, but a subset of veteran players enjoy this difficulty, so here it is.<br />
*** New: Making for an exceptionally tough adversary, Difficulty 9 stacks the odds in favor of the AI. Armed with a robust economy, the enemy will be ruthless in their attacks and relentless in their harassment of your defenses. To overcome this challenge, you will always need to be on full alert to prevent the AI from exploiting any weakness in your strategy.<br />
** Difficulty 10:<br />
*** Old: This difficulty level is not meant to be fair. It's using all of the AI's legitimate tricks, and it has its economy and whatnot cranked up to 11. If you win against this level of AI, that's something that we traditionally consider 'a bug.' You are supposed to lose, every time. Please file a bug report with how you won so we can fix it. So why do we have this difficulty level? There are some players who are just THAT GOOD, and they spend their time trying to find weaknesses in the AI despite its unfair advantage. A lot of improvements to the AI have come about because of players on difficulty 10 telling us how they won. We usually adjust unit balance or AI logic in response to difficulty 10 victories, we don't just make difficulty 10 harder. That would defeat the point.<br />
*** New: Economically, the 'SuperCat' AI gets a substantially unfair advantage. Militarily, they still play fair but will be able to bring overwhelming force against you in most every situation, all the time. A subset of dedicated players enjoy this difficulty level, but it is not fun for most. Beating the SuperCat even once is considered a crowning achievement, and usually involves a player discovering an unbalanced tactic. If you find yourself in the enviable position of being able to have your name added to those who win a 'pure' difficulty 10 win, please file a bug report with any tips you have on how we can (legitimately) upgrade the AI to counter your winning strategy. This back-and-forth arms race between the players and the developers has led to some of the most interesting innovations for all levels of AI for the game (and its predecessor), and it is also a very specific style of brutal gauntlet that certain dedicated individuals enjoy throwing themselves into.<br />
** Thanks to Tzarro for writing the new descriptions for us, except for the new difficulty 10 description.<br />
<br />
== Beta 2.503 Multiplayer Not Quite Ready ==<br />
(Released September 11th, 2020)<br />
<br />
'''This remains on the beta branch in case there are more singleplayer issues. As far as multiplayer goes, things are not stable enough to do any real testing. There is an issue of some sort that causes fleets to infinitely multiply copies of themselves on the client, which leads to a lot of lag and other problems. There's also an issue with various ships syncing in and out of existence in funky ways, which essentially makes multiplayer unplayable. This is something that is going to take more hunting, but it's all one cluster of issues, and once it's resolved multiplayer should be pretty ready to go. Really glad we did a soft launch! It would have been awesome to have people able to play multiplayer over the weekend, but we're just not quite there at the moment. Hopefully in the first couple of days of next week we can figure this out, but for the moment our brains are fried. More to come soon!'''<br />
<br />
* There's now extra error handling in the "stage 3" faction logic, to keep that from ending the entire game when those happen. It reads:<br />
** DoPerSecondLogic_Stage3Main_OnMainThreadAndPartOfSim Error for faction [name] (index [a number]). Consider restarting the game, as many other things may now go wrong because of this first error. And please report this! Error: [error text]<br />
** This will probably solve things like paralysis counters not counting down when there are such errors, but you're still likely to have a strange time.<br />
** Thanks to StarKelp, Mac, and gigastar for reporting.<br />
<br />
* Fixed a bunch of places in notifications where it was still looking to the old locations for an out of date icon. We will have real icons in the future for those, but for now the placeholder will no longer throw an exception.<br />
** Thanks to jrad for reporting.<br />
<br />
* Fixed an exception that could happen when killing instigator bases, in the notification tooltip for them.<br />
** This is another regression... kind of... from the last few betas. This actually will make clients more robust in multiplayer, though, so it's better than just a straight regression fix.<br />
** Thanks to TechSY730 and jradishurr for reporting.<br />
<br />
* The Civilian Industries mod has been updated to be compatible with the new versions of the game.<br />
<br />
=== Multiplayer Ship Sync Fixes ===<br />
<br />
* Added a setting to the networking section of the settings menu: Log Human-Readable Ship Network Syncs To Disk<br />
** Only relevant on multiplayer clients, not the host. Will majorly slow the game down, but dumps a huge amount of networking info to the disk in the NetworkHumanReadablyShipSyncLog.txt file in the PlayerData folder. This gives a message for each ship that was changed or deleted and why that was done, as well as what planet it was on and who owned it. When syncs are doing funky things, this is a way to manually review it and find out why.<br />
** This required us putting in a LOT of extra code to handle log<br />
<br />
* The current sync cycle is now sent with the divergent data sets, hopefully leading to clients not deleting things they just fixed (because that was totally happening before. Logs are a magical thing.).<br />
<br />
* Discovered a major oversight in our sync code, where basically once something had been synced once it was then being synced every sync cycle forever after that.<br />
** This was a huge cause of lag for multiplayer, and made things disappear inappropriately, probably.<br />
** There are still other things wrong with the ship sync, though, that we can see in the new logs.<br />
<br />
* The sync code has been made more robust in general, now syncing the type of entities as well as what faction they belong to.<br />
** These are often incorrect, when there are catastrophic different uses of primary key IDs anyhow, so getting those right is a good thing.<br />
** It occurs to us that maybe this is overkill, since if these are wrong then probably the planet or at least the location would also be wrong? But... let's leave it in for now, and maybe make an option later for skipping it. It's not a lot of data to transmit or a lot of extra processing.<br />
<br />
* Fixed a couple of issues with reusing entities as different ship types, where it will now properly add or remove or reassign system types on them.<br />
<br />
* Fixed some issues with reusing entities during sync where they were not being added back to the central lookup of entities, leading to future syncs to fail on them forever.<br />
<br />
* Put in some logic to improve the number of loops before we remove something that isn't being synced properly, to make it based on the number of loop counts rather than the amount of time something has been alive (since things that have been alive for a while can get fully synced later).<br />
<br />
* Fixed some conflicts that could happen with entities in the central lookup on the client in multiplayer, if the order of registering and unregistering entities gets out of sync.<br />
<br />
* Intentionally desyncing the PKIDs of ships, wormholes, and fleets on clients compared to the host.<br />
** Trying to reuse entity IDs was often causing some notable problems, and they were rarely in sync as it was.<br />
** This forces a sync cycle for every new ship and fleet that is created, but makes conflicts on the client a lot less likely.<br />
** This may not be a good long-term solution, but a refactor to avoid the conflict space is potentially where we're at, honestly. That will take days, and add a lot of bugs temporarily, so it would be great to avoid it.<br />
<br />
* At the moment the game creates infinite extra fleets on the client, slowing it down progressively. This makes it effectively unplayable.<br />
** There are also about a thousand ships that it will routinely delete from the client, then re-add, then delete again. Also making things unplayable. Still looking into it, but this is likely to be a Monday thing, as this is not a simple matter.<br />
<br />
== Beta 2.502 Regression Fixes ==<br />
(Released September 11th, 2020)<br />
<br />
'''Note that this build is still in beta in order to let people have a chance to run into any more regressions that we may have introduced. So far none of the regressions have indicated any errors in older builds, which is a nice thing. Though in the process of making the prior beta build, we did fix a number of "useless extra data" things, so even if we don't find any new bugs that were older, these regressions were still worth it to ensure data accuracy. It is quite annoying in the short term, though, and we really appreciate the folks taking the time to test it out.'''<br />
<br />
* Add some new voice lines when the player is attacked by the Nanocaust<br />
<br />
* Hopefully Zenith Forcefield Generators will now return after being pushed<br />
** Thanks to GreatYng for reporting, and Puffin for reminding us of the fix<br />
<br />
* Fixed a bug from the last couple of builds where chat commands were failing in general.<br />
** Thanks to Magiik, MasterGeese, gigastar, and Richard333 for reporting.<br />
<br />
=== Fixes To Regressions From Prior Beta Build ===<br />
<br />
* Fixed a bug in the latest beta build that was causing new games to constantly error out with autosave data not being added properly.<br />
** This is one of those "externaldata is now more explicit" things, but this is an example of us choosing the wrong explicit option this time around.<br />
** Thanks to Puffin for reporting.<br />
<br />
* Fixed an exception that could happen when trying to generate notifications about AI reserves before their data was initialized. This was caused by the last beta, but is better to have it handled this new way (so, yay error, this time).<br />
<br />
* When there are errors in generating a galaxy, it now no longer lets you into the galaxy to play (since that leads to many random errors after the real one with the map not generating).<br />
** Random things might include lots of planets belonging to no one, among other things.<br />
<br />
* SeedStartingEntities_LaterEverythingElse during mapgen now has a lot of new exceptions it can throw if various data is missing that it is supposed to have.<br />
** Mostly these are related to the AI and its subfactions (hunter, warden, and PG), but there's also one for if risk analyzer data is missing.<br />
** Prior to the last beta, it seemed to have been just using blank data, although it's impossible to be sure. And in the last beta, it was throwing an exception.<br />
** We then tested all of the factions in the game and the first two DLC, and the only three types that threw exceptions in this area were the AI subfactions (hunter, warden, and PG).<br />
*** We could use more robust testing of the game starting with various factions and them having various settings, though, to make sure that it's all going across properly (this is just in single player, not even multiplayer).<br />
** Thanks to Puffin and jradishurr for reporting.<br />
<br />
* Fixed four typos in the last beta that were not properly having the "related AI and subfactions" properly reach for one another, which led to missing or misapplied settings on game start.<br />
** This then left the Praetorian Guard still not working properly, because they have no custom fields in the lobby and thus were never having a reason to initialize. That probably was not a problem, but to keep things consistent and safe we are now initializing it when the general "AIDifficulty" field is processed.<br />
** For the record, prior to the most recent beta this means there were not actually any errors, but now we do have protection in place in case such an error pops up in the future. But for the time being, these errors were just in the most recent beta, which is gratifying to know.<br />
<br />
* Fixed a couple of logic errors with risk analyzers in the most recent beta that was causing their notification to show up wrong as well as also firing them immediately on game start.<br />
** They now should work properly again, and if the notification is going to be wrong, it will be more informative in its wrongness.<br />
** Also fixed the fact that this could happen when AI Risk Analyzers were not even enabled as a faction.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Beta 2.501 First Raft Of Multiplayer Fixes ==<br />
(Released September 10th, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG because of how much we changed with the "ExternalData Accidental Creation Avoidance" section. There may be legitimately new bugs that we introduced from that, or there may be old bugs that now simply show themselves with error messages. Either way, we don't want to inflict that on everyone, so please use the beta branch to help us test this one out.'''<br />
<br />
* There is a '''list of known issues with multiplayer''' here: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#Selected_Short_Term_Todo_List<br />
** It's debatable how playable the alpha is at the moment, given the issue with the client ships deleting themselves rather than syncing, and given some of the (essentially) client-side memory leaks. Those two things will be my main priority tomorrow, unless something else more pressing comes up (like fixes to things broken by the ExternalData stuff).<br />
<br />
* A new button has been added on the main menu above the forum link that links directly to the AI War 2 discord channel.<br />
** Thanks to Metrekec for suggesting.<br />
<br />
=== Better Default Screen Resolutions! ===<br />
<br />
* Fixed a bug where the fullscreen resolution was still being saved into newsettings.dat rather than graphicssettings.graphics.<br />
** This meant that the fullscreen resolution was being sent over cloud sync, when really that should not be, since that is a machine-specific setting.<br />
** This may wipe out your prior values for the fullscreen resolution, requiring you to set it again.<br />
** Thanks to jrad for reporting.<br />
<br />
* At long last, added a startup feature that folks have been wanting for a while: better default screen resolution, for a better first impression as people start the game for the first time.<br />
** Previously, this particular game was just having a default of opening in windowed mode and 1024x768px, since that will fit on most monitors.<br />
** One of the reasons for this is that opening directly in fullscreen mode can cause bugs, particularly when settings are copied from one machine to another. But we are using fullscreen windowed mode, which reduces the chance of fullscreen bugs, and we also have our graphics settings not set to cloud sync for the last year or so.<br />
** With that said, now the game will automatically (first time opening it on this or future versions on any given computer) set itself to be fullscreen mode with your desktop resolution.<br />
*** It also will set your windowed mode defaults to be your desktop resolution minus 80px width and 100px height. So if you do flip it back to windowed mode, it should be at a size that feels sensible for your machine.<br />
** If you are using a very high-DPI monitor on an underpowered machine (for instance how Chris is testing with a late 2013 MacBook Pro 15" that is below minimum specs for the game), then you may want to lower the fullscreen resolution to something that machine can handle more gracefully (for instance, with ship graphics off and only running at 720p, that below-specs machine runs the game great).<br />
** Note: if you are already in fullscreen mode, then unity just reports what your current fullscreen resolution is. So it will save itself to that, and then set your windowed mode resolutions to be a bit smaller than the current fullscreen mode. Normally this game opens for the first time in windowed mode until this logic kicks in, so this only applies if you already have a current fullscreen setting active.<br />
<br />
=== Multiplayer Fixes From First Alpha ===<br />
<br />
* If there is a null result from FindArcenSteamClientConnectionByConnectionID in OnMessage on a Steam host, it now will write a more detailed and informative message as to why.<br />
** Additionally, in general OnMessage on the Steam server and client is now far more instrumented if those wind up with issues.<br />
** This won't actually solve any problems, but for the case where there was a client disconnect on connect, this should tell us what is going on more.<br />
** Thanks to StarKelp for reporting.<br />
<br />
* The numerical order of the detailed networking sync logs is now better regardless of OS file sorting, as it gives leading zeroes where needed.<br />
<br />
* While in the lobby, or while players are still connecting, the game no longer tries to run the general sync-correction code. This was an oversight in general, and was leading to various errors that would keep popping up until the host saved in-game and clients disconnected and reconnected.<br />
** This was the chief cause of the ""Fixed attempt to read more faction data than we had factions" error on the client.<br />
** Sync was already being handled as well as it needed to be in the lobby in particular: all it needs to do is make sure that your UIs are consistent, which it does. The actual underlying data about incomplete factions and such that can't be seen yet are really quite irrelevant at that point, and so it actually skips a lot of that data, which was incompatible with the full main-game-style sync. As soon as you start a game from the lobby, it already doing a much more robust generation and transmission of the data.<br />
** After loading into the game from the lobby, however, it seems that that initial sync is not as complete as we had hoped, so that's another area for us to now investigate.<br />
** Thanks to StarKelp and his play group for reporting.<br />
<br />
* Fixed a bug in deserializing player accounts, which was something that was leading to the immediately-after-lobby sync being broken.<br />
<br />
* Fixed a harmless extra blank fleetID that was being sent as part of the PeriodicWorldExtrasSync, which made them look inconsistent but did not cause other problems.<br />
<br />
* Fixed a larger bug that was actually preventing deserialization of divergent ships from working properly if the ship did not already exist on the client.<br />
** We had fixed this the other day, but made a mistake in the fix and had to do it over. Now it works!<br />
<br />
* There are still some more issues with syncing divergent ships that have external data on them, and we're not sure why yet.<br />
** The deserialization code for external data now has extra error handling in general, so that we can be more informed if something like that happens during sync or a load off of disk.<br />
<br />
* On the ArcenSerializationTester, added AppendIfActive() and AppendLineIfActive(), which are basically like Append and AppendLine().<br />
** These return a ArcenSerializationTesterWriter so that they can be chained into concisely readable calls like other parts of the code.<br />
** We want to be able to write more complex data in for informational purposes without it being the full WriteHeaderStringIfActive(), and without having to do string concatenations that hit the GC.<br />
<br />
* Several pieces of new logging are now in place to help us more easily identify problems syncing unit data, and external data in general.<br />
** We were seeing some mighty funky stuff on ExternalData syncs failing in multiplayer, and are trying to understand what is happening and why.<br />
<br />
* A WHOLE lot of extra error handling and instrumentation has been put in place around ships and externaldata in general.<br />
** Basically if something goes wrong, we don't want it to do so semi-silently. The various problems that most people were seeing in the first multiplayer alpha version were really downstream issues from the real errors, which were largely silent.<br />
<br />
* Found and fixed a part of the externaldata serialization that could be null in some cases, requiring us to instantiate it even on a partial sync.<br />
** This is something that we had already guessed we would have to do, based on us doing the same thing with ships themselves last version, but the silent errors happening here took us several hours to figure out what was going on. It's fixed now, but there will be more cases of this, probably.<br />
** With this fixed, the divergent ships no longer throw any errors. However, there are still some major differences between the client and the host that need to be looked at.<br />
<br />
=== ExternalData Accidental Creation Avoidance ===<br />
<br />
* Put in several fixes to potentially remove ScourgePerUnitExternalData from accidentally being created on any unit that was part of a fireteam.<br />
<br />
* This is going to break code mods temporarily.<br />
** GetCollectionByPatternIndex() on externaldata now takes a new ExternalDataRetrieval enum, which can either be CreateIfNotFound or ReturnNullIfNotFound.<br />
** The default used to always be CreateIfNotFound, which was nonobvious and was causing things like scourge data to appear on non-scouge units. But very likely it was also causing all sorts of other data to be erroneously initialized. This wouldn't have broken anything, but was certainly bloating savegames prior to this version.<br />
** For reference, all of the methods for getting these are expected to follow this sort of pattern: GetScourgePerUnitDataExt( this GameEntity_Squad ParentObject, ExternalDataRetrieval RetrievalRules )<br />
*** In the main game and first two expansions, this led us to having to correct 112 locations in 26 files. That in turn required another 705 secondary fixes.<br />
**** This may seem excessive, but being able to verify that we are correctly initializing data only when needed is a worthwhile goal, and it makes code clarity so much greater.<br />
*** There are a variety of places that this may make a difference based on our changes thus far (aside from whatever bugs we have introduced):<br />
**** Reinforcement spawning may be more correct now. There was previously some logic that may never have been hit if it was originally pointed at a non-sentinels faction, but now it will hit it.<br />
**** AI sentinels data will no longer be put on every faction during the post-victory achievement check. That was likely causing some problems (which someone had put a mantis report about post-victory slowdown and exceptions, so it's possibly related).<br />
**** When checking faction intensity in general, a whole host of wrong data collections are no longer created on random factions.<br />
**** Several things about astro trains can no longer cause accidental data on wrong factions.<br />
**** If astro trains that should be spawning AI waves or adding to the AI budget are pointed at a wrong faction, the data no longer goes into the void but instead an actual error pops up.<br />
**** Several hacks will now show exceptions rather than throwing their data into the void if they are pointed at wrong factions.<br />
**** There are a wide variety of places where the AI difficulty or AIP of an AI were referenced, and which might now throw a nullref exception. If any of those DO, then that is actually a good thing, because in the past those have silently been returning 0 for both rather than using real numbers. If neither of those cause any errors, then that's even better because we know our other code has been correct already. Fingers crossed for more of the latter than the former.<br />
**** Any time any fireteam was disbanded, all of its units were assigned blank scourge external per-unit data. Fixed. Oh, actually every time it looped over the units in a fireteam. Fixed that, too.<br />
**** ExoData is no longer added to every last faction in the game (notifications checks were causing that).<br />
**** It's possible that some tooltips or notifications might throw exceptiosn now, particularly if you load a savegame and mouseover them before unpausing. If these throw exceptions, then basically this is a case where it would have been gibberish data previously, so it's still useful.<br />
**** Various pieces of code like "don't run the nanocaust info if it's not set up" will now work as their programmers likely originally intended.<br />
** This probably introduced a number of new bugs from typos, along with whatever bugs it uncovered, so this is why we're heading back into the beta branch temporarily.<br />
<br />
== Version 2.500 Multiplayer Alpha Begins Now! ==<br />
(Released September 9th, 2020)<br />
<br />
* Removed some extra code that was accidentally included that was preventing the new findp command from being able to cycle through planets properly if there were multiple matches.<br />
** Thanks to cml for reporting.<br />
<br />
* PlayerAccounts are now also passed to cheats/commands (not to be confused with gamecommands), so that now if there are multiple people in charge of a single faction, commands that are sent can affect just one of the players if needed.<br />
** This is now used for the findp command, which lets two players share control of a single faction without the findp of one player affecting the other.<br />
<br />
=== Multiplayer Readiness In The UI ===<br />
<br />
* The multiplayer button on the main menu now has a small bright "Now in public alpha!" tag on it, to make sure no one misses that.<br />
<br />
* In the multiplayer section of the main menu, a new "Alpha Testers: Please Read!" button has been added.<br />
** This has a tooltip that says:<br />
*** Click to open a web browser that explains the current state of the multiplayer alpha (that changes almost by the day), as well as questions for testers (also get frequently updated), a history of recent improvements to multiplayer categorized by date, and a list of work items that are upcoming.<br />
*** Most important of all: if you are running into problems, please take the time to report them to us, rather than assuming someone else will report it. That is absolutely the most helpful thing we can ask for.<br />
** And its link goes here: https://wiki.arcengames.com/index.php?title=AI_War_2:Multiplayer_Alpha_And_Beta#What_Does_Multiplayer_Alpha_Mean.3F<br />
<br />
* At the top of the networking section of the personal settings menu, there used to be an option called "Enable Multiplayer Alpha"<br />
** This had warnings about how multiplayer alpha was not ready, but that you could click this to enable it anyway.<br />
** This option has, happily, been removed!<br />
** Previously, if that option was not enabled, then clicking the Multiplayer button on the main menu would show a popup with a message from Chris explaining the current state of multiplayer and projected timelines.<br />
*** That message has been removed, and clicking the multiplayer menu now just opens it, again, happily.<br />
<br />
=== Included Mod: Civilian Industries Pre-Multiplayer Finalizations ===<br />
<br />
* Final optimizations for Multiplayer, touching up loose ends.<br />
<br />
* Many nerfs in regards to AI Raids.<br />
** A 20-40%, based on intensity, reduction to AI Raid strength.<br />
** A roughly 100% longer warning before they fire.<br />
** They now only spawn a singular wormhole per planet.<br />
<br />
* Large scale Trade optimization<br />
** The Grand Station will now output a larger amount of cargo ships on demand.<br />
** Many more Cargo Ships can accept trade routes every second.<br />
** Trade Stations will no longer be built on planets that construction ships couldn't safely reach from the Grand Station's planet.<br />
** They are now much smarter about stockpiling resources for local militia use before exporting them.<br />
<br />
* Additionally, a large number of undocumented bugfixes that were lost in the surge of all these multiplayer-based updates.<br />
** The most notable fix is a fix to the Exception that could pop up when mousing over the Raid notification.<br />
<br />
=== Multiplayer Sync V1.0 ===<br />
<br />
* Added AddBytesWithFormatAndColor() and AddBytesWithFormat() for writing bytes nicely to an ArcenDoubleCharacterBuffer.<br />
** This cuts down on our repeat code for easy formatting of things that might be in bytes, KB, or MB.<br />
<br />
* There is now some basic sync stats that will show in the escape menu during multiplayer, and then more detailed sync stats that can be turned on at will.<br />
<br />
* New setting in the network section of personal settings: Show Network Sync Details In Escape Menu<br />
** Only applies when you are in multiplayer, and has different outputs on the host versus clients. Gives statistics on how much the game has had to correct in terms of divergent data between the client and the host.<br />
** Note: The PKIDs and squads are actually checked for divergences, and those are shown in more detail on the client than the host. All the other things are sent in a periodic overwriting fashion, without checking for divergences, as the bandwidth used (which you can see with this setting on) is less disruptive than the CPU cycles required to do divergence checks.<br />
<br />
* The width of the columns in the escape menu are now a little wider.<br />
<br />
==== Fixes Based Off Testing Initial Implementation ====<br />
<br />
* Fixed a bug where the client in multiplayer was incorrectly calling a host-style method when trying to tell the host about divergences in squad sync.<br />
<br />
* Fixed a bug in multiplayer sync where the squad sync stage would never complete or advance beyond the first 20th of the squads, instead just doing those ones over and over again.<br />
<br />
* Fixed a minor bug in multiplayer where the client was telling the server about mismatches even when there were none (just sending an empty list to them).<br />
<br />
* Fixed a one-line bug in multiplayer sync that hilariously just caused all of the ships on the client to be deleted within a few seconds of playing.<br />
<br />
* Put in extra debugging for Client_AcceptDivergenceDataFromHost(), since it was having some exceptions happen.<br />
** In general at the moment, actual divergent ship data is coming across slightly garbled.<br />
<br />
* Temporarily disabled the planet and world-extras sync steps in the multiplayer sync code, as those both were throwing errors on the client side.<br />
** With those disabled, we can see that the ship sync, fleet sync, and "ultra frequent" sync all seem to be not only working great, but also not sending too much data and not slowing the game simulation down.<br />
** The garbled divergent ship data is a bummer and does mess with things, but in general it just speaks to our need for better instrumentation in that area, and is not entirely unexpected.<br />
<br />
* A new setting has been added to the networking section of personal settings: Log All Decoded Network Sync Data To Disk<br />
** Will majorly slow the game down, but dumps decoded sync messages to the disk in files inside the PlayerData/NetworkSyncMessages folder. This only covers sync-style data, but with this logging enabled on both the client and host, this is a great way to see why serialization is failing, if it is. <br />
** Enable with care! Since this data is being actively decoded as it is written, it is far larger (and in plain text) than the actual data being sent across the network. A typical ratio might be 40MB of decoded data for 500kb of actual network traffic. You can have a few GB of data on your disk after just a few minutes of letting the game run in this fashion.<br />
<br />
* Using this hefty new tool and some extra instrumentation, we were able to locate and fix the problem with the sending of divergent ship data from the host to the client.<br />
** We were simply omitting the primarykeyID for entities that were different, not deleted. Things like that are easy to miss but almost impossible to find without a logging mechanism like this. Manual code review just leads you to look right past it, especially if you've been staring at it for days.<br />
<br />
* Did a bit of an overhaul on how some of the network sync data is logged, so that we can do a folder-at-a-time comparison to find differences where any may exist.<br />
<br />
* Server_SendBatchOfSyncsBasedOnCurrentSyncStage() now has extra debugging going on in itself, because we're experiencing some sort of errors in there on the host after a certain amount of time in multiplayer, now.<br />
** Thus narrowed the problem down to Server_SendPeriodicFactionSyncDataThatJustOverrides(), and so instrumented that a lot more thoroughly... except actually the problem was in Server_SendBatchOfDivergentSquadsToFix(), we just read it wrong. So that also got extra instrumentation.<br />
*** And that was, in turn, just a simple typo on one line. Logging and instrumentation makes the impossible and time-consuming very fast and easy -- after the initial setup time cost. Very much worth it.<br />
<br />
* Found ourselves back with another error in Client_AcceptDivergenceDataFromHost-DivergencesSection. But we can't quite use the logging as it currently exists to easily diff these on a folder level.<br />
** In order to make that possible, we are switching away from using a central LogIndexThisSession Int64 for all message types being sent to StartNetworkSyncDataMessageLoggingIfNeeded, and instead are having an individual index for each FilenameBase string.<br />
*** This puts things slightly out of chronological order when we're talking global messaging, but that's because the client and server can be talking back and forth and have some different ordering between message types. We need the message types to always match up, and now they will.<br />
<br />
* Discovered that we were not properly sending the TypeData of the ships in the divergent ship fixes messages from the host. This was then causing nonsensical errors later in the deserialization of those messages.<br />
** Another great example of something we would not have found, potentially at all, without the new instrumentation.<br />
<br />
* Discovered a harmless logging artifact that we introduced into the last few versions where the header for fireteam data was behind its id on one machine, but in front of it on the other.<br />
<br />
* Thanks to the logging, also discovered an inconsistency in how fleet data was being updated, which was causing those to choke and die on the client side.<br />
<br />
* Went ahead and re-enabled the world-extras and planet syncing, since those go wrong so quickly but we now have logging on for them.<br />
** That immediately errored, but that is just fine for our purposes. Can you tell logging makes us happy?<br />
** This quickly revealed that there was something funky and inconsistent with how we were reading the planet's type. That has been fixed to be consistent.<br />
** That then revealed something a lot more complicated was wrong with how the external data patterns were being read in general, most notably on the world but definitely not limited to that.<br />
*** We improved the logging and instrumentation on the external data pattern serialization in general, and this then solved the issue on the world and the larger issue as a whole that would have come back to bite us in many other areas later.<br />
*** Then put in some more logging related to MDCExoDataExt, since it seemed to have an inconsistency. We now are marking when ExternalData is complete in the log, to make that mistake harder to make.<br />
** Then found and fixed yet more inconsistencies in how we were syncing squads.<br />
*** Also we then stopped syncing some stuff that was set to "only save on the network" (and not to disk) for squads, but it was data that really really should not have been synced because it was working fields from other threads.<br />
** And then also fixed a random extra float that we were sending after "world extras" sync. It's the sort of thing you only see in a log, as it was invisible in the code.<br />
<br />
* We are no longer syncing the IncomingShots on entities except during the initial world sync, because in general we are not syncing shots.<br />
** This is going to take some refactoring for targeting, possibly, but then again existing code will very possibly just adapt to it. <br />
*** "Catastrophic" or "planet switch" styles of sync fixes are probably not frequent enough during combat for it to be too very wrong, but either way things will fix themselves within a rolling 3-4 second window. It's interesting, because its constant attempts to heal itself in various places, while "in battle" with attrition is reminiscent of a scene with Wolverine in X-Men 3. That's an amusing thing to realize about one's code. (Let the record show that the devs really don't like X-Men 3, but that one scene was visually neat).<br />
<br />
* Fixed some potential nullref exceptions in CalculateSpeed() on ships, which really at this point mainly would happen when ships or fleets or speedgroups or some combo of that were being updated at the same time as they had something going on in the background threads.<br />
** Basically there's a whole new nest of cross-threading errors that we can run into, but there's not much we can do about them except to harden individual methods as they come up with problems, and in general also add extra instrumentation to methods if we think they have the potential to be a problem again (this one does).<br />
** This is kind of an unavoidable element of the loose way that we handle threading, which is needed in order to get the maximum speed out of the simulation and all the various threads that are involved. The client side of network sync is now a new source of these issues, but it's not remotely the first of them. We'll probably be swatting this sort of thing down throughout the alpha and beta of multiplayer. And then SirLimbo will somehow find a way to run into exceptions that no one else sees for the next two years. ;)<br />
<br />
* At this point we can confirm, based on our detailed logging, that multiplayer is able to successfully run for a solid four or five minutes of gametime (at 5x sim speed) and come out with consistent results the entire time.<br />
** This leads to about 2600 network log files for the sync messages, which are about 100MB per computer, and this substantially slows down the game from running at an unencumbered pace (the disk writes are heavy).<br />
** Of course, as soon as we turned off the logging, we ran into some sort of new gameplay thing which caused issues in the ship sync code. So there are still some goblins in there, probably related to certain types of data that are not on every ship.<br />
<br />
* Added a new setting to the network section of personal settings: Log Decoded Network Ship Sync Data To Disk<br />
** Same as the 'Log All Decoded Network Sync Data To Disk' setting, but only writes data for actual divergent ship fixes. Since that is one of the more-likely-to-break areas of sync, but only something like 1/15th of the actual data being passed around, being able to isolate it to this is helpful.<br />
<br />
* Fixed an issue where the current galaxy map display mode, and the current planet index you were viewing, would be reset by the sync data on clients in multiplayer.<br />
** It now takes in that sync data only for non-local player accounts. Clicking to another planet only to have your view bumped back a second or two later was MILDLY frustrating, heh. And also slightly hilarious.<br />
<br />
* Discovered and fixed an issue where if a partial sync was sent from the host to the client about a ship that the client had no knowledge of, then the client would try to read it as if it was an off-disk sync and thus read things incorrectly and fail.<br />
** This will probably be elsewhere in the code as well, so we will potentially need to review a lot of other data structures.<br />
<br />
== Beta 2.134 Searching For Planets ==<br />
(Released September 7th, 2020)<br />
<br />
'''This one is still on the beta branch on Steam and GOG, since we have continued making lots of substantial changes to the central serialization logic for the game in service of the multiplayer sync code. We're now done with what would constitute V1 of the MP sync code, so we can come out of the beta branch tomorrow so long as no one runs into any problems with single player on this build. As for multiplayer itself, we have a fair bit of testing to do to make sure that the MP sync code is doing its job and not exploding RAM usage on the clients or harming performance, etc. Once that's verified and all the bugs we find in testing the MP sync code are fixed, then we're officially into an alpha status with multiplayer. Given that the V1 of our sync code turned out to be far more thorough than we originally planned, the multiplayer alpha period should hopefully be shorter than it would have been.'''<br />
<br />
* Extragalactic war ships are no longer classed as 'small' when hovering the Planets Under Attack notification<br />
** Thanks to crawlers for the bug report<br />
<br />
* The Dyson Sphere produces a small number of drones, as well as its usual ships. Those few drones no longer leave the sphere's planet<br />
** Thanks to GreatYng for reporting<br />
<br />
* Update the time estimates for releasing multiplayer and DLC2<br />
** Thanks to ParadoxSong for reminding<br />
<br />
* There's now a Journal entry for when the AI can send extragalactic war units, so they won't come as a surprise<br />
** Suggested by zeusalmighty<br />
<br />
* Fix a bug where the Helping Hands 2 quickstart was broken<br />
** Thanks to Spook for reporting<br />
<br />
* QoL tweak for repair. Any ships on a planet where you outnumber the enemies 10 to 1, or the enemies have less that .2 strength are eligible to be repaired immediately.<br />
** The previous rule was 'Any ships on a planet without any enemies' which could be frustrating if you were trying to hunt down a few cloaked ships.<br />
** Thanks to crawlers and Isiel for suggesting<br />
<br />
* Some minor tutorial tweaks<br />
** Thanks to MasterGeese for reporting<br />
<br />
* The extragalactic war spawning notification message now uses 'a' and 'an' appropriately<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Update the Description for the snake map to mention that it's very hard<br />
** Prompted by a discussion on the forums<br />
<br />
* When you have the galaxy setting for Adjacent Planets Watched, it now takes that as the baseline and is increased by things like Economic Command Stations and Spy Cradles.<br />
** So if you have "Watch 1 adjacent planet" then a military command station will watch 1, but an economic will watch 2<br />
** Thanks to ParadoxSong for suggestion<br />
<br />
* Small update for MoreStartingOptions by AraudB:<br />
** Inordinate had 10 plasma turrets rather than 2. Fixed the number of stations in the mod description too.<br />
<br />
* Removed a blank "Fleet Experience" section from the tips window.<br />
** Thanks to Isiel for reporting it.<br />
<br />
* Several different spots that could throw errors if fleet membership was null now no longer do.<br />
<br />
* DoEntityStepLogic_Ship now has better debug logging.<br />
<br />
=== Multiplayer: Sync Correction V0.90 ===<br />
<br />
* Added a new SerializationCommandType, which has three values:<br />
** NormalFullType, Network_ContinuousPersistentSync, and Network_DuringDetailedNetworkSyncStage.<br />
** This is now used on Factions in order to differentiate the three major types of serialization that we might be doing.<br />
<br />
* The ExternalData on factions is no longer synced as part of the "every frame" IsForNetworkContinuousPersistentSync.<br />
** And actually a bunch of other stuff on factions is now limited out so that it's not over-saturating certain data while it IS still sending other things every frame auth.<br />
** This is also of relevance because it means that any faction externaldata that is not fully optimized to not thrash the GC will inherently do less thrashing of the GC. So that makes mods a little more safe in general in multiplayer.<br />
<br />
* Fixed several parts of the faction object to be efficient and not thrash the GC in the way that we were doing for the ExternalData last build:<br />
** TechHistoryEvent, HackingEvent.<br />
<br />
* FromServerToClient_SendAllOtherSyncDataThatJustOverrides has been renamed to FromServerToClient_SendUltraFrequentSyncDataThatJustOverrides, because it no longer is "all the other data." It's just the most common stuff.<br />
** Added new new messages for time-sliced sending of the following: FromServerToClient_PeriodicFactionSyncDataThatJustOverrides, FromServerToClient_PeriodicFleetSyncDataThatJustOverrides, FromServerToClient_PeriodicPlanetSyncDataThatJustOverrides, and FromServerToClient_PeriodicWorldSyncDataThatJustOverrides.<br />
<br />
* The full-faction-data sync even has been implemented on the client and the host, and now includes speed groups (which previously we felt like were too heavy to send on the ultrafrequent channel -- which was correct).<br />
** This also means that we needed to make the SpeedGroups be nice to the GC on deserialization, so that's done.<br />
** Also fixed several oversights that would have led to hard-to-diagnose endless inflation of array contents for various faction items. Yow. These sorts of things will be hard to find any other way than manual code review, and can be in mods or the main game and can cause massive slowdowns with no central way to diagnose it. These will be "fun" to find in the future.<br />
*** Essentially lists like FactionIndicesIAmAlliedWith were being added to each frame without ever being cleared before the new set of data was put in. This would only happen during multiplayer, and only on the client, but would start causing all sorts of problems.<br />
<br />
* Planets and planetfactions and their externaldata have now gotten the same treatment that factions did.<br />
** Here again there were a couple of infinitely-expanding lists that are now fixed.<br />
<br />
* Whew, okay, fleets and their memberships have also been updated to the new style.<br />
** This... is going to be very problematic, the way it currently exists. This first checkin of the fleet memberships in particular is going to be very problematic indeed, for a whole lot of reasons, but it's a good start for refactoring.<br />
** Essentially, fleets are so bloody complicated the way that they exist right now (in terms of data structure under the hood) that they can't work cleanly in multiplayer without a bit of refactoring. The positive news is that we can make potentially even single-player slightly more efficient with this refactor, but it's going to require redoing drones and a few other things along those lines.<br />
** Edit: the below solves our issue for the time being, although we may still make some changes in this area in the future to make things easier. We're no longer FORCED to, though, which is nice.<br />
<br />
* Came up with what is hopefully a clever use of our existing sync infrastructure to handle the cascading wrong data that can happen from the current fleet structure. This was something that has us stumped for a bit, because doing the most efficient sync style for fleet memberships could lead to units that were in the wrong membership after that.<br />
** The simple solution is the fact that we do know when we are hitting such a case, and so we can just tell all those units to kill themselves on the client. They will then naturally and fully re-sync from the host within 2-3 seconds.<br />
** This is the sort of thing that we want to minimize, of course, but the worst case is having something be permanently wrong in a MP game and us not being able to fix it. Later logic can always do something to sync these back quicker, or to minimize the number of times these are being hit if it is frequent, etc, etc.<br />
** For now we're just monitoring (in the UI) how often it happens, and we can make decisions based off of that... as people choose to share that data about their sessions with us. We may implement some sort of automated data reporting that people can opt into if things seem problematic, or if we think we're not getting reports on things like this but it does seem to be a problem for people.<br />
** At any rate, priority one is making it work properly in the long term of a game even if there is a snafu for a few seconds on a client, and priority two is minimizing or erasing the snafus.<br />
<br />
* Various central world data is now synced from the host to clients every few seconds/<br />
** Among other things that were more intentional, this actually lets clients know the status of other clients pretty rapidly (aka, seeing that someone else is disconnected or connected).<br />
** This should have all the central items of relevance nicely synced, although we are skipping the "world history" and "journal history." For those, if they are really needed, we may just introduce a new sync stage to time-slice the processing of those. But frankly they are not likely to get out of sync.<br />
<br />
* At this point it will be time for us to test our sync code, which is utterly untested at the moment. But the design and implementation of V1, except for actually testing it, is complete.<br />
<br />
=== "Find Planet" Command ===<br />
<br />
* Added a new extension in our central ArcenStrings which lets us do a case-insensitive Contains() call (for purposes of searches, etc).<br />
** This is useful for a variety of purposees, and lets us do partial comparisons (not just Equals()) calls) without having to cast to lowercase.<br />
<br />
* Implemented a new [https://wiki.arcengames.com/index.php?title=AI_War_2:Cheats#Debugging command], "findp", which lets you search for planets via the chat command:<br />
** Formatting is like this: "cmd:findp,gear" (minus the quotes).<br />
*** This example would search for the text "gear," and would bring up results "Geary" and "Gearworld" and "geaRson" if all three of those existed in one galaxy.<br />
** It tells you how many results there are, and if there is more than one result, then repeat entering of the same command (just press up and enter) will cycle you through them. It tells you that it will cycle you through them if there are more than one.<br />
** If you are on the planet view, it switches you to the planet view of that other planet. If you are on the galaxy map view, it centers the galaxy map on that planet.<br />
** Thanks to cml for the initial implementation of this as a mod.<br />
<br />
* Added a new "Quick Tip" item, which shows up randomly on the starting screen as well as in that section in the tips section: Searching For Planets By Name<br />
** During the game, if you hit enter/return to bring up the chat window, and then type 'cmd:findp,yoursearchhere', you can search for planets by name. If you type part of the name of a planet, then you can hit up and enter to issue the command repeatedly and cycle through multiple hits if there are any.<br />
<br />
== Beta 2.133 Hotfixes ==<br />
(Released September 4th, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG, since there were a number of problems with the prior build that prevented adequate testing. Once we have confirmation of more people able to play this new version without incident, we can move back out of the beta branch.'''<br />
<br />
* Fix typo in Full Badger tooltip<br />
** Thanks to Breach for reporting<br />
<br />
* Nanocaust now uses a darker border colour<br />
** I forget who mentioned that this looks much better<br />
<br />
* The Nanocaust might now play a bit of defense<br />
<br />
* Improve the way a player's Overall Power Level is calculated<br />
** A player can now have a high enough Overall Power Level to trigger Extragalactic War Units without allies if they are on difficulty >= 7<br />
<br />
* Dark Spire ship line hacks no longer destroy the VG<br />
** Thanks to Sol for reporting.<br />
<br />
* In Steam, the default launch style is now OpenGL, rather than Vulkan.<br />
** As noted, this is the preferred launch style, and more stable.<br />
** Thanks to TechSY730 for suggesting.<br />
<br />
=== Fixes Relating To Prior Beta ===<br />
<br />
* Fixed several areas where trying to check a non-existing setting (potentially because it was from a mod or expansion you don't have installed) was causing issues.<br />
** This is a problem dating back months to when we changed how lookups to missing settings worked, but we're only now seeming to hit it in the most recent betas.<br />
** Thanks to Badger and others for reporting.<br />
<br />
* A variety of extra debugging info has been put into some of the high-level world serialization areas for our logs when problems happen.<br />
** Also put in a bunch more into fleets and fleet memberships for debugging purposes.<br />
<br />
* Identified two fields from fleet memberships that were not properly translated over into the new format in the last beta build, causing all new savegames in that beta to fail to load.<br />
** Now that this is fixed, the broken savegames all seem to load just fine, which is always nice when that happens.<br />
** Thanks to StarKelp, Sol, and ArnaudB for reporting.<br />
<br />
* The "Civilian Industries" mod by StarKelp has been updated to function in the new code framework we introduced last build.<br />
** All of the mods we distribute with the game are again working at the moment, to our knowledge, now. Code-style mods from other sources (forums, etc) may not be updated yet to compatibility with this latest set of builds.<br />
** Please note that we broke compatibility on purpose (not a typical thing), to add multiplayer functionality to mods and make sure that no mods would cause unpleasant spikes in memory usage on client machines in multiplayer.<br />
<br />
== Beta 2.132 Exterior Leviathan ==<br />
(Released September 3rd, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG, because we made so many changes to some fundamentals of how the game works. These are driving at improvements for multiplayer, for the partial syncs to be able to happen, but they break code-style mods for the game (including Civilian Industries as included in this version), and it's possible that they temporarily are breaking something else since we've changed several thousand lines of code in a few dozen files and may have made an error in any one of a number of places. Some bits of multiplayer sync are a bit more hefty than we'd been thinking they might be for V1 of that, but then again we're getting more of it done upfront rather than later. We'll be able to start actually testing the sync maybe tomorrow, unless a bunch of other things are broken by our changes.'''<br />
<br />
* Dyson Spheres now must kill all the guard posts on a planet before they can kill a reconquest command station. This should prevent a buildup of guard posts. <br />
** Thanks to TechSY730 and Khankar for reporting<br />
<br />
* Fix some bugs with Usurpers owned by praetorians or other AI subfactions<br />
** Reported by GreatYng<br />
<br />
* Try harder to make sure waves against minor factions have ships<br />
** Reported by GreatYng<br />
<br />
* Fixed some minor typos<br />
** Reported by GreatYng<br />
<br />
=== Multiplayer: Sync Correction V0.75 ===<br />
<br />
* New setting in the network tab of personal settings: Network Logging Includes Sync Checks<br />
** During gameplay there are messages sent by the network as frequently as several every 100ms, and these are one of the largest sources of data usage. This lets you see the timing and payload size of those messages, if you think that potentially they are what is slowing things down in a networked environment.<br />
<br />
* Stripped out a lot of old code that was related to an old style of sync (aimed at desync detection), and started building in the new sync framework (aimed at detecting micro desyncs and correcting those).<br />
** Decided to move this to a new AIWar2NetworkSync static class in its own file, as after just getting about a third of the way through this logic, it was clear that it was pretty sizeable and overwhelming the rest of the networking code's readability.<br />
<br />
* Added in the logic for the server keeping a list of ships that the various clients have told it are divergent.<br />
** The server could be getting overlapping reports from several clients, but we need only one copy of this, because we're going to err on the side of caution and tell every client about each bit of sync data that needs fixing.<br />
** We could always change this in the future if there seems to be a bandwidth benefit to this, but it would probably just mean extra processing on the host for more unique sends per-client. At the moment we judge that to be the resource that is more scarce.<br />
<br />
* The logic for removing ships on a client that were not part of the last sync cycle, but also not new during that cycle, has been put in place.<br />
** The idea here is that these ships probably died on the server, and the client didn't know for some reason.<br />
<br />
* The logic for having the server do send check data for 1/20th of its ships (or stacks or whatever, as the case may be), but no more than 9000 per 100ms, is now in place.<br />
** This is the meat of the desync detection code, and it is based around only a very few factors:<br />
*** Health lost, shields lost, extra ships contained within (of ANY fashion), current planet, and current location.<br />
*** We are generally making the assumption that if all of those things match between the client and the host, then the ship is probably in sync.<br />
**** In the case of certain faction ships that do things like gather resources or whatnot, that will obviously be very incorrect, but it is correct for most combat ships.<br />
**** For those cases where faction-specific data is potentially going to be wrong, it would be prohibitively expensive to add a bunch of checks based on that extra faction data, so we will build in separate tools for forcing sync of these non-combat factors.<br />
**** Frankly, other things like fireteam history, which would be missing on the clients, could be synced via other methods later on if we really want to. Though that's generally only used for debugging in most cases, so seems not to be worth doing.<br />
<br />
* The logic for clients checking for mismatches with their local data compared to the server is now in, and it sends back the requests to the server to have divergent units corrected.<br />
<br />
* On PlanetFactions, there is now FactionIndex and PlanetIndex directly in order to make it easier to quickly find those in case they have been reassigned.<br />
** Additionally, their Faction and Planet member variables are now exposed as get-only properties to keep unexpected things from happening there.<br />
<br />
* The way that squads deserialize has been updated substantially to allow for several levels of partial deserialization for various sync scenarios.<br />
** The sync fix code allows for normal-level same-planet sync fixes (which should hopefully look very nice with things sliding visually into new positions if positions differ).<br />
** The sync fix code then also allows for normal-level different-planet sync fixes, which instantly disappears the old spot and puts it somewhere new.<br />
** And finally, the sync fix code allows for catestrophic-level sync fixes, where the two entities aren't even the same (not matching faction or type), and it destroys the old one instantly and as invisibily as possible, and then puts in the new one where it should be.<br />
*** This last category is for basically when the primary key ID generators are out of sync between the host and one or more clients. These will be hit with some regularity, but they should not be hit over and over for the same unit.<br />
<br />
* The deserialization logic for "fleet memberships" has been split in such a way that we can now sync just some of the data into them (for network purposes).<br />
** We are not using this yet, but will once we get into the fleet sync phase of the sync cycle (outlined below).<br />
<br />
* CalculateContentsCount() on squads now takes a required parameter IsForNetworkSyncCheck.<br />
** If that is true, then it ignores any data that is not on the squad (but is usually on the fleet or the "fleet membership" areas.<br />
** This is things like drones or transported ships, and city sockets. These will be something we sync at the fleet level.<br />
<br />
* Network_CurrentSyncCycleNonSer has been moved off of the World_AIW2 object and into the AIWar2NetworkSync class.<br />
** Same with the OnServer_SquadsNeedingSyncFixes dictionary.<br />
<br />
* The server now cycles through a series of "sync stages," where it will sync different things other than just squads.<br />
** This is useful for us to be able to time-slice syncing of data of different sorts... for instance fleets and fleet memberships data.<br />
** We actually are now going to use this for separating out the squad sync checks and the divergent squad fixes, too, since time-slicing that is good for smooth gameplay as well as also making sure that multiple clients with partially bad sync cause as few excess sends as possible (that's a ms timing thing).<br />
*** The code for syncing the squads that were divergent is now in, as noted above.<br />
<br />
* The data for factions, and for some of the Primary Key info, is now synchronized from the host to all of the clients every authorized network batch.<br />
** On average this is probably anywhere from 10kb to maybe 40kb, at most. It's easier just to keep this in sync.<br />
** At the moment, for ExternalData on factions and squads, there is a huge amount of inefficiency on the clients in that it is completely recreating objects every network sync right now. We are looking into various refactoring options.<br />
<br />
* At the moment we are explicitly not syncing SpeedGroups, since those are complicated and may tend to diverge.<br />
** We are probably going to wind up refactoring these to be by faction, or something along those lines. In fact, there are several major refactors coming, and one of those may be that a lot of the PKIDs may become faction-specific in general.<br />
<br />
* Turns out that adding the NetworkSyncStage as a concept was a really good idea, because we not only need to sync squads and fleets, but also planets and some data off the world, too.<br />
** The faction sync is happening once every sync frame, but it's possible we might back off the frequency of some of that if it becomes too harsh. Mainly for ExternalData stuff. But for now we'll see how it does.<br />
<br />
* Planet has now had its data split out like squads and fleet memberships and factions and some other classes to have its own DeserializedIntoSelf() method.<br />
** Also PlanetFaction. Whew, wow. For this it doesn't sync the entities during the partial sync, of course, unlike during disk or main network sync.<br />
<br />
==== "ExternalData" Updates That Affect Mods ====<br />
<br />
* The ExternalData framework has gotten a few updates to allow for us to do partial-syncs like we now do with squads and such, versus always just creating something new.<br />
** Any mods that use ExternalData will need to be updated to use the new pattern, although it's not a huge change.<br />
<br />
* FireteamRequiredTarget has been updated to have a DeserializeNewFrom and DeserializedIntoSelf, to ensure that what we are doing is intentional.<br />
** Since this is a class, not a struct, it's highly efficient for us to be able to write to an existing class rather than always replacing it, even in single-player.<br />
<br />
* The following "external data" has been updated to be dramatically more efficient with syncs during multiplayer, employing a variety of strategies that we're using in the main game stuff:<br />
** WormholeInvasionDataExternal (this one is basic and simple)<br />
** AI_PlannedWave_Data (this one is complex in that it has a list of sub-objects and shows how to handle that properly. It even gets rid of theoretical extras on the client machines)<br />
** DoomData (this is really old style in terms of the data, and is not used actively, but does show a way to handle the multi-part sub-data well).<br />
** ExternalData_AIFactionCommon (this one is ridiculously complicated and used for a couple of factions)<br />
*** ExtragalacticBudget and AIPChange as a part of this, and are good simple examples. These don't even have the new bool passed to their sub-objects, because both the DeserializeNewFrom and DeserializedIntoSelf() methods can both validly be used as part of one during-game sync (depends on relative list length, see code).<br />
*** StoredAIPurchaseCostByBudgetForSpecificUnits is a good example of where it's better to just use a bit of extra GC (especially with the new time-sliced GC unity now has) instead of doing extra CPU processing to be a hair more efficient with that memory.<br />
*** Fireteams themselves have changed from having a constuctor for deserialization to having a DeserializeNewFrom method that makes it a bit more explicit what is happening. We also pulled out the id deserialization so that we could reuse Fireteam objects as much as possible if they are being updated.<br />
** DysonExternalData and DysonAntagonizerExternalData (another two examples of the simplest possible cases for updating a modder might have)<br />
** MacrophageGlobalData, MacrophagePerTeliumExternalData, MacrophagePerSporeExternalData, and MacrophagePerHarvesterExternalData, which are also very simple examples.<br />
** RiskAnalyzerData is even simpler, with no sub-objects to modify.<br />
** AIReservesDataExt is seemingly simple, but is dodging accidentally creating two sparse lookups internally on each sync.<br />
** AstroTrainsGlobalExternalData, AstroTrainsPerDepotExternalData, and AstroTrainsPerTrainExternalData are all pretty straightforward, although we saved ourselves a lookup load on AstroTrainsPerDepotData.<br />
** AutosaveDataExt, even though it's not really even needed on the clients at all. Since it has some sub-data that is in a list, and in string format, we're just not bothering to send that to clients at all during syncs since it is a waste of bandwidth.<br />
** DarkSpireData, which has some complexities with the sub objects DarkSpirePerPlanet. It has special notes in the code for any similar cases with a sparse lookup and sub-objects.<br />
** Two "DZ" items for DLC2, which was wildly complicated to convert compared to most things. It involved sub objects DZResourceConversion, and DZUpgrade, among other nested objects. Mostly it was a good example of just following the existing principles on down, but there is one ConversionBag that was tricky enough that we're just clearing and refilling it in a somewhat GC-wasteful way rather than going into the extra complexity and perhaps incorrectness of doing it another way.<br />
** AntiMinorFactionWaveDataExt, ExoDataExt, and MDCExoDataExt, which thankfully were all trivial examples of the common case.<br />
** ExternalData_GroupTargetSorting, which has nothing formal to save or send.<br />
** InstigatorPerUnitDataExternal and InstigatorDataExternal, which again the simple common case.<br />
** SpawnAnimationData and DespawnAnimationData were very old and probably not used, but simple to upgrade.<br />
** MarauderOutpostRaiderSpawnData is again the simple common case.<br />
** MercenaryUnitExternalData and MercenaryGlobalExternalData, which had some more notable complexity. MercenaryBeaconState upgraded with WorkingHasBeenUpdatedThisDeserializationCycle to handle its situation. MercSpawnRequest just does it the inefficient way since these rarely exist, and only exist for a short period when they do. SingleMercenaryGroupState is a strange bit of data, and gets handled in a novel way. Thankfully MercenaryUnitData was a trivial case.<br />
** ExternalData_FactionCommon is old and strange, but was not too hard to update.<br />
** ExternalData_MinorFactionCommon was super old in its styling, but already was efficient enough.<br />
** NanocaustMgrData, NanocaustPerUnitDataExt, and LastSpawnTimestamp are all extremely simple. The old FrenzyFleet stuff is still kinda-sorta there, but never has data since it is legacy, so that shouldn't cause any GC churn.<br />
** FallenSpireGlobalExternalData and FallenSpirePerUnitExternalData had a few quirks, but mostly were the common case with some minor array clearing and preservation.<br />
** One "NP" item from DLC2 required pretty minimal updates to work with this, hooray.<br />
** ScourgeGlobalExternalData and ScourgePerUnitExternalData were both the common case with a tiny bit of list/dict management.<br />
** Two "ZA" items from DLC2 are mostly the common case but with some collection management added in.<br />
** Two "ZM" items from DLC2 are also mostly the common case with a bit of collection management.<br />
** HRFDataExt and MarauderDataExt both were also mostly the common case with a bit of list management. There is a question mark about the regiments aimed at planets, on this and a few other locations, but they are at worst going to be inappropriately blanked out over and over again on clients in MP, which we can fix later.<br />
<br />
* In general, any of the usages of IArcenExternalDataPatternImplementation in mods should be updated to follow the new examples in the main code. The changes are not severe.<br />
** The most important changes are the ones above, relating to SerializeExternalData() and DeserializeExternalData() taking an extra parameter, and then each handling a graceful DeserializedIntoSelf() sub-method (and choosing if there's some data not to sync across during gameplay if required). But beyond that, there are some more changes:<br />
** RelatedParentTypeName has been removed, as it was never used. Same with GetShouldInitializeOn.<br />
*** During InitializeData, the object ParentObject is being cast into an appropriate-type Parent object for general usage, (aka GameEntity_Squad, Faction, whatever) that people can then later use. If the type is wrong, it will just come across as null, and we have it complaining if that's the case. You can do the same or omit that part if you don't care.<br />
<br />
=== Third Off-By-Default Mod: More Starting Options By ArnaudB ===<br />
<br />
* The More Starting Options mod by ArnaudB is now included with the game by default (with permission), but disabled.<br />
** Requires The Spire Rises expansion (DLC1).<br />
** Pick between seven starting fleets and twenty starting battlestations for your custom games. These choices are balanced for regular play and are acceptable to use for achievements.<br />
** The eight starting fleets will offer you a more varied combination of ships so you may explore more varied combinations of technologies and playstyles than those incentivised by the default options.<br />
** The twenty starting battlestations will let you play and test every of the many turrets brought by The Spire Arise DLC, which are otherwise completely absent from the default starting options. You’ll find multiple combinations for both offensive and defensive playstyles, balanced for your enjoyment and giving you hints as to what synergies you could make with a few turrets or ships.<br />
** This mod is off by default as to avoid paralyzing the player by offering too many choices. <br />
** You can activate this as a new player unsatisfied with the default options, or as a veteran wishing to vary your experience of the game.<br />
<br />
=== Mod: Civilian Industries Updates ===<br />
<br />
* Civilian Industries 0.6.4<br />
** Full update notes may be found on the forums: https://forums.arcengames.com/ai-war-ii-modding/civilian-industries/msg222774/#msg222774<br />
*** A large number of code optimizations, directly mostly at performance and multiplayer readiness.<br />
*** An overall nerf to Mobile Ship counts, but a simplified formula will allow easier future modification.<br />
*** A rework to the Barracks. Now scales with Mark Level, Command Tech, and can even let you get more Protectors at mark 7.<br />
*** Buffs to many Protectors. Balance for them is still being worked on.<br />
*** Resources renamed across the board, and structures now state what technology works for what resource.<br />
*** A notification will now show when a Raid is about to fire against your civilians, thanks to Chris' recent changes on the notifications front.<br />
<br />
== Version 2.130 Redux: Dutch Cities and Softer Eyeballs ==<br />
(Released August 31st, 2020)<br />
<br />
'''We accidentally forgot to increment the version number in game. So this would have been 2.131, but is just called 2.130 in the game. Sorry about that, this is perhaps a first?'''<br />
<br />
* New planet naming style added, with over 4000 names in it: Cities (Dutch)!<br />
** Most Dutch cities, villages, and hamlets shorter than 10 characters; also includes many local spelling variations. Created by GreatYng.<br />
** Thanks to GreatYng for creating!<br />
<br />
* Added a new xml tag, external_invulnerability_unit_required_count, which works with external_invulnerability_unit_type or external_invulnerability_unit_tag.<br />
** This basically lets us say that a unit of whatever sort is still protected by others (such as guard posts), but only if there are more than the number specified.<br />
** The default number is 0, which means the previous behavior of "any guard posts present make this invulnerable."<br />
** For AI Eyes, the number is now 3, which means that if there are not at least 4 guard posts remaining on a planet, you can go kill the eye.<br />
*** This is pretty huge, because you can now kill just part of the planet and then kill the eye before going to kill everything else.<br />
** If we need to make further adjustments to the Eyes based on the relative ratios of strength of them versus enemies, we can do that in the future, but for now this is a solid start.<br />
** Thanks to Lord Of Nothing and CRCGamer for reporting.<br />
<br />
* Further balance adjustment: all AI Eyes are no longer Mark 7 at minimum. They are now Mark 5 at minimum, and if their planet would have a higher mark (6 or 7) then they will instead have those higher marks.<br />
** This should help to make a bit more variance with them, and eyes to be a bit less of a pain in general.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed HRF Nucleophilic Defenders as well as other defender types not being loadable into transports. Additionally they now count as Frigates and benefit from their hull/shield/damage settings.<br />
** Thanks to Darkshade for reporting and -NR- SirLimbo for fixing.<br />
<br />
* Fixed a couple of issues relating to getMostCommonPlanetForRegiment() with fire teams, which were likely leading to who knows what other errors.<br />
** The PlanetsForRegiment Dictionary was declared as static, and so all of the regiments were trying to use the same dictionary at once, leading to exceptions as well as probably wrong results. Exactly how much chaos this could have caused is unclear, but with some of the LRP threads stalling out this is certainly not going to help (fingers crossed it was the whole thing).<br />
** Now if getMostCommonPlanetForRegiment() is called again on the same regiment before it finishes, it will throw the error "BUG: called getMostCommonPlanetForRegiment() again for a fireteam regiment before the last call finished. Will break both calls." Hopefully we don't have people getting this, but if we do we need to know about it to fix that. In that case, the workingPlanetsForRegiment dictionary can't work as a member variable at all.<br />
** Additionally, if there's an exception in getMostCommonPlanetForRegiment() it will now throw an exception but then exit more gracefully, letting whatever calling code keep doing its thing.<br />
** Thanks to CRCGamer and TechSY730 for reporting.<br />
<br />
* A few versions back, we made some changes to how the icons are rendered on the galaxy map, including planet icons. We made them keep their orientation better, but one of the things that was an unfortunate side effect of this is that the colliders on the lines between planets were often taking precedence over the actual planet or the ships at the planet. That is now fixed.<br />
** Thanks to TechSY730 and CRCGamer for reporting.<br />
<br />
* Heavily reworked how Journal_TooMuchAIP calculates both how many planets you have paid AIP for, as well as how many planets are neutered. It was triggering the journal entry far too early, previously.<br />
** Please see the code or here for details: https://bugtracker.arcengames.com/view.php?id=23609<br />
** Thanks to Sigma7 for reporting, and Badger for helping figure out what was wrong.<br />
<br />
* Fixed old wording on the AI Eyes that still said "when there are enough fleets present on this planet" to instead read "when it is sufficiently outnumbered on this planet."<br />
<br />
== Version 2.130 Civilian Industries ==<br />
(Released August 29th, 2020)<br />
<br />
* For determining what your performance is like, the game now uses only one second of data instead of ten seconds.<br />
** This makes the sim speed average a lot more responsive and natural-feeling.<br />
<br />
* The "suppress upgrade prompt" setting and keybind now both work on fleet upgrades and not just science tab upgrades.<br />
** There is some extra info in the tooltips and popups to reflect this, as well.<br />
** Thanks to Fritz1776 for suggesting.<br />
<br />
=== Second Off-By-Default Mod: Civilian Industries By StarKelp ===<br />
<br />
* The Civilian Industries mod by StarKelp is now included with the game by default (with permission), but disabled.<br />
** This lets people simply enable the mod by clicking a button in the settings menu, rather than having to find and download the mod from elsewhere.<br />
** StarKelp has been a volunteer contributor to the main codebase off and on for a while, and this mod contains both code and xml.<br />
** Full description of the mod is included in the tooltips in the game, but also here:<br />
*** Every empire is only as strong as the people within.<br />
**** Protect your people, and they will help your empire flourish.<br />
**** From collecting and processing various resource around the galaxy to bolster the economy, to taking up arms on their own to aid your survival, you'll find their help invaluable in the long term.<br />
**** As they flourish, so do you.<br />
*** Adds in the Civilian Industry faction, a potent defensive faction that can be allied to either a player, or a faction team.<br />
**** They will expand alongside their respective ally, and produce a large number of defensive forces to aid their team.<br />
**** They gain a new resource type per planet they expand to, and will work diligently to spread these resources throughout their empire.<br />
*** When allied to the player; you will find your command station and battlestations have access to a few new structures that you can invest in to greatly incresae the power of your civilian economy.<br />
*** Please check Galaxy Settings for many tweaks in regards to how they behave.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a bug in GetIsWithinRangeOf() that could happen in the selection logic (and probably other places) if a background thread marked a unit as deleted as it was doing the range check.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* It is now possible that your logs will wind up having the message "BUG: overriding speed limit for group X to [a negative number below -1]. Overflow? Setting to -1 instead."<br />
** If this is frequent, it may slow down your game, but the stack traces will let us know where we are going wrong and causing this to happen.<br />
** We fixed one area where MAYBE this could be caused, but probably that was not possible in the place we fixed it. Most likely the problem is in something that is calling GameCommand_CreateSpeedGroup with a command.RelatedIntegers[0] that is greater than the 32767.<br />
*** With that in mind, anything that is larger than that being passed into that method is now automatically corrected down to 32766. This may lead to some turbo speed groups, not sure, but at least they won't be erroring... and that IS what the calling code is asking for, so maybe it's intentional?<br />
** At the same time, in some other places in the code where it was checking to apply the speed only if it was "not -1", it is now checking to apply the speed limit if it is "greater than 0." This seems more like the correct intent, and hopefully won't break anything.<br />
** And beyond that, prior to serialization, any speed groups with an OverrideSpeedLimit less than -1 will automatically just set their value to -1 silently and thus avoid popup errors that could be really annoying in savegames for folks. This has been an issue on and off since July 24th, apparently.<br />
** Thanks to Lord Of Nothing (twice over), TechSY730, GreatYng, and Apthorpe for reporting.<br />
<br />
* Add a new time_must_have_been_on_planet_before_transforming_if_outnumbered_or_outnumbering, for use with transform_when_outnumbered and transform_when_outnumbering.<br />
** This defaults to 0 seconds, which has been the behavior in the past.<br />
** But now for all of the ships (mostly AI Eyes, but also some guardians) that use transform_when_outnumbering, it now has a value of 2.<br />
** For those that use transform_when_outnumbered, it has a much higher value of 30, to keep them from downgrading their alertedness too easily.<br />
** The AI eyes will still switch between alerted and unalerted status every so often in a general battle, since their alerted status increases the balance of battle in their favor so much, but now it won't be a constant thing and ships can continue targeting them in a reasonable fashion.<br />
** Thanks to whakomatic, Ovalcircle, MasterGeese, Gdrk, and GreatYng for reporting.<br />
<br />
* Additionally, previously anything that was transforming via one of those two methods was having its health and shields and cloaking points all reset to full.<br />
** Now, however, when transformed via these two cases ONLY, it keeps the health and shields and cloaking point losses after transformation.<br />
** This makes it so that battles with AI eyes are actually something you can win, even as they cycle back and forth between statuses. And in general this just makes sense, and is important on the dire guardians that use this same sort of mechanic, too.<br />
** Thanks to whakomatic, Ovalcircle, MasterGeese, Gdrk, and GreatYng for reporting.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* GameCommandTypes are now serialized by index rather than name, which chops off the vast bulk of size from most GameCommands, leading to even snappier networking.<br />
** Honestly this is a very small boost in most cases, but this also took like two minutes to add.<br />
<br />
* The network traffic logs have all been updated to be able to actually report how many bytes were read in for each message that the host or clients receives. Before it was saying ?? because we were checking prior to doing the reading.<br />
** Note that depending on the networking platform in use, there is sometimes extra buffer data that was read from the socket, but if it wasn't part of the game, we just ignore all that. This is also ignoring packet header sizes, so we're just talking payloads here (but that's consistent with the send records, too.<br />
<br />
* In the escape menu, on clients and the host, it now has a new Multiplayer Stats section when you are in multiplayer mode only.<br />
** At the moment, this shows how many messages have been sent or received in total, and how many bytes/kb/mb have been sent.<br />
*** These all apply to the current session only. So if you are the host, it is the stats since you loaded up the server and people started connecting. If clients come and go, it's including all of that. If you're the client, it's the amount since the last time you connected; if you disconnect and then come back, it starts over.<br />
** This is pretty important information in terms of figuring out just how much data is actually being sent back and forth, and how it changes during gameplay, so that we can react to any unexpected spikes if there are any.<br />
<br />
== Version 2.129 No Shrooms For Ships==<br />
(Released August 28th, 2020)<br />
<br />
* Nanocaust now prioritize holding planets adjacent to their homeworld<br />
** Thanks to crawlers for reporting<br />
<br />
* The nanocaust units now prefer to spawn a bit further from their centers; it looked kinda weird when a giant Nanocaust ship would spawn right on top of a nanobot center.<br />
<br />
* Added a lot of extra instrumentation to the deserialization and serialization of factions, since there seems to be some sort of error in there with savegames from specific versions.<br />
** Essentially with this sort of thing on, we can now manually look through the deserialization log and see if we notice where field data stops making sense. It was obvious that it was getting something like "I am hostile to 20 thousand factions," which is nonsense data, but it was not clear where the data was going wrong prior to that.<br />
** From this, we could then see that most of the data reads in the player faction seemed reasonable, but the faction right after them was immediately messed up. This is after a lengthy code review turned up nothing wrong, so it's always possible that it's some sort of edge case that has been around for longer than we thought.<br />
** Added in code to make it so that if an exception is thrown while deserializing a faction, we will now repeat that error better and stop doing further deserialization attempts. It turns out that was what was happening, and a more careful reading of the log could have saved about an hour and a half of work (oh well, things in the future will be easier to debug).<br />
** Thanks to Lord Of Nothing for a very challenging save that led to these changes.<br />
<br />
* Fixed an issue with some savegames that had hacked dyson or dark spire ships, where the HackToGrantShipLine_DontDestroyTarget hack had been removed and split into several versions a few versions back.<br />
** We now have added HackToGrantShipLine_DontDestroyTarget back in, in a deprecated fashion, so that old savegames with this data in it can load.<br />
** Thanks to Lord Of Nothing for the save that let us find this.<br />
<br />
* Fixed a bug in the prior build where the "flair" overlays for ships in the main view were either black (some machines) or a rotating color set of insanity (others).<br />
** One line was accidentally omitted in the new build of the shader that we made.<br />
** We also updated some calling code to the shader in a way that is harmless but not actually needed for this fix.<br />
** Thanks to Strategic Sage, Isiel, CRCGamer, and TechSY730 for reporting.<br />
<br />
* The "Icons Disappear When Camera Lower Than" setting in the main camera window has been updated as follows to have this note<br />
** Note: this setting does nothing (icons always draw) if you have 'Skip Drawing Ship Models' turned on in the Performance section.<br />
** (Also, this is how it actually now works).<br />
<br />
* If a player is already on a planet viewing that planet, and a further command was sent to view that planet again (as if they were not already there), then funky stuff happened in various places, including the wormholes getting half-initialized and not drawing properly in scale.<br />
** To solve this, it simply doesn't do anything if you try to re-open your view to the existing planet you are already on.<br />
** Thanks to StarKelp for reporting.<br />
<br />
== Version 2.128 Don't Lie About Distant Future Waves, AI ==<br />
(Released August 27th, 2020)<br />
<br />
* Fix a bug where the scourge would sometimes suicide into multiple layers of defensive planets in the (foolish) hope of hitting the weak target on the other side.<br />
** This is an intelligence improvement for all factions using fireteams (Hunter, Warden, Nanocaust, Scourge, etc etc).<br />
** Thanks to Crawlers for reporting<br />
<br />
* Add some defensive code to the Fallen Spire.<br />
<br />
* Put in extra logging for the SpeedGroup serialization and deserialization, to figure out where there are occasional exceptions being logged.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* Sniper Energy Wave on the Dark Spire Eidolon has been renamed to just be Energy Wave, since this is not an infinite-range weapon.<br />
** Thanks to crawlers for reporting.<br />
<br />
* DoForKnownWavesAgainstHumanHomeworlds in WaveUtils has been renamed to DoForKnownWavesAgainstHumanWorlds, which is what is accurate.<br />
<br />
* A whole bunch of extra array indexing calls into QueuedWaves have been made more efficient in the AI HandleWavesForAI() method.<br />
<br />
=== Interface Improvements ===<br />
<br />
* The planet's tooltip has been updated to show the owner on the same line as the planet name, but positioned way over to the right.<br />
** This keeps things pretty condensed, but avoids some clashes of words where it seemed to be saying something like "Permanently Watched Owner:" as one phrase.<br />
<br />
* Previously, there was a chat message going out as soon as a wave was queued, but before it would become visible to the player in the actual interface (based on their chosen galaxy map settings for how much warning to get).<br />
** Now it only shows the actual chat message from the AI as the wave is being revealed to players.<br />
** This also fixes an issue where it was for some reason actually giving the wrong planet name that it was going to attack in some cases, since the announcement came before it finished changing its mind about the real target it wanted to hit.<br />
*** This latter one may have been more common in multiplayer, but it's hard to be sure. At any rate, it just tells you real information now.<br />
<br />
* The second chat message that goes out (with the audio taunt) when waves are launched now also happens when they are revealed, and no longer duplicates when in multiplayer mode.<br />
<br />
=== Mod Compatibility Improvements ===<br />
<br />
* There is a new DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() method that gets called on each faction each frame, and which takes in a note which says if it is the first faction of its type this frame or not.<br />
** This lets us move notifications for factions into their own files, which makes notifications modding-compatible.<br />
** There are some other supporting methods that have been added to handle this, but understanding them is not required for using this,.<br />
** It is worth noting that ALL of the existing DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() calls do happen in a loop prior to the new DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() being called.<br />
** As an interesting side effect, this actually makes it so that notifications will now work for people in spectator mode in multiplayer for the first time.<br />
** The nanocaust data has been moved out of the human file as an example of how to do the others.<br />
*** Same for antagonized dyson spheres, and the dark spire. It would be great to get the other factions moved over to their own files for the sake of cleanliness, but functionally there will be no difference for our things in the main game and expansions now.<br />
** Thanks to StarKelp for requesting the ability to add notifications in mods.<br />
<br />
* Added a new method DoPerSecondLogic_Stage0Clearing_OnMainThreadAndPartOfSim_OncePerFactionTypeEvenForFactionsNotInGame().<br />
** This is called on the GetDefaultImplementationForLobbyOrClearingOnly() from the faction TYPES, which means it happens even for the factions not in a game. Great and easy place to clean up, and we know it happens only once per cycle per faction type, and we also know that it happens even if a faction is not in the current campaign.<br />
** This is useful for factions that had some data in a prior campaign, but the player loaded a new savegame and they are not in this one.<br />
** All of the various data from these that was previously in the Human class and in DoPerSecondLogic_Stage1Clearing_OnMainThreadAndPartOfSim() has been moved to the new stage0 for each of the specific class types, which again is more mod-friendly and should prevent the issue of certain mods being unable to clean themselves up between campaign loads.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* When the host is waiting on a client that is behind, it now shows a message saying which clients are behind and being waited on.<br />
<br />
==== Bugfixing ====<br />
<br />
* The galaxy map spacebox background is no longer serialized into savegames. Instead it is deterministically calculated based on the map seed.<br />
** This makes very little difference for single player, although you will notice that reloading the game or going back and forth to the map, or hitting regenerate map on the lobby no longer changes the space background.<br />
** But for multiplayer, this keeps things consistent between all players.<br />
** For existing savegames, you will notice that the spaceboxes become something new and stay that.<br />
<br />
* It turns out that the planet spaceboxes were not being serialized at all in savegames before, but their rotations were.<br />
** This was leading to very different planet background views in multiplayer, to a very distracting degree.<br />
** This has been made deterministic, and we no longer store even the rotations in savegames.<br />
** For single player there is no real change except that the savegames are a tiny bit smaller.<br />
** For existing savegames, you will notice that the spaceboxes become something new and stay that.<br />
<br />
* Fixed inconsistent sorting between runs of the game (and between differnt clients) for rows in the following tables:<br />
** AIGuardPostAndCommandPlacerTable, FleetDesignTemplateTable, AIShipGroupCategoryTable, and SpaceboxDefinitionTable.<br />
** These led to various MP inconsistencies, including the spaceboxes still being divergent on planets despite the math lining up.<br />
<br />
* Fixed an issue where the home planets of other players in multiplayer games just looked like normal planets instead of homeworlds.<br />
<br />
* There were a bunch of cases where human factions were still named wrong during multiplayer (and differently on the host and client), saying the wrong player's name or Unknown Player in various cases. Fixed all of those.<br />
** Additionally, in the case of multiple players owning a faction, if they did not choose an empire name, it now says all of their names together (but no more than three) as the faction name.<br />
** If there are more than three players controlling a single faction, that gets too wordy, so it just says "and X more".<br />
** When loading the single player games of other players, you will now see their chosen account names (from in AI War 2, not Steam or whatever) instead of your personal profile name.<br />
<br />
==== Seeing Where Other Players (Or Spectators) Are Looking ====<br />
<br />
* The way that the gimbal icons decide which diffuse color to use is now more efficient on the GPU (this is minor, but hey).<br />
<br />
* It is now possible to have a secondary diffuse color for the flair (really used for selection circles now), which is multiplied by the main "other diffuse color" of the icon.<br />
** This lets us do things like change the opacity or color of the selection ring around a ship or planet.<br />
<br />
* When you are viewing a planet, the game's way of showing the selection circle around it is the same as it always has been.<br />
** However, when someone else in multiplayer is viewing a planet other than the one you are viewing, it now shows a dimmer and more-transparent selection circle to show you that someone else is looking there.<br />
** If someone else is looking at the same planet you are looking at, then it will show the normal bright selection circle in a faint green rather than white.<br />
** This is something that is deceptively important, because we need to make sure that we know which planets are "tier 1" planets on clients and the host, which lets us verify that ViewedByPlayerAccounts_DuringGame is being set properly on all machines (it is). This keeps the game in the sync, which we can now tell is working properly.<br />
** But also this is just a helpful indicator for players to help with coordination. ("Check out this planet I am looking at in the northeast" is so much easier to say than trying to direct them to a name).<br />
<br />
* As an added help, in the galaxy map view when you hover over a planet, it tells you which other players are viewing a planet. This may be players in exclusive control of a faction, or one of several player players controlling a faction, or just a spectator, so it shows you their name as it would appear in chat.<br />
** For games with more than two players, this is fairly important for purposes of clarity. In a two player game it's easier to just infer what is going on.<br />
<br />
* When a client is disconnected, other clients and the host can still see what planet that client WAS looking at, and that planet still counts as a Tier 1 planet for processing, but hovering over it will show the name of the player with (Disconnected) behind it on the host.<br />
** Presently clients cannot see the status of other clients.<br />
<br />
==== Disconnection And Re-connection Verified ====<br />
<br />
* We can now verify that after a client disconnects in a disorderly way, the host notices a bit later and then continues on without them (they can choose to pause or not).<br />
** We can FURTHER verify that the client can reconnect to that running game with only a few-seconds interruption to other players who are still going. Even if the client had crashed and had to restart the game or their computer, they are able to get right back in there.<br />
** The original AI War did not remotely have any of these capabilities, but this works on all three networking platforms.<br />
<br />
== 2.127 Cranky AI Exceptions ==<br />
(Released August 26th, 2020)<br />
<br />
'''This was originally released as a beta on the 26th, but then changed to a main branch release on the morning of the 27th.'''<br />
<br />
* The Dark Spire now responds properly to being hacked by being cranky<br />
** Thanks to crawlers for the bug report<br />
<br />
* Fix a bug where the AI was incorrectly combining some Hostile To All factions when spawning extragalactic war units.<br />
** This was leading to more extragalactic war units than one would want.<br />
<br />
=== Exception Fixes ===<br />
<br />
* Added new debugging instrumentation into ImportIntoDynamicTable_XMLDirectory, so that we can find errors that may happen in there from time to time on some machines.<br />
** Also put in some code that should make it load faster for mods and expansions that don't have certain folders.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* Also expanded the debugging instrumentation on ReadXmlFileIntoBatchProcessingLists, same reason.<br />
** Ditto DoForXmlFolders.<br />
** And finally, ditto ActuallyImportAllOfTheBatchedRows.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* ArcenXMLElement.GetNewFor has had its debugging instrumentation greatly expanded, and also has been split into one version that expects a data table, and a new GetNewForNonTable variant that does not expect a table.<br />
** The idea here is to catch various forms of errors early.<br />
** This in turn caused a cascade of other changes to other methods needing variants of each other along these same lines, and having better instrumentation.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* Fixed another rare race condition that could happen with the vis code, this time in SetFormationPositionFromSquad.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* If for whatever reason the game was not able to proeprly write your settings data, it was still overwriting your settings file previously. It will no longer do that.<br />
** Additionally, a lot of extra instrumentation has been put into GameSettting.SerializeGraphicsTo and GameSettting.SerializeTo, so that we will know better what is wrong if it is trying to save improperly. These should also be more resistant to saving incorrectly in the first place.<br />
** Thanks to Isiel for reporting.<br />
<br />
* If a savegame has somehow been made that has a blank savegame in it, then it will try to load it with the info of the current version of the game, with a warning in the log that this may fail very badly.<br />
** Thanks to Isiel for reporting, and providing a save that was probably made while the game was in an invalid state.<br />
<br />
* Fixed a case where trying to load certain saves could fail silently as far as the interface was concerned. Now it actually shows you a proper error message.<br />
** And then fixed a whole bunch of cases where certain code paths on almost-certainly-broken saves would return very genric and unhelpful errors when you tried to load them.<br />
** This doesn't really help us actually load the savegames in question, but tells us more about what is wrong with them.<br />
** Thanks to Isiel for reporting, and providing a save that was probably made while the game was in an invalid state.<br />
<br />
* Suppressed a harmless popup that could happen in ReactToShotHittingSquad during cross-thread race conditions. Now it just fixes the data and moves on.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
== Beta 2.126 Dark Spire, Eyes, and Fixes ==<br />
(Released August 22nd, 2020)<br />
<br />
'''To play this version, please be sure to choose the current_beta branch on Steam. The central game loop changes we made in the prior version did not blow up, but a few other things did, so we're glad we went the beta route. If for some reason this beta has problems but the prior one worked for you, we have temporarily made the most_recent_stable_beta active and pointing to 2.124. But this version should actually be more stable (knock on wood). We'll be back out of beta by mid-week the week of the 23rd.'''<br />
<br />
* Fix a bug with DS Conquest VGs and the new hack<br />
** Thanks to gigastar for reporting<br />
<br />
* Fix a bug with the Full Metal notification<br />
** Thanks to a screenshot from Oval for making me aware of this<br />
<br />
* The AI should now attempt to play voice lines for Exogalactic Strikeforces, and when you spot the Nanocaust.<br />
<br />
* The DS is no longer allowed to spawn Loci on planets with Dark Spire Wards<br />
** Thanks to crawlers for reporting<br />
<br />
* Make the Dark Spire more aggressive about spawning Loci<br />
** Thanks to crawlers for suggesting<br />
<br />
* The player can now choose the starting armory for player-allied scourge<br />
** Thanks to crawlers for suggesting<br />
<br />
* Improve the hovertext for some scourge units just a bit.<br />
<br />
* Fix a bug where new games in the beta weren't starting correctly<br />
** Thanks to Keith and Tynendir for reporting<br />
<br />
* Capturing an AI homeworld no longer generates AIP. This only applies to games creates on 2.125 or above.<br />
** Thanks to GreatYng for suggesting<br />
<br />
* AI Eyes now trigger based on whether you have more Strength on a planet, not off the number of fleets<br />
** This is not necessarily the final state for Eyes, but having them trigger off of 'number of fleets' didn't make any sense anymore. This is a functional stopgap until someone has a better idea<br />
** Thanks to a number of people for discussing, including Flypaste, Asteroid, Democracy, GreatYng and others<br />
<br />
* Fixed typo in multiplayer message.<br />
** Thanks to fwiffoforce for reporting.<br />
<br />
== Beta 2.124 HRF Pacekeeping ==<br />
(Released August 18th, 2020)<br />
<br />
'''To play this version, please be sure to choose the current_beta branch on Steam. If this isn't blowing up in major ways, we'll move it back to the main branch within a few days. If it is blowing up a lot, then it may be into next week before we come back from beta. We changed too many fundamental things with the game loop to just release this with no beta, even though we were careful.'''<br />
<br />
* Minor rework to minor faction hacks. Its now more expensive (in line with the previous hacks). The description no longer mentions an AI response. The DS and Dyson units are now upgradable, but not very much. These are intended to be 'cool little tidbits' but nothing to really swing the game<br />
** Thanks to GreatYng and Lord of Nothing for bug reports and comments<br />
<br />
* Add a 'Full Metal' indicator in the metal bar<br />
** Thanks to Nyarlathotep. Iä! Shub-Niggurath!<br />
<br />
* The hovertext prompt that describes when swapping ship lines will scrap your units has been modified to describe the current behaviour correctly ("Your ships are scrapped if they are loaded, or the flagships are on different planets"). <br />
** Thanks to StrategicSage and Ubifan for reporting<br />
<br />
=== HRF Changes ===<br />
<br />
* The HRF ships now have some unique names.<br />
<br />
* The HRF now create a structure at game start time that you can hack for a new ship line (using the backported DLC2 tech) and for 1K science<br />
<br />
* Fix a longstanding bug where the Human Resistance Fighters would only say their 'defeat' voice lines, not their 'victory' voice lines.<br />
** Thanks to Nyarlathotep. Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn.<br />
<br />
* The HRF should now pack a bigger punch when they arrive, but they are a bit less likely to show up.<br />
<br />
=== Bugfixes And Tweaks ===<br />
<br />
* Some minor improvements to the ability of vulnerable Vengeance Generators to be killed<br />
** Hopefully this helps. Thanks to Lord of Nothing for reporting, and Puffin for suggesting the improvements<br />
<br />
* Better enforce the 'can't repair ImmuneToRepairs' unit interactions. Still a bit weird.<br />
** Thanks to MasterGeese for reporting<br />
<br />
* SerializeByInternalName and SerializeByIndex both now accept FieldName as an optional parameter so that we can see what is happening within them from a serialization logging standpoint.<br />
<br />
* A bunch of extra serialization logging has been added into the world and the faction configuration objects, to make finding errors there easier.<br />
** However, it turns out that there were no public errors on this, just an error in a working copy on one developer machine that had a save from between two updates from that same developer.<br />
<br />
=== Milestone: Multiplayer Pacekeeping Functional ===<br />
<br />
* In the event of a campaign switching which player is the host (this probably means one player manually emailing the game to another), the game now tries to do a better job of handling that.<br />
** In the end this should work fine, but we haven't bothered testing this yet as this is probably kind of an edge case compared to most other things we're working on right now.<br />
<br />
* All of the "frame number" information for sim frames is now just serialized on the network and never to disk.<br />
** This information is really only useful within a single run of a campaign (aka after loading it off disk and playing until you exit to the main menu or the OS).<br />
** Even if you go just back to the main menu and load back into the game directly after, there's no reason not to start those numbers off fresh again.<br />
** We've thus switched to a number format for serializing these that will "only" allow for 160 hours of continuous realtime play in a given campaign, without exits to the main menu. This is the definition of excessive, and could always be changed in the future if it was needed.<br />
<br />
* A variety of variables that really are only for the network, and serialized but not to disk, now have the prefix Network_ so that we can tell those apart with ease.<br />
<br />
* In multiplayer, the basics of "host waiting for clients to catch up" is now in place. This prevents the strange lag that clients were seeing, which was happening because they were back in time.<br />
** However, also in multiplayer, unlike the original AI War, it will not definitely wait around for players who are missing. If those players are not connected, then you can unpause and play without them until they arrive. Only once they are present do you have to wait for them to sync up.<br />
*** If this latter choice turns out to be problematic for some reason, we can always add a toggle for that or change it. But it seems friendly. Chris remembers nights where 1 person out of 4 player game couldn't make it, so just keeping on playing without them would have been so nice versus having to go in and change the status of their account before playing.<br />
<br />
* Various of our "simulation profile" variables that were set a loooong time ago in a different way for multiplayer and single player were making multi-player feel sluggish. We've tightened up this some in order to feel better under a pretty general set of networking conditions.<br />
** We may need to revisit this in the future (during alpha or beta) to make these things that people can configure if they are in a situation of, for instance, high packet loss or extremely high or low pings, to get the best possible experience at any given time.<br />
<br />
* Various other changes have been made in order to make the client send over commands to the host as soon as possible, and then to make sure that the host causes those commadns to be executed on the FIRST simulation frame of the next batch, not the last frame of that next batch.<br />
** All in all, the game now stays in time sync, across Valve's server relays and back, and things are snappy and responsive on both the client and the host. There are moments of delay that cause a brief "waiting" message to flash up for maybe a quarter of a second every so often, but it's really a minor thing and is something that we can improve with tuning in the future.<br />
** The overall functionality is there to the point that if background threads and floating point math were not knocking things out of sync, this would be a perfectly playable alpha. As it stands, it's quite playable for a few minutes at a time, at least on Chris's two test machines, without things becoming noticeably off.<br />
** It's also worth noting that the simulation speed on the host shows up as being something like 80% right after starting the game, which is misleading because it had one very long frame where it was waiting on the client to connect and sync up. That will be fixed in the future, but it self-resolves the visual artifact within something like 20 seconds of starting, anyhow.<br />
<br />
== Version 2.122 Empire Names ==<br />
(Released August 17th, 2020)<br />
<br />
* *Makeshift Drones now once again self-destruct when attacking instead of only self-attritioning slowly.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* The lobby now once again allows for you to zoom in and pan around, since some maps can be larger than you can comfortably see on a single screen.<br />
** However, every time you generate a new map, it will default to showing you the entire map completely zoomed out.<br />
** It also no longer EVER allows edge-panning in the lobby, as just general usage of the lobby will wind up with you accidentally panning the lobby around if that is in place.<br />
** Thanks to CRCGamer for confirming our suspicion that we'd need to do this.<br />
<br />
* Fixed ANOTHER bug with the lines being offset from the planets in the galaxy map, this time when you were zoomed in. The more zoomed in you were, the more off they got.<br />
** This bug was caused by our latest fix to the lines being off when you were zoomed out. Now it should work at all zoom levels. This was an annoying one, to be sure, but we're glad to have it finally lining up all the time.<br />
<br />
* Fix a bug where player-allied scourge weren't building properly<br />
<br />
=== Multiplayer Progress ===<br />
<br />
* Added a new Human Empire Name setting on player factions:<br />
** If left blank, will be the name of the first player controlling this faction. If you want your empire to have a different name than your personal name, you can do that here. If multiple players are sharing a faction, then they can give it a name that represents their shared interest in it.<br />
** This can be edited during the game (like player colors can be), or in the lobby.<br />
<br />
* When a new player joins as a client to a game, it now creates a slot for them and puts them in charge of it instead of them defaulting to spectator mode.<br />
** It assigns their colors properly, and all of that sort of thing, too.<br />
<br />
* Player accounts beyond the first are now removable, which lets players go back into spectator mode, or (later) control a single faction via multiple players helping.<br />
** This makes the default case (everybody has their own faction) set itself up by default, but then lets players back things out into the less-usual cases (shared factions, spectator mode, etc).<br />
<br />
* Players beyond the first are now auto-assigned a starting planet somewhat at random, letting them choose something on their own later.<br />
** A whole lot of logic that was very not-MP-safe is now MP-safe.<br />
<br />
* When loading a savegame or quickstart into the lobby, or loading the last settings for the lobby, it strips out all human players beyond the first.<br />
** This is consistent with it then recreating player accounts as those come in, too.<br />
<br />
== Version 2.121 Savegame Hotfix ==<br />
(Released August 17th, 2020)<br />
<br />
* Fixed a deserialization bug in the prior version that made any games saved with a dyson sphere in them not able to be loaded if they were saved in the prior version.<br />
** The nature of the issue was such that those savegames will now load without issue, thankfully.<br />
** Thanks to Lord Of Nothing, CRCGamer, fatcat__25, GreatYng, Djri123, Djri123, mekolab, and goz for reporting.<br />
<br />
== Version 2.120 Improved Lobby Map Experience ==<br />
(Released August 14th, 2020)<br />
<br />
* Fix a bug where sometimes the AI's ships wouldn't be allowed to retreat<br />
** Thanks to Sigma7 for reporting<br />
<br />
* Hopefully fixed a problem where sometimes allied scourge could kill AI Command Stations immediately after a game load<br />
** Thanks to GreatYng and ZeusAlmighty for reporting<br />
<br />
* Fix a typo with the Spire and Marauder Beacons<br />
** Thanks to Apthorpe and Ovalcircle for reporting<br />
<br />
* Fix a bug where hovering the Hacking resource bar entry would give a negative number during the superterminal hack<br />
** Thanks to GreatYng for reporting<br />
<br />
* Improve the Hacking Resource bar hovertext for the case where you have multiple hackers. Note it still doesn't show hacks against planets.<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* The MDC hovertext no longer mentions Exos<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Exogalactic Strikeforce speed updates:<br />
** Previously, Exos had travelled at 1800 speed (as of a few patches ago. Before that they didn't have a consistent speed).<br />
** Now Exos travel at "Average speed of their units + 20%" or "800", whichever is higher. This should feel less like they are speed-racing to your homeworld. For speed-context, 800 is the speed of a Parasite.<br />
*** Thanks to GreatYng and Lord of Nothing for discussion<br />
<br />
* Fix a typo in the hovertext for larger numbers of planets <br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Remove a mention of Fleet Exp in a tooltip<br />
** Thanks to Lord of Nothing for reporting.<br />
<br />
* Take safest path through galaxy now uses the modifier key alt, while take shortest path now uses the hotkey ctrl.<br />
** The prior hotkeys of X any Y conflicted with other functions and changed your unit stances or sidebar status, etc.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
=== Ability To Reset Camera View To Default ===<br />
<br />
* New hotkey in the camera section: Reset Camera Rotation And Tilt<br />
** Default ctrl+R.<br />
** Press this button combo to reset the camera's rotation and tilt to the default values.<br />
** Thanks to dv, Ovalcircle, Bobtree, and many others for requesting.<br />
<br />
=== DLC2 Backports ===<br />
<br />
* The Dyson Sphere Golem can now be hacked like an ARS for one of a small selection of Dyson ships. You only can use this hack once.<br />
<br />
* The Dark Spire Vengeance Generators can now be hacked like an ARS as well<br />
<br />
* This is a backport of a DLC2 feature that allows for a minor faction to have a structure which can be hacked like an ARS for unique ships. This is usable by modders with only some XML. <br />
<br />
* Approximate usage: in the minor faction GameEntity XML, for the ARS-equivalent, set the following<br />
** Assign it the HackForShipType tag<br />
** Make it eligible for the HackToGrantShipLine_DontDestroyTarget or HackToGrantShipLine hacks<br />
** Then add the following additional fields<br />
*** grants_stuff_to_be_added_to_player_fleets="true" <br />
*** grants_stuff_to_be_added_to_player_fleets_strikecraft_options="X" <br />
*** grants_stuff_to_be_added_to_player_fleets_frigate_options="Y" <br />
<br />
* Then for the ships you want to have available, set one of these<br />
** <fleet_membership name="AddedToFleet_MinorFaction" ship_cap_group="Strike" weight="100" min="30" max="35" faction="factionName"/> <br />
** <fleet_membership name="AddedToFleet_MinorFaction" ship_cap_group="Frigate" weight="100" min="1" max="1" faction="factionName"/><br />
*** Note the FactionName in the fleet_membership must match the name of the faction (I believe it checks the TracingName for the faction, which is set in C#)<br />
<br />
=== Dark Spire Improvements ===<br />
<br />
* There's now a preliminary Journal Entry for the Dark Spire when you first see them.<br />
<br />
* There's now a Journal Entry for when the Dark Spire enter conquest mode (ie from the Fallen Spire campaign).<br />
** This explains what Conquest Mode is, and it's much harder to miss.<br />
<br />
* The tooltip for the Locus now prints different text in Conquest Mode.<br />
<br />
* Thanks to crawlers for the bug report that prompted these enhancements<br />
<br />
=== Galaxy Map And Camera Display Work, Lobby Map Overhaul ===<br />
<br />
* The galaxy object now has a a FindSpatialCenterOfGalaxyInGalaxyCoordinates() method, which lets us find the center point of the galaxy based on however the planets were seeded.<br />
** Also added FindSpatialBoundariesOfGalaxyInGalaxyCoordinates() to let us find the overall bounds easily.<br />
** But actually we're going to not bother using this, turns out.<br />
<br />
* We were also working on a CenterGalaxyOnAllPlanets() method, but we've abandoned that for a different approach. The code is mostly complete and left in for now so that we can revisit it if we find a use for it.<br />
<br />
* The old-style cameras have been disabled for a long time (years) in xml, but we've now removed them from the code as well.<br />
<br />
* Added extensions GetWorldSpaceBottomLeftCorner and GetWorldSpaceTopRightCorner for UI RectTransforms.<br />
** The chat window in the right hand side of the lobby in multiplayer now uses this and a world space to camera transform to calculate its ScreenSpaceLeft, which lets us, regardless of your screen resolution, DPI, aspect ratio, or custom settings in this game itself, figure out where the UI ends and avoid underlappig it.<br />
** Same thing with a ScreenSpaceRight on the map tab left sidebar.<br />
** Same with ScreenSpaceTop on the footer controls, and ScreenSpaceBottom on the header controls.<br />
<br />
* For the galaxy map camera, the zoom now lets you go out farther in the lobby, and even farther in the multi-player lobby, so that it can always fit the map entirely in the main view screen.<br />
** Tested this with the game at 900px wide, 1800px wide, and 2560 pixels wide. In all cases we now come out with a consistent result.<br />
<br />
* Fixed up a bit of logic for the dynamic zoom for resolutions smaller than 1200px x 900px.<br />
<br />
* In the lobby, the galaxy map camera no longer responds to mouse or keyboard input at all. This is an overhaul that has been requested for years and years.<br />
** Now the lobby always has the map as zoomed out as it can.<br />
** It is also centered in whatever the available space is (depending on if the right-hand sidebar is there or not, that may or may not be centered on the actual screen).<br />
** This is extraordinarily useful, in that it lets you cycle through maps with ease, and there is typically not too much detail that you need to see in them like you would during an actual game.<br />
<br />
* The math for how much the galaxy camera should be able to zoom out has been entirely re-coded from scratch, and is now vastly more efficient as well as something we can actually follow.<br />
** Instead of taking something like a thousand loops to get a kinda-bad answer, it now takes typically under 60 loops (often under 20) to get a highly accurate answer.<br />
<br />
* In the galaxy map display calculations, and number of strange magic numbers were removed, now that we have the proper math in here. Wow this was unexpectedly hard.<br />
<br />
* At very long distance zooms, the planets were STILL being visually offset from their lines that they were above, it turns out.<br />
** This had to do with how we were offsetting the icons in order to avoid z-fighting, and how that was getting magnified by us scaling up the planets at further zoom distances.<br />
** The fix for this might introduced some z fighting, but probably will not because of the way that we are rendering these as "cutout" style transparency, and with GPU instancing determining the order of draw.<br />
<br />
* In the lobby, the planet you own is no longer ringed in white selection, as the in-game "planet you are on" is done. Now it just shows the planet color, plain and simple.<br />
<br />
* In the lobby, if you have the setting "always show planet names" on, it still won't do that, because that will make the fixed-size galaxy map potentially impossible to read.<br />
<br />
* The galaxy map in general shows planet names that are un-owned as being far less blinding white in their text.<br />
<br />
* In the lobby, it no longer shows the first owning player name under the name of the planet.<br />
<br />
* The visual scale of the actual planet spheres in the lobby is now about a two thirds what it previously was, but the text is almost as large as it was before. If the text is too small, we can adjust it up.<br />
<br />
* In the lobby, hovering over a galaxy map link no longer highlights the two planets adjacent to it, since that is visually confusing in that context only.<br />
<br />
* Added ShowTooltipNarrow() and ShowTooltipWide() to the IPresentationLayer and IBattlefieldHandler, so that we can trigger tooltips super-directly from deeper-in code.<br />
<br />
* In the lobby, hovering over planets now makes it show a tooltip at the mouse cursor that says the name of the planet (since that might be obscured by being very near the top of the screen, now), but also some other information.<br />
** It says how many wormholes there are, and gives a comment if that will be extra hard to defend.<br />
** It also shows the name of any human players who are going to have that as their starting planet, in their appropriate colors based on their faction color.<br />
** There was some funky stuff in the hover logic for the galaxy map that made this super difficult.<br />
<br />
* Fixed a funky bug relating to tooltips that were showing the same text as before, but had themselves cleared and then wouldn't keep showing the text anymore until it was given different text.<br />
** The first time this ever manifested was in giving tooltips on the lobby galaxy map, but it's an old old bug.<br />
<br />
* Fixed an issue in the lobby where it was not showing the names of planets automatically for planets owned by players other than yourself.<br />
<br />
* The map types list in the lobby has always been kind of randomly organized, which was annoying. More recently, it has been in a different order every time you start the game.<br />
** Now it is in the order Realistic, Simple, and then all the others alphabetically.<br />
<br />
* Fixed a bug when loading directly into the game and not visiting the lobby where it did not set the dynamic zoom properly in the last few internal builds.<br />
<br />
* Also fixed a boneheaded typo in the very most recent internal versions that was making the height of the dynamic zoom calculation slightly off.<br />
** There is still something a bit off with the squares map type and how it displays in the lobby (it is offset upwards and also shown too small), but all the other map types work and so this seems to be some sort of data issue with that map type and not a problem with our central algorithm.<br />
<br />
== Version 2.117 Ion Cannons And Melee Units ==<br />
(Released August 11th, 2020)<br />
<br />
=== Balance Work ===<br />
<br />
* Ion Cannon Shots can now:<br />
** Damage both the personal shields and hull of a target in one shot (including killing it outright).<br />
** Kill multiple ships in the same stack in one shot.<br />
** Thanks to GreatYng for pointing out the oddity of Ion Cannons not being able to do these things.<br />
<br />
* AOE shots can now hit any enemy bubble shield overlapping the explosion, rather than only being able to hit the shield if the generator (or something it's protecting) were physically within the explosion.<br />
** Thanks to NRSirLimbo for reporting and RocketAssistedPuffin for the save.<br />
<br />
* Crippled units (i.e. player flagships) can now pass through enemy bubble shields and traverse wormholes covered by them, to avoid being stranded in hostile territory.<br />
** Thanks to tadrinth for reporting and RocketAssistedPuffin for the save.<br />
<br />
* Melee units in attack-move mode will now go after units within a limited range (equivalent to a weapon with range=Normal1), so you have a middle-ground between "only attack your direct target or things actually touching you" and "pursue anything on the planet".<br />
** Also, even when not in attack-move mode, player melee units without orders (and not in hold-fire mode) now automatically move to attack nearby targets. If all such targets die or move away, the melee unit goes back to where it was.<br />
** Thanks to OzoneGrif, wm46, RocketAssistedPuffin, and Ubifan for the suggestions and saves leading to this change.<br />
<br />
* Fixed a bug where deathgrip tackle drones had a gun that could shoot immobile targets, greatly confusing their logic. That gun now has the only_targets_mobile_units flag.<br />
** Also fixed a bug where tackle-drone-launchers could give their spawned drones a direct attack order to go after an immobile unit.<br />
** Thanks to tadrinth and RocketAssistedPuffin for the reports leading to these discoveries.<br />
<br />
=== Bugfixes ===<br />
<br />
* Scourge: fix a bug where player-allied scourge were building tons of Builders but no Fortresses (they were mistakenly thinking they were minor faction allied)<br />
** A number of people on discord noticed the lack of Fortresses<br />
<br />
* Potentially fix a bug where Regenerator Golems were regenerating things while crippled<br />
** Thanks to crawlers for reporting.<br />
<br />
* AI Reserves now will create anti-player zombies.<br />
<br />
* Take another stab at 'adjacent planets watched'. Sigh.<br />
<br />
* Fixed an issue where on computers without GOG Galaxy installed, they would get a harmless-but-annoying error message at game startup.<br />
** Thanks to Badger for reporting.<br />
<br />
* Minor tweak to target list planning; use a case insensitive comparison for zombification.<br />
<br />
* The 'total units' count should now include stacks.<br />
<br />
* The AI "Great-Turrets" are now simply called "Turrets" again, as at this point balance-wise the player turrets and AI turrets are similar.<br />
** Thanks to GreatYng and RocketAssistedPuffin for bringing this to our attention.<br />
<br />
* Exogalactic War Units now use a better spawn-in message than before<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Fix a problem with the Custodian description text<br />
** Thanks to GreatYng for reporting<br />
<br />
* The semicolon was previously not supported by our chat log format (our "condensed ascii"), but now is.<br />
** Thanks to Badger and Sigma7 for reporting.<br />
<br />
=== Multiplayer And Lobby Work ===<br />
<br />
* Heartbeat messages from the client to the server and vice-versa are now omitted from all of the networking logs. They were making things far too cluttered for us to be able to see real information when we had network logging of various detail levels turned on.<br />
<br />
* Some excessive logging on GOG and Steam with regard to their send result statuses has been removed, as again this was clogging up our network logs.<br />
<br />
* The clients now have a secondary FromClientToServer_SignalDoneButHasNoCommands that they can send in place of the FromClientToServer_SendMyNextCommandBatch when they don't have any commands to send (which is most of the time, statistically).<br />
<br />
* GameSpecificNetworking now has a DoPerFrameLogic() method, which lets us efficiently set some per-game settings like we do for the arcen debugging stuff.<br />
<br />
* New setting in the Network section of the settings menu: Network Logging Includes Frame Auths.<br />
** In the lobby and during gameplay, there are messages sent by the network every 100ms or so to keep themselves in sync, and if you have them included they will tend to crowd out the rest of the messages that are sent. So by default these are disabled.<br />
<br />
* New setting in the Network section of the settings menu: Network Logging Includes Command Batches.<br />
** In the lobby and during gameplay, there are messages sent by the network as frequently as every 100ms, but more often some sporadic multiple of that. This is how factions tell everyone what they want their ships to do, and how human players say the same. There's very little that we can say about this in a meaninful way in the networking log level, and again this will tend to crowd out the other messages that happen. So by default these are disabled, but bear in mind that most things that players actually cause to happen are being caused through these batch messages.<br />
<br />
* Found and fixed a general issue where the player accounts were not properly being cleared (and fully resetting the player account IDs) during all cases where a game is loaded into the lobby. At a bare minimum, it was affecting the "open a custom game with my last settings."<br />
** That would have eventually led to out of bounds exceptions, over time, and in general was cluttering up some areas important for multiplayer, but it had not had a negative impact on anyone so far.<br />
<br />
* Fixed a bug that was causing all sorts of craziness on clients in multiplayer in the lobby, with them not getting their galaxies full cleared.<br />
** This was leading to things not being properly in sync between the client and host, like planet names or locations, and things like extra planets or planets in old locations, or noninteractive planets at a whole other scale visually from the real planets. It was quite messy! All of that is now corrected, thankfully.<br />
<br />
* In the lobby, when you change the number of human factions, it now regenerates the map immediately. For other factions it does not bother, never has, because there's nothing different to see at this point in the galaxy.<br />
<br />
* The WorldSetup objects now have a readonly SetupTypeName on themselves, so that we can tell what they are.<br />
** ChangedSinceLastMapGenCall on this same object is now a property, which lets us throw out debugging messages when it is being triggered for whatever reason.<br />
** Something has been causing extra calls to be sent through the map generation pipeline in a redundant fashion that makes everything slower than it needs to be.<br />
<br />
* Removed the ability to send a WorldSetup object via GameCommand, as that is actually highly antithetical to the way we edit that data as of the last year and a half or so.<br />
** We specifically try never to adjust the entire thing, because several players at once could be editing different parts of it and we want those bits to all merge at once.<br />
** Got rid of the SetupOnly_ChangeSetup GameCommand, which was set to use this sort of thing.<br />
** Got rid of the LobbyWorking_HasBeenChangedAndShouldTransmitChanges() method on WorldSetup, which was being used by a loop in the footer to keep clients up to date.<br />
*** The problem with this is that this was far older code, back from perhaps 2017, and it was using an older and more sledgehammer-y approach to try to keep clients and the host in sync. When the lobby was redone in 2019, this became obsolete but was still hanging around and so caused some nontrivial chaos.<br />
** LobbyWorking_HasBeenChanged() has also been removed, as it seemed duplicative and was no longer in use perhaps?<br />
*** Oh goodness, this was actually how we were ever updating the long-term stored version of the game (as opposed to the lobby working copy). This was not a good way to do it, but it was not quite as antiquated as we thought.<br />
<br />
* Fixed a rare nullref exception that could happen in the ships sidebar if you were not properly on an actual planet.<br />
<br />
* Fixed an issue from the last few months (probably) where if you had an error during map generation, it would still try to dump you into the world and then give you tons of other errors. It should have been stopping you and making you fix whatever was wrong.<br />
** This is most common when there are not enough planets for all the factions you have chosen, or a few other rare cases. One such case is just discovered internally, and that's you having a planet starting index that is higher than the number of planets currently in the world.<br />
<br />
* Helper_AssignHumanHomeworld() and the AI variant are now Helper_TryAssignHumanHomeworld() and an AI variant.<br />
** It was already quite possible for these to fail if the player had selected something invalid, such as previously having clicked a planet with an index above 40 and then choosing a map size of 40 planets.<br />
<br />
* The game now auto-assigns humans a planet that is valid if they don't have a valid option, and it does so in a multiplayer-compatible fashion.<br />
** Previously this tried to do the assignment, but did not do so in a way that worked, and even if it had worked it would have only worked for one player.<br />
** This also includes a new sub-gamecommand, StartingIndex_FromAutoAssignInMapgen, which efficiently lets the UI know what is happening without triggering an extra map generation cycle or accidentally overriding a distinct change made by the player.<br />
<br />
* The lobby is now substantially more responsive even in single player, although it seems to be having some extra calls that we are still hunting down.<br />
<br />
* Fixed an annoying issue that was causing an extra regeneration of the map to happen when you first went into the lobby in single player or as the host, leading to the lobby load time being half a second or so longer than it should have been.<br />
<br />
* Fixed an issue where if one person in the lobby adjusted the following fields, it would not be reflected for the other players in the GUI (but would in the map itself):<br />
** Planet naming style.<br />
** Map type.<br />
** All of the other map sidebar controls were showing things properly and also able to be controlled from any client or the host.<br />
*** Do bear in mind that if you manually enter a map seed, it won't appear for the other players until you hit "Regenerate Map," but given that does not actually affect the map until that button is pressed, this should not be overly surprising.<br />
** All of the faction controls and their sub-controls have been workign properly from the start, and still seem to be.<br />
** Same thing with the galaxy option controls (all of them), which is pretty exciting.<br />
<br />
* The "Campaign Name" is something that is only for savegame management, and thus is only relevant on the host side. The clients now see "Will be set by host" as the text in that box, and cannot change it.<br />
<br />
* The "Start Game" button is also something that we are limiting to be host-only, for a variety of reasons. The biggest is that they need to set a campaign name, but that's entirely host-side.<br />
** Clients clicking this button now get a message that asks them to wait for the host to do it.<br />
** Actually, for the sake of ease of use, the "Reset To Defaults" button and this one are just hidden on clients in multiplayer. Clicking Reset to Defaults on a client results in an error for a lot of good reasons based on how it is trying to accomplish that.<br />
<br />
* All of the lobby controls now seem to work properly for both the host and client. There are still some things in chat that are messed up, and we're missing controls for making clients not always be spectators, but we can also get into the game.<br />
<br />
* Fixed the harmless but annoying "StartingIndexChanges: factionIndex 1 passed when faction count was 0" error message that would happen on clients after a host gave orders to start.<br />
<br />
* The campaign name and its textbox is now just plain invisible for clients in a multiplayer game, again to avoid confusion.<br />
<br />
* The right-hand sidebar in the lobby in multiplayer is now split into two scrolling parts.<br />
** The top part has information about the connected players and the factions that they are a part of, and never auto-scrolls around.<br />
** The bottom one has the actual chat messages, and auto-scrolls to the bottom when new messages come in.<br />
** The fonts of both are a bit smaller, from size 12 down to 10.<br />
<br />
* From past changes, we can now verify that the proper name shows up for clients on the host, instead of it just saying "Player 2" for them.<br />
** However, text messages from the client in the lobby show up with the color of the client but the name of the host?<br />
<br />
* Hitting enter while in the chat textbox in the lobby now actually sends the chat properly, as already worked in the main game.<br />
<br />
* In the multiplayer lobby, the top panel now shows the status of the various PlayerAccounts that are in a game. Specifically it shows any who are connected or disconnected, or which ones are you, etc.<br />
** It also shows players that have an account in this game at the moment, but who are absent.<br />
<br />
* Fixed a bug where player accounts were being created with the name of the host, not the connecting client, which was confusing all sorts of things.<br />
<br />
* The preferred colors from the player profile on each local machine is now sent over and applied to their player account for later reference. This was also causing endless new player accounts to be created, since there was never a match to the connecting client.<br />
** A variety of pieces of code had to be updated to support this.<br />
** Apart from them selecting a color for their faction, this gives them a chosen color in text chat.<br />
<br />
* Added a new OnEndEdit() event for text input boxes, which lets us trigger things when a player clicks out of a textbox.<br />
** This now happens for the map seed in the galaxy map, same as with hitting enter, as both now trigger an immediate regeneration of the map (without you having to hit regenerate map manually).<br />
<br />
* Faction colors for player factions now come from the network data rather than just the local data, which is important for multiplayer.<br />
<br />
* Fixed the bugs with lobby chat messages not appearing properly on the client and host in various ways.<br />
<br />
== Version 2.116 GOG Networking Done ==<br />
(Released August 6th, 2020)<br />
<br />
* Fix a bug where the 'Watch Extra Hops Worth Of Planets' code was being applied incorrectly<br />
** Thanks to Tynendir for reporting.<br />
<br />
* Fixed a bug where Macrophage Spores don't move to new planets when loading a second save game.<br />
** Thanks to GreatYng for reporting, and StarKelp for fixing.<br />
<br />
=== Milestone: GOG Galaxy Networking Integration Complete! ===<br />
<br />
* The Arcen GOG Wrapper has been majorly updated to get your GOG Galaxy Friends list and the status of them so that you can play multiplayer with them if you want to.<br />
<br />
* When you are in the GOG networking mode, it now shows the list of your friends, just like it does for Steam.<br />
** Basically all of the functionality is identical here, in terms of how it shows those who are online, offline, and in-game, and lets you filter between them, etc.<br />
** The one difference is that in Steam we show the "in this same game" status as a light green (like Steam does), and in the GOG version we show that status in a purple color (to match their color theme).<br />
<br />
* The host computer now is able to open up a lobby for friends when it says "open server."<br />
** This works with all the various NAT punchthrough that GOG Galaxy supports, which we are not entirely clear on the details of. This may be as robust as Steam, or slightly less so, but we honestly have no idea. We'll be interested to hear from you! But either way, it's out of our hands at that point, so it's just information gathering.<br />
** The host is also now properly destroying the lobby when it shuts down, so that others won't try to connect to it and not see it.<br />
<br />
* When clicking the Join menu in GOG, the client now sees lists of their friends with four categories instead of just three.<br />
** Friends who are in-game but not in a lobby right now are showed in a dull light purple. Friends who are in game and have an open lobby show up with a bright purple status.<br />
** You can also cycle through all friends, open lobbies, friends in this game, and online friends.<br />
<br />
* In the listing of connections, for GOG it now shows a button that says "closed" instead of "connect" next to each friend who does not have an open lobby.<br />
** With Steam, someone could be in offline status but still let you connect to them. With GOG, we have to have a lobby ID to connect to, so there's no way to hide that and still even attempt a connection to someone.<br />
<br />
* GOG clients are now able to search for lobbies and correlate those to their friends list, which under the hood is a several-step process.<br />
** We are filtering out any potential rogue lobbies created by bad actors, and correlating them specifically to those owned by your friends.<br />
** It's possible that a friend might jump from the status of being offline (prior to opening the lobby) to showing up as someone you can connect to (when they open the lobby), actually, so potentially this actually does allow for the same sort of quasi-stealth game connections that people can do using Steam.<br />
** That said, since lobbies have to be advertised (to your friends) and we can't have a client just blindly try connecting by userID like in Steam, if you open a lobby and your other friends are actively in GOG looking to join a game of AI War 2, they would see that. Not a big thing, probably, but it's something we've noticed about the nature of these two differing systems.<br />
** You may find yourself having to hit refresh a few times on the client side in GOG, as there is a few seconds of lag before the lobby that the host creates shows up. It seems to be under 4 seconds at the most in current tests.<br />
<br />
* GOG clients can now actually initiate connections to a host lobby. And it works!<br />
** The client is aware of getting into the lobby, although it takes a few seconds.<br />
** The client also does gracefully tell them that they are leaving the lobby, and the GOG servers and the host are both finding out about that properly.<br />
<br />
* The GOG Galaxy networking client is absolutely fully implemented, now!<br />
** A huge amount of the actual send/read logic was able to be pretty much identical to Steam, which was not super far off from what we did with LiteNetLib.<br />
** Pro tip: if any other developer is ever wondering about SendP2P messages on the GOG network, those can take any size, not just stuff under 1200 bytes. It handles all of the fragmentation and recombination extremely well, and just as fast as Steam or other services.<br />
** The initial connection process to a lobby with GOG is a bit slower from North Carolina in the US than what we are seeing to Steam, ranging from 4-6 seconds on the first creation of a lobby on the run of a game to 2 seconds for ones after that. But once the connection is established and brokered, it's easily as responsive for us as Steam.<br />
** For us, this is routing through the internet and some firewalls, so the NAT punchthrough or relay servers or whatever it is in this case seem to be doing their job. We certainly did not mess with any ports.<br />
** Because of the nature of how data is read in from the buffers in GOG, we actually were able to get slightly more efficiency and speed with how we manage the heap compared to Steam or LiteNetLib. It's probably not usually a huge advantage, but it is something that we appreciate the efficiency of.<br />
** Essentially all three of the networking options have their own pros and cons a bit, but are all extremely good. That's a real relief to see, and to see them all working.<br />
** At this point it is now down to making the game networking actually work properly to have the game run, and that's a networking-framework-agnostic process.<br />
*** In a lot of respects it feels like after a large move of house, where all our stuff is now out of the old house and into the new house, but we still have a lot of unpacking and arranging to do. It still feels excellent to be done with the movers and have everything in one location now.<br />
<br />
=== More Multiplayer Work ===<br />
<br />
* Removed some old and unused code that is from the Valley Without Wind versions of multiplayer, checking for disconnections due to inactivity. We are handling that at a lower level, now.<br />
<br />
* Got rid of some old code that was mainly in the older version of our engine pre-Raptor, which was checking for "pthread exceptions" that was never something that could happen in the newer engine that we've replaced it with.<br />
<br />
* The game now has some self-checking code in there for giving us some actual feedback when it decides that it can't run the simulation or show visuals for more than 3 seconds at a time.<br />
** This is a pretty rare case, but it was the "too many changes and the client machine goes to black screen and unresponsive" issue.<br />
** This may have fixed the issue, although there also seemed to be another issue that was related to this.<br />
<br />
* Took out some other unused and old data.<br />
<br />
* The "UseSeed" command in the lobby no longer triggers the gamesettings to be saved. That was not useful, and slowed it down for no good reason.<br />
** It turns out that this was blanking out the settings data in a strange way a lot of the time, and causing the black and white view of the game after you reloaded. It also was apparently directly the cause (somehow) of the infinite black screen on the client after this was triggered.<br />
<br />
* Put in a lot of extra error handling for the steamworks networking in particular in case it has internal exceptions while trying to send something.<br />
<br />
* The cumulative effect of a lot of these changes has basically fixed a ton of issues in the lobby, including:<br />
** Clients not being able to use certain buttons or dropdowns.<br />
** Certain dropdowns not showing the right values to clients.<br />
** The client and the host getting a different view of things after certain buttons or dropdowns were used.<br />
** For a while there I was thinking that I was maybe going to need to make some of the controls for the lobby host-only, but now that's definitely not the case!<br />
<br />
== Version 2.115 Imperial Summons ==<br />
(Released August 4th, 2020)<br />
<br />
* You can now have multiple copies of the Devourer and Zenith Trader in a game<br />
** There's no technical reason for this limitation, and we're encouraging Zenith stuff because of the coming Onslaught<br />
<br />
* Quickstarts are sorted alphabetically again, instead of when the quickstart was created<br />
** Thanks to ArnaudB for the bug report<br />
<br />
* Add some defensive code to the Dyson Sphere<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Fixed a cross-threading nullref exception that could happen during unit unselection (probably due to it dying).<br />
** Thanks to GreatYng for reporting.<br />
<br />
=== Imperial Fleet Summoning Changes ===<br />
<br />
* The AI now generates some weaker bonus exos against miscellaneous player targets (energy producers, MDCs, GCAs, etc), just to keep things exciting.<br />
* Fix a bug where Exos were trickling into their targets instead of moving as groups.<br />
* Start the Exos the moment you finish the hack, instead of some random time < 30 seconds from when the transceiver finishes.<br />
** Blame MasterGeese for these changes<br />
<br />
=== Multiplayer And General Lobby Work ===<br />
<br />
* The "partial map generation" code for giving a preview in the lobby now does even less work, bringing our mapgen times down to 200ms or so on average.<br />
** Because of this, we've also moved the mapgen code during partial-map-generation onto the main thread, to keep things as fast as possible. The full map generation still happens on a dedicated background thread.<br />
<br />
* During the lobby, the way that we handle the execution frame loops is now entirely new, and basically skips over a lot of things that were artificially introducing lag.<br />
** This makes the lobby perform far better in general, and also makes the map generation times absolutely flyyyy compared to what they were before, on single or multiple player maps.<br />
<br />
* This is leading to a number of substantial bugs in the lobby, temporarily, but will make the lobby performance far superior in both singleplayer and multiplayer as we get those resolved.<br />
<br />
* The silent "generate partial map" or "generate full map" complete messages now tells you how long it took.<br />
<br />
* The way that mapgen works, it now has a couple of different contexts that it passes in, so that each one has its own random number generator that is not dependent on the others.<br />
** This lets us ensure that there is consistency between runs of the same code on different machines, and on the detailed version (for play) and the non-detailed version (for viewing in the lobby).<br />
** This is largely solving the issue that we just have started having in this latest round of internal builds with a difference in the final map and the original map.<br />
<br />
* Renamed the Generate() method on map generators to GenerateMapStructureOnly() to be more clear, and also make our code more eaily searchable.<br />
<br />
* Adding a planet to a galaxy no longer requires passing in a context object at all. It now generates its own internal random number generator for its initial variables based on the galaxy map seed, its index, and its original position.<br />
** One of the side effects of this is that now when you change which planet you want to be your starting planet, it will keep the name the same instead of shuffling them around.<br />
** This sort of name-stability has actually never been in this game before, and always was mildly annoying. But in multiplayer lobbies it was going to be even more annoying. "I'll take Adam." "Okay, sure." "Well, I clicked it and now it is called Brian, but that's the one I meant." "Wait, what?"<br />
<br />
* When you are loading a savegame or a quick start as a template into the lobby, it now immediately regenerates the map rather than using the old map, because it's highly likely that the new structure will be different in some fashion.<br />
** This then also solves the problem of clients being different from the host on first connect, probably; that was kind of a compound problem in general.<br />
<br />
* Fixed an order of operations issue that could lead to the occasional "No human players found to seed homeworlds for!" error in the lobby in general, but more recently in multiplayer more frequently.<br />
<br />
* Possibly fixed the issue with later player accounts in multiplayer being renamed incorrectly to "player 2" and such.<br />
** There is still a fair bit of duplicate data happening between data structures, and some lobby/startup code that is blatantly single-player-specific that we need to get sorted out.<br />
<br />
* Dramatically cut down the time it takes to generate planet random seeds, but still with keeping them consistent as you click around the galaxy, by pre-generating the random seeds as the first 300 calls to the "broad random" for the galaxy. Any seeds needed after that will be generated the slow-but-unique way. This means mainly things like nomad planets or other things that are late additions. When just adding a planet or two, it's not so slow as to be a problem.<br />
<br />
* Until now, if you loaded an existing savegame it would automatically put you in control of the first player account, even if your profile name did not match.<br />
** It now continues to do that when you are loading as a single player game, which is enormously helpful for testing and just in general, really. But in multiplayer, it now tells you a list of what the available profiles are, <br />
** In general, if you are loading something as a template, it now clears all the old player account data and loads in your own current name as the new first player account (and further players are already added properly as they connect).<br />
<br />
* Fixed up the way that planets are shown as colored in the lobby galaxy map, so that it will work well with multiplayer and also with the new faster single-player-generated stuff.<br />
<br />
* Improved the logic for it properly setting you to be viewing the new planet you've selected after you make a selection in the lobby. Another thing that did work, but with the revised logic had to be made to work all over again.<br />
** This concludes the fixes to all the known bugs that we are aware of that we've introduced into the lobby today.<br />
<br />
* Fixed another nullref that was happening only on the multiplayer custom games after today's changes.<br />
<br />
== Version 2.113 Dyson Growth ==<br />
(Released August 3rd, 2020)<br />
<br />
* Fix a null reference exception if the game wants to spawn a Relic but you own basically every explored planet<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fix a bug with Dyson Sphere units not marking up<br />
** Thanks to GreatYng for reporting<br />
<br />
* Fix a typo in a Battlestation description<br />
** Thanks to ovalcircle for reporting<br />
<br />
=== Multiplayer Work ===<br />
<br />
* Fixed one oversight that was causing the factions tab chat to not show its chat text properly, unlike map and options in the lobby.<br />
<br />
* As text messages come in inside the lobby, it now scrolls to the bottom of the chat window, as you would expect.<br />
<br />
* The maximum length of chat messages in the lobby is now 1000 characters.<br />
<br />
* GetLocalPlayerFaction() is now GetLocalPlayerFactionOrNull(), to support spectator players.<br />
** Additionally GetFirstPlayerFactionOrNull() has been added, and GetIsFriendlyToLocalFaction() and GetIsHostileToLocalFaction() have been updated to work based on that in order to extend support for spectators even further.<br />
<br />
* Planet visibility is no longer determined from your local faction (since for spectators that might be null, and for all humans it is identical anyhow). It now just uses GetFirstPlayerFactionOrNull(), since that's slightly more effient and supports spectators.<br />
<br />
* Huge areas of the AI have been updated to allow for spectators, generally giving them information that mirrors that of what the first player is seeing (objectives-wise and so on).<br />
** In other areas, it simply updates things to not erorr out when you hit hotkeys, etc.<br />
** Spectators also can't run "cmd" messages from chat; it will just show the text as if it were not a command.<br />
<br />
* GetLocalPlayerFaction() on the planet object has been removed, as that did some risky caching for multiplayer in general, and also was not really compatible with spectators.<br />
<br />
* Fixed a couple of errors where non-sim-but-background-fation-AI code was referring to the local player faction. It now refers to the first player faction.<br />
** Probably this would not have made much difference, unless the game switched hosts partway through or something like that.<br />
<br />
* The chat controls in the lobby now work, though there are some bugs in them still.<br />
<br />
* The correct name for each player faction now shows up for even for players who are in spectator mode.<br />
<br />
* Player factions in spectator mode now see in the lobby chat area that they are in spectator mode.<br />
<br />
* Both the lobby chat and main game chat now support more characters in their text -- basically anything that our "condensed" ascii format is allowed to display.<br />
<br />
== Version 2.112 Steam Networking Complete ==<br />
(Released July 31st, 2020)<br />
<br />
* The description of the Ensnarer Battlestation now explicitly mentions that it can use AI Great-Turrets<br />
** A number of people have reported this as a bug over the years, so hopefully that won't happen anymore<br />
<br />
* All of the Fallen Spire ships, including those in the Spire Railgun Shop optional mod, have had their health and shields doubled, but their firepower halved.<br />
** This should make battles with other mega-units last longer, which feels more appropriate, but keep their "damage over time" the same. <br />
** When these were going toe to toe with the AI Exogalactic War Front units, they seemed to disappear too quickly, making them feel weak. This should keep their effectiveness the same as before, but make the battles take about twice as long with those large ships, so that it doesn't feel like instant evaporation at least.<br />
** The one unit not adjusted is the Spire SuperDreadnought from the Spire Railgun Shop mod. That was already maxed out as a "kills everything and is basically invincible" sort of ship.<br />
** Thanks to a variety of players for weighing in on the feel of these units, and Badger for suggesting this adjustment.<br />
<br />
* Rather than having a slider for the number of planets in the galaxy map view, there is now a dropdown.<br />
** This prevents the intense "regenerate map spam" and lag that was inherent in using a slider, along with making it easier to choose a certain number of planets.<br />
** We have made it so that it only gives you multiples of 2 below 60, multiples of 5 below 100, and multiples of 10 above that. This makes it easier to quickly peruse the range.<br />
** Each entry has some commentary on what it will mean to the feel of the map if you are hovering over it in the dropdown with the number of planets expanded.<br />
** Actually, it wasn't even regenerating the map after you changed the number of planets, which was really confusing! You had to hit regenerate map. Now there is no confusion.<br />
** All of this is easier to use as a player in general, on top of being something that is easier to deal with in multiplayer for sync purposes, too.<br />
<br />
* Fixed a longstanding bug where dropdown selections that were open could persist when leaving the lobby or changing tabs within the lobby.<br />
** Thanks to MaverickPenkenn for reporting.<br />
<br />
=== Milestone: Steam Networking Integration Complete ===<br />
<br />
* Fixed an issue where multiplayer clients disconnecting from a host would try and fail to save the last settings from the lobby. Now it does not save the lobby settings from a session you are just a client of.<br />
<br />
* All of the networking frameworks have had their "send to anyone here and myself" code consolidated into the network authority, so when an interface is partially implemented it won't wind up stalling out waiting on the host.<br />
** Less code duplication is also always good, but it wasn't clear that this was a complete commonality until we got partway into the Steam framework implementation.<br />
<br />
* A new ArcenSteamClientConnection wrapper has been created to keep track of the Steam connection on servers.<br />
** This now properly is registered while the steam connection is alive, and all of the "waiting for player to connect" and "player disconnection" events now happen properly.<br />
** For some reason, we are not getting the "host has accepted you" callbacks on the client end, but that doesn't really matter. As we start actually having our challenge-response data sent via the higher-level networking code, that bit will become irrelevant as it establishes itself within part of one second anyway. It's just a curiosity, or potentially something that is only meant to trigger host-side. Frankly the documentation is sparse in points, both from the Facepunch C# wrapper and the Valve C++ baseline, so this might be working as intended.<br />
<br />
* Substantial progress on the Steam network transmission of data. Still not quite seeing it register yet, but we're getting close.<br />
<br />
* The full suite of network logging has been integrated into our steam networking wrapper, now.<br />
<br />
* When a Steam host shuts down the connection, the steam client computers now definitely notice and react to that. The inverse was already working from the start.<br />
<br />
* Figured out the missing information on how to get data from the facepunch steamworks wrapper (call Recieve() to trigger the other events), and are sticking with the derived classes methods rather than the interface method, since for relay connections it seems like the interface method is not fully implemented.<br />
** With this in place, we're now getting messages on the client machine, and they are properly decoded! The host for some reason still doesn't get messages back, but this is progress.<br />
<br />
* Fixed a bug in our connection status window code that was causing it to stop showing a timer on connection stages after the earliest ones.<br />
** With LiteNetLib, that all flashes past so fast we could not tell that was even happening. With Steam currently stalling out with the host not getting messages, it became apparent.<br />
<br />
* Previously it was possible for our socket mode to be off, and silently ignoring messages we were sending.<br />
** This was initially done to make it so that any lingering messages that would try to be sent after a disconnect would not cause visible errors, but in this case we've wound up with the socket state being off on the steam networking, despite it being active, and this thus resulting in client messages being composed but not actually sent. That was not obvious because of the lack of error messages.<br />
<br />
* Figured out a stupid mistake in our own code, indeed a single line of code, which was preventing the client from sending data properly back to the host.<br />
** Steam networking is now fully functional in terms of sending data back and forth. There is some sort of issue with the world data not getting across properly, but we have to now verify whether that's limited to Steam or also happens on LiteNetLib.<br />
<br />
* Added in a substantial amount of extra error tracking in our univeral and game-specific network message handlers.<br />
** This helps us to find out where errors actually are.<br />
** In the case of steam, right now we are getting some exceptions when the host tries to tell the client what their player profile number is.<br />
<br />
* Fixed a simple typo that was having us send a junk message via both frameworks to the client when they first connected.<br />
** In both cases, this led to the galaxy map not showing up properly on the very first world connect. But in the case of Steam networking, it also led to an exception because the byte array was too small.<br />
** This extra smallness is actually more accurate, and basically it was only not erroring with LiteNetLib because the buffer array was larger than needed because they are pooled.<br />
** This is an interesting difference between these two networking frameworks, but neither one is particularly "wrong. But it does make Steam slightly more sensitive to certain errors in a way that is useful, because it's an error in both cases that manifests in other places.<br />
** Anyhow, this seems to argue for us to internally use Steam as our main testing framework, additionally because that means we are round-tripping out through the internet and Valve's servers and back rather than having the speed of a LAN.<br />
** This also means that the Steam networking library is fully completely integrated, which is a very major milestone! Now it's all game logic, regardless of what is going on with the two networks.<br />
** Also worth noting that it's under 3 seconds to connect a client to the lobby in our test case, using the Steam relay servers, etc. On the LAN it is under one second, so that's pretty killer.<br />
<br />
=== More Multiplayer Work For All Frameworks ===<br />
<br />
* "Planet GalaxyMapVisuals in CenterGalaxyViewOnPlanet null!" will no longer happen. It was a thing relating to trying to center on a planet slightly too early, and the population of the galaxy map still having failed.<br />
** We are now bypassing that and using the raw internal transform offsets to calculate the correct camera position.<br />
<br />
* In response to the initial challenge from the host, the client no longer just sends their profile name. They now also send their list of installed and enabled expansions and mods.<br />
** The host then compares that list to its own installed and enabled expansions and mods. If there are differences, then it rejects the client connection and does a popup on the client and a chat message on the host side explaining why.<br />
** It also notes in there that both parties can enable or disable expansions or mods in the Game tab of the Settings menu to get things to match.<br />
** Please note that, yes, in some cases there will be mods that are enabled but which "wouldn't do any harm" because their functionality won't be triggered in the campaign in question. We don't have any way of knowing that, so we have to err on the side of caution.<br />
** When it comes to expansions, there are none that "wouldn't do any harm," because all of them add some ships and features to the game in general that all players need to have. For instance, the first expansion adds a bunch of new turret options that are available to choose from in any game you play with that expansion on.<br />
** At any rate, we've gone out of our way to make it easy for people to disable expansions and mods so that they can play with friends who don't have those same expansions or mods. The last thing we want is for the only solution to this sort of thing to be someone reaching for their wallet or having to faff about in the filesystem.<br />
<br />
* Low-level chat messages that are sent to everyone from the host are also now sent to the host themselves. Previously, they could not see messages of this sort, turns out.<br />
<br />
== Version 2.111 Initial Steam Connection ==<br />
(Released July 30th, 2020)<br />
<br />
* Fix a null reference exception in my new spire relic code<br />
** Thanks to Chuito12 for reporting<br />
<br />
* Nanocaust: Make the AI wait a bit longer before unleashing Exogalactic units on it. Remove some deprecated code<br />
** Also the exogalactic units won't hang around to kill the entire nanocaust, so there's a chance it can recover.<br />
<br />
=== Milestone: Initial Steam Networking Connection Between Client and Host ===<br />
<br />
* The Steam versions of the game now initialize relay access on startup, to make it so that the first connection using Valve's relay network will be extra fast.<br />
** If you wind up not playing any multiplayer, this is absolutely harmless. If suddenly it is flagging your firewall on game start on the Steam versions of the game, though, that might be why.<br />
<br />
* The basic connection through Steam's newer networking sockets connection is now in place, using their relay servers as recommended. This is the approach that absolutely bypasses NAT traversal and anything else of that sort, and in fact hides your IP address from anyone you are playing with. The claim is that their backbone is faster in most cases than the general internet one.<br />
** If need be, we can make a "Steam over IP" version that allows for their networking sockets stuff to run more directly over UDP, and only fall back to their relay servers if there is a problem. This would be a lot like LiteNetLib, except with much better NAT punchthrough making use of ICE and STUN and all those things.<br />
** For now we are sticking with Valve's recommended practices.<br />
** Beyond just getting the initial connection up, we don't have anything there yet, but on the server we can see the Steam username of the client who requested to connect and who forged the connection.<br />
<br />
== Version 2.110 AI Exogalactic War Front ==<br />
(Released July 29th, 2020)<br />
<br />
* Spire Relics now have additional text in their descriptions explaining either A. whether the relic is on route to a particular planet , or B. that this relic must build on this planet<br />
** Thanks to Lord of Nothing for suggesting<br />
<br />
* All of the units that were previously named "Galactic War [name]" are now just named "[name]"<br />
** However, in the tooltips for them, their faction should now say "AI Exogalactic War Front" in whatever the hunter fleet's color is, rather than saying the AI Hunter Fleet.<br />
** This lets us keep the shorter name, while making their sub-group and source a lot more clear.<br />
** This does need testing, so please let us know if it doesn't show up correctly somewhere. This is using a new xml feature called "override_faction_name", which lets us use a different faction name for some units in a faction, but without actually creating a new faction.<br />
** Thanks to Ovalcircle for leading the discussion that led to this.<br />
<br />
* Spending a ton of science will now increase a player faction's Overall Power Level very slightly.<br />
<br />
* Remove some inaccurate description text for the Rorqual Hejira<br />
** Thanks to GreatYng for reporting<br />
<br />
=== UI for Steam Networking ===<br />
<br />
* Added the new ArcenNetworkConnectionOption class, which we are using as a basis for things like lists of your Steam friends that you can connect to.<br />
** On the network authority, there is a new PotentialServerOptions, which is used to list out such things. This can be used for anything that we need to list a variety of to connect to, not just friends in Steam and GOG. This is in contrast to the "type in an IP" method that we use with LiteNetLib.<br />
<br />
* Started building out the Steam networking framework layer, currently based on the ISteamNetworking implementation that most games use.<br />
** We MAY opt to also start supporting the newer ISteamNetworkingSockets framework that Valve has rolled out more recently, but that would be an alternative networking framework in AI War 2 that you could choose between.<br />
** The fundamental premise of those two Steam networking setups is really different, and while the newer one would in some ways be easier for us to implement, it seems a lot less familiar to the average Steam player, involves IP addresses potentially, and is maybe less battle-tested, but who are we to say.<br />
<br />
* Previously it was still possible to have some exceptions happen silently in the Engine_Universal main loop, and they would log to disk but not show up in your face. Fixed.<br />
** It was also possible to get some silent errors when clicking buttons and other UI elements, turns out. This made the application just seem not to respond to the click, but now it properly shows the error if there was one.<br />
** Also it was possible for certain errors in the UI call stack to prevent the display of the error window.<br />
<br />
* When you try to connect to an IP address, or you change your active networking framework, the game settings now get saved immediately so that that is remembered even if you shut down the program right away.<br />
<br />
* There is now a screen that will be used for Steam and GOG connections, from the client side, and in Steam it now:<br />
** Shows a list of all your Steam friends, with ones that are in AI War 2 at the top, then ones that are online, and then the rest below that.<br />
** Lets you sort to just ones that are in AI War 2 or online.<br />
** Lets you refresh the list to check for updated statuses.<br />
** There is a connect button for each friend, but that is not functional yet. Just haven't gotten to that part yet.<br />
<br />
== Version 2.108 Galactic War Units And The Exostrike ==<br />
(Released July 28th, 2020)<br />
<br />
* Completely rework the way Exogalactic strikeforce leaders work, to allow per-AI-Type customization. No functional change right now, but intended to support some new AI types for DLC2<br />
<br />
* HandleHelperJournals() has been split out into a bunch of sub-methods, since they can error in rare cases and it would be nice to know where the error generally is.<br />
<br />
* Fixed an issue where we were not letting negative risk analyzer data be saved properly. Turns out that has a good reason to be negative at times.<br />
** Thanks to Badger for reporting.<br />
<br />
* Added a new UI feature that is a throwback to some of the functionality we had in various past games: the "center screen message"<br />
** This is basically a message that can show up near the top center of the screen, and stay there for a bit or for as long as needed.<br />
** It won't block the mouse, and it is over everything except modal popups and tooltips.<br />
** This isn't something we would want to use all THAT often, but for cases of things like "hey the server isn't responding, why is MP stalled," this is exactly the sort of UI functionality we need.<br />
<br />
* Fixed a harmless bug where, for the last few months since we've been doing multithreaded loading of camera xml files, the "PrivateVisExtensions" assembly would sometimes have annoying but unimportant errors appear on startup.<br />
** Essentially, it turns out that loading classes from a custom dll is not entirely threadsafe. Go figure. The fix for that is simple, and it doesn't slow things down, but now we know.<br />
** Thanks to GreatYng for the first report of this we'd had outside of ourselves running into it.<br />
<br />
* Fix a bug where macrophage achievements weren't triggering if you killed all the Telia<br />
** Thanks to GreatYng for reporting and StarKelp for the fix.<br />
<br />
* The in-game credits have been updated to include two more individuals who are key DLC2 testers.<br />
<br />
* Added new GetWasWorldStartedOnGameVersionOlderThan() and GetWasWorldStartedOnGameVersionAtLeastThisVersionOrNewer() to world, which let's people find out in a really efficient way if a world was started before some certain point.<br />
** We can't be accurate past a month or so ago, because we were not tracking the original savegame version back then. But it's useful for looking at saves older than the more recent ones and altering them if need be.<br />
** This is now used specifically to fix this macrophage disabled stuff only on older savegames than 2.108.<br />
<br />
* Fix a mispelling in the Mesopotamian planet names<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fix a typo, "reciever" to "receiver"<br />
** Thanks to Apthorpe for reporting<br />
<br />
=== UI Changes ===<br />
<br />
* In the Load Menu, campaigns are now sorted by 'most recent save game in that campaign' rather than alphabetically<br />
** Thanks to Puppet Master for the suggestion.<br />
<br />
* The default sort for the load menu is now by date.<br />
<br />
* Rename 'Exogalactic Strikeforce' to 'Exostrike' and 'Extragalactic War Units' to 'Galactic War Units' in UI. Having "ExoGalactic" and "ExtraGalactic" was a perennial source of confusion<br />
** Note that internally the code uses the old names for the moment<br />
** Thanks to a discord conversation involving relmz32, Oryutzen and NRSirLimbo<br />
<br />
=== Dyson Sphere Buffs ===<br />
<br />
* The Dyson Sphere's ships should now really level up after the hack<br />
** Thanks to GreatYng and zeusalmighty for the bug reports<br />
<br />
* Dyson Sphere hack descriptions now say "This hack will make the Dyson Sphere very unhappy with you for a while" to clarify the behaviour.<br />
** Thanks to Apthorpe for suggesting<br />
<br />
* The Dyson Sphere now gets additional income (ie it can build ships faster) that scales with AIP. As AIP goes up the Dyson and Antagonized Dyson get stronger<br />
<br />
=== Multiplayer Work ===<br />
<br />
* SendMessageToAllClients() has been split into two methods: SendMessageToAllClientsWhoAreFullyConnected() and SendMessageToAllClientsRegardlessOfConnectionStatus().<br />
** We really don't need heartbeats and frame auths and so on going to clients who are still connecting in.<br />
<br />
* Also added a GetCountOfClientsWhoAreFullyConnected() that lets us know if there are any clients who actually have gotten all the way in (and thus we should send world data)/<br />
** And added GetCountOfClientsNeedingWorldData() that lets us know we should make everybody wait for a bit until those people connect in. Otherwise everyone won't be on the same page.<br />
<br />
* Added a OnServer_IsAtPausedSpotWhereGameWorldCanBeSent() that lets us wait for a break in things happening (usually only 400ms or so at most) to then have a clean slate to send a world state to a connecting client without that state changing between them being sent the state and them getting it.<br />
** Along with this, if GetCountOfClientsNeedingWorldData() is more than zero, then it now pauses authorizing more simulation frames until the world is fully taken in by the new clients who are joining.<br />
<br />
* When a multiplayer game is stalled out for some reason, it now uses that central screen message to let you know what is happening, and if possible, why it is happening.<br />
** The game itself will have stopped having any action at this point, though you can still scroll around and look at things and give orders. But nothing is proceeding on the enemy side, so you don't have to worry about it being in your way.<br />
** When a client is first connecting into the lobby, it also uses this, to basically get the host and any other existing players to wait a moment before making more changes, etc.<br />
** On the host, this is already set up to give some context about the exchange under the hood that is happening with the new client.<br />
<br />
=== Multiplayer Transition To LiteNetLib ===<br />
<br />
* Okay then... we are switching network libraries when it comes to our non-Steam/non-GOG transport layer. Instead of FORGE Remastered, we'll be using LiteNetLib.<br />
** FORGE has grown a lot over the years, but the version we were using was from 2018...ish. We looked into updating our version of the code, but were not thrilled with how complicated it was going to be. Since we had working AI War 2 multiplayer on FORGE at least as recently as 2017 (in an alpha state), staying with the existing code made a certain amount of sense.<br />
** However, we started running into really long delays with something as simple as sending 10 bytes to say what our profile name was. This was taking upwards of 14-18 seconds between two machines sitting three inches apart and both within five feet of a powerful wifi router. We verified that the polling was happening hundreds of times per second, and that massive amounts of data was being sent via sockets. But in the internals of the old version of FORGE we have, it was taking it quite a very long time to assemble that into a full message, despite all the churn of hundreds and hundreds of data reads that were apparently all just empty headers and then noise. <br />
** Time for a new approach. It's worth noting that the current version of FORGE still lists all the most internal classes as "in development and lots of dire warnings," so that was another reason for switching up frameworks.<br />
** We chose LiteNetLib at this point, and within 40 minutes of dropping that in, we had the first successful connection between the machines on using this framework for the game. It was just a simple "hello client" message in basic unicode, but it arrived extremely instantly, as expected.<br />
** Next steps are going to be doing some cybernetic implants on LiteNetLib, rather like what we did on FORGE, to make sure that it integrates with AI War 2 properly and our network authority, and that it communicates as directly as possible with our own pre-formatted bitstreams. Most of that should be part of one day of work, at this point. We shall see. Then it's back to the actual larger "build out the multiplayer part of the game" work, but minus the lag that was tripping us up the last day or two.<br />
** It's also worth noting that, with this switch, we had to unfortunately also lose the awesome NAT punchthrough work that Doug Fields did for us with the FORGE interface back in 2018, but LiteNetLib has some of that of its own. And hopefully most people use Steam or GOG if they are behind firewalls of any complexity (since relay servers then become required, and that's where the free relay servers are).<br />
<br />
* NetPeer in LiteNet now inherits from ArcenNetworkClientConnection.<br />
** For now, we are using our own methods to generate the ConnectionIndex, rather than using the existing peer.Id. There may be some numeric conflicts, otherwise, but we can also change this later.<br />
** We also are initializing everything on the Arcen-integration side, keeping our own clientsOfServer list for quick access, and then calling the game-layer RespondToNewConnectionAcceptedByTransportLayer() that will kick things off.<br />
<br />
* PrepareMessageForSending() has become WriteLogOfSend().<br />
<br />
* Added a new SendToSpecificPeer() method onto LiteNet's NetManager. Not sure why that variant didn't seem to exist.<br />
<br />
* Wiring back up our LitNetSocket wrapper class:<br />
** SendMessageToHost_Inner() done.<br />
** SendMessageToAllClientsRegardlessOfConnectionStatus_Inner() done.<br />
** SendMessageToAllClientsWhoAreFullyConnected_Inner() done, using the new SendToSpecificPeer() method.<br />
** SendMessageToSpecificClient_Inner() done, using our own ConnectionIndices for now.<br />
<br />
* Booyah! Exclamatory phrases are not the norm in our patch notes, but this is an exciting moment. LitNetLib is sending messages, and doing so with speed and accuracy and a minimum of fuss. The username travels three inches in well under a second, as should be expected.<br />
** At first, I was getting some very strange data sent across, and I figured that this was going to be an endianness problem, but actually all of the .NET/Mono data is the same endianness from the look of things. Which makes sense, given that otherwise savegames would not work from computer to computer.<br />
** After spending the night with that rattling around in my brain, this morning I decided to definitely do some profiling of the data before I started messing with the #ifdefs.<br />
** First thing I noticed was that I'd chosen to use the RawData byte array, and immediately next thought was "I better check there's not a network header in there." Turns out, yes, there's a UserDataOffset. The first four bytes are not my data, and so of course it would give gibberish as if the endianness was wrong. Just starting my reads from the proper offset makes everything work instantly.<br />
** All of this is from a Mac to a Windows machine at the moment, but my I'll be testing three-way with my linux machine as well. Right now laptop is sitting closed under the Mac.<br />
<br />
* LiteNet logging now gets funneled to our own main logging pipeline.<br />
<br />
=== Continued Multiplayer Work ===<br />
<br />
* A fair bit of work has been done to make intentional disconnections from the client or server tell the other side more quickly.<br />
** This should help to avoid some disconnect-and-reconnect issues that are otherwise inevitable, and it just makes things feel more responsive.<br />
<br />
* Additionally, when you use the in-game controls to exit the program as a while, it now takes one extra half second to lets Steamworks and GOG actually do their exit logic properly, rather than rushing out the door.<br />
** This should hopefully help with any cases of the game still being thought to be running on Steam in particular after it closed.<br />
<br />
* When you exit the game, while it is doing its brief exiting stuff it now throws up a center-screen "exiting.." message.<br />
<br />
* Got rid of OnServer_WaitingOnConnectionIndices, as this was basically a duplicate of something we are doing better and more cleanly a new way, now.<br />
<br />
* UpdateDebugText() and all of its related variables have been removed.<br />
** This was the sort of thing that, in all of our prior games before Raptor and moving to 3D, you could hit F3 and get output information from. But it has never really been used in AI War 2 properly.<br />
<br />
* Got rid of WorldTransmissionMessageType, as it was needlessly complicated.<br />
** This was essentially us breaking the world transmission data into multiple parts and then sending those in parts. Historically there were two reasons for this:<br />
*** Back in AI War 1, we were using the Lidgren network library, and even though it was trying to work around the MTU (typicaly 1200 bytes) of various networks players might be on (or passing data through indirectly), it was often having bottlenecks and slowdowns with how it sent fragmented messages through the network card. Our theory at the time was that it was flooding the buffers of the NIC, rather than giving it data at a more reasonable pace. Network cards have grown enormously in the last 11 years, as have the OSes that control them, so that's not really a concern now. All of the newer network libraries that we would be using to send data should be able to handle 1MB of data without incident.<br />
*** Secondarily, for AI War 1 and for the A Valley Without Wind games, we were sending enough world data that you could see a noticeable wait time, and by handling this above the network transmission layer we could give you visual feedback on transmission progress (even though the whole act of that actually slowed it down). Eleven years later, we have networks that are vastly faster basically everywhere in the world, and the world savegames for AI War 2 are much more efficiently packed than AI War 1 was. So sending a file like this really is like a midsize image on any website you visit, now. Not really a progress bar sort of situation, especially if the progress bar itself causes slowdown.<br />
<br />
* ConnectionStage has moved from being just a UI-only element to being ClientConnectionStage as part of the ArcenNetworkAuthority, so that clients can better keep track of their connection status. Usually this is less than a second or so, anyhow, but we still need to keep track of it in case something goes wrong in particular.<br />
<br />
* The host now properly sends the world data to the client, for the first time in three years or so.<br />
** The client is having some trouble understanding it thus far, so now is a good time to build in error handling (it was just silently failing, until now).<br />
<br />
* Added a new SendLowLevelChatMessage() method on the network authority, which is used mainly for sending back and forth arbitrary messages from clients and the host to explain about the status of things. These can be echoed to all other clients or not, as the case warrants.<br />
<br />
* If the client fails to load a world sent by the host, then the host and any other clients all get sent a low-level chat message about that, the client gets kicked out (since they never made it fully in), and the client gets a nice error message on their screen and in the log.<br />
** This way we can solve whatever the problem is, and nobody is left sitting wondering why things are slow (when in fact they errored).<br />
<br />
* When you are loading a quick start, or loading a savegame as a template into the lobby, it now clears the chat log. This was definitely not information that needed to persist from a prior game to the new lobby!<br />
** These sorts of chat log messages, which are kept over the long term for the game (up to a limit), are no longer shown in the lobby at all.<br />
** Instead, we now are using LocalMomentaryDisplayLog, which is something that doesn't get sent with savegames, and which normally is just "stuff showing on your sidebar during the game for a little while."<br />
*** This is perfect for the lobby, and in the lobby we are just showing the last 100 of these, and not clearing them until you reach the game itself.<br />
*** These things are actually shown by timestamp, not by gamesecond (which isn't ticking yet), so that's just extra perfect for a lot of reasons.<br />
*** This also leads to privacy for people who were talking before someone new joined -- you only see messages that were sent after you were connecting -- although that's not hugely important in most cases.<br />
<br />
* Got rid of ArcenUI.Instance.CurrentNowUTC, since that was putting all of our lobby chat messages in the British time zone. We didn't use this anywhere else, and it was puzzling that we used it at all.<br />
<br />
* NatPunchEnabled is now true on the server and client for LiteNetLib. We'll see how well that works.<br />
<br />
* Added a new debug setting to the network section of the settings menu: Write Network World Serialization Logs<br />
** When sending a game world across the network to a client, write NetworkWorldSerialization.txt, and when getting one from a host write NetworkWorldDeserialization.txt -- both in the PlayerData folder (but on two different computers). The only real reason to turn this on is if a client is unable to join a host and gets an exception; this lets us do a diff of the two files and figure out what is different about what the host is trying to send and the client is trying to read.<br />
** Note these logs are often huge, sometimes hudreads of MB each. Compressing them into a zip or tarball and then uploading them somewhere we can download them to find out what is happening is a good idea. Hopefully as a player you will never need this, but this is basically a way for us to test the network world sync process, which otherwise can be incredibly opaque and take a lot of time to hunt down.<br />
<br />
* Used our new network world logging capabilities to fix an error in network world transfer where it needed to send the game version in a different format.<br />
** The client now looks at the game version very early on, and if it does not match it sends a message back to the host telling the host what the problem was.<br />
** Basically: If the client can't join because of a version mismatch, that gets shown and things happen properly.<br />
<br />
=== Milestone: World Sync Between Host And Client ===<br />
<br />
* Milestone! Initial transmission of the world data from the client to the host now works properly.<br />
<br />
* When a local player account is missing the following methods no longer throw errors:<br />
** SwitchViewToPlanet<br />
** OnClient_SendClientBatchToServer (actually still errors, because it's useful to have it do so).<br />
<br />
* PlayerAccount is now more strongly linked to the new ArcenNetworkClientConnection, and its connected status is now a method called OnServer_GetIsConnected().<br />
** There is some duplication of concepts here, but when you factor in the way that things like viewing of planets are synced in multiplayer, this is a worthwhile separation of concepts.<br />
<br />
* If two players with the same profile name try to connect to a game at the same time, it will now prevent the second one from joining and tell everyone why.<br />
** Bear in mind that these are AI War 2 profile names, not Steam or GOG or what have you. Everyone needs to have a unique AI War 2 profile name in the current game, but they can change up their names however they want and global uniqueness doesn't matter beyond the current game you are in.<br />
<br />
* In situations where a player 3 joins after player 2, and it's the first time player 3 has been in this particular world, player 2 now gets told by the host about player 3.<br />
** And of course all the more complicated permutations of this. It's the new FromServerToClient_SendNewPlayerProfile.<br />
** This is needed specifically so that all clients can know which planets are being viewed by other players, so that which planets are "tier 1" processing is honored and identical everywhere. Among other later needs.<br />
<br />
* Clients connecting to a host are now properly told what playeraccount they have been put in charge of.<br />
** This makes PlayerAccount.Local not null on their local machine, and lets them give orders and whatnot from their spot there.<br />
<br />
* Errors that happen during the main sim step will now be more visible in multiplayer contexts.<br />
<br />
=== Milestone: Initial Sharing Of Lobby Between Host And Client ===<br />
<br />
* Milestone: Clients are now able to load into the lobby, and they and the host both see most (but not all) changes that are made.<br />
** Clients are not yet assigned to any faction (making them just spectator-mode for now), and there are some specific bugs with certain data that isn't synced correctly just yet.<br />
<br />
* Map generation can no longer happen in the lobby except on the host.<br />
** We have no real way to be sure that map generation is deterministic between machines, so we need to do a world sync each time anyway.<br />
<br />
* When the map is regenerated on the host during a multiplayer lobby, it recreates all of the playeraccounts needed for each of the player connections that exist.<br />
<br />
* And when the map is regenerated on the host during a multiplayer lobby, it now re-syncs the entire world data to all of the clients so everyone is up to date.<br />
** This also solves the "authorized through frame number" issue, which was really just a smaller symptom of this larger issue.<br />
<br />
* Both the client and host are now verified able to add, remove, and edit factions and have that properly affect the world.<br />
<br />
* Window_ServerMultiplayerConnectionStatus has been removed, as we no longer use that. We've been using the new center-screen messages instead, or the chat sidebar, as needed.<br />
<br />
* In multiplayer games, the save button is now disabled and says: Cannot Save Game As Client<br />
** If you click it, it gives you this message: Unfortunately, only the host can save games in multiplayer. To save on bandwidth as well as on processing power between your machines, there is a LOT that is calculated only on the host machine. If you were to save a copy of the game on your client's end, loading it would lead to a lot of wrong and missing data.<br />
<br />
* Additionally, autosave is now something that does not happen on multiplayer clients. Just the host.<br />
<br />
* The header of the load quickstart and load saved game menus now make it clear if you are loading for multiplayer or single-player.<br />
** Also on these screens is a new "[Multiplayer Questions?]" bit of text up at the top that appears only on the multiplayer version, and which has some helpful mouseover text.<br />
<br />
* Rather than having an annoying explanatory popup to click through every time you open the various ways of hosting or joining a multiplayer game, it now puts that extra information under the "[Multiplayer Questions?]" section up at the top of those screens.<br />
<br />
* At the top of the lobby screen, it now says if you are joining as a client or a host to a multiplayer lobby, as well as having that same "[Multiplayer Questions?]" bit.<br />
** This includes the following new text in its mouseover text: Except for the host, all players are spectators by default. There is only one human player faction by default. Any number of players can share control of a single faction, or each player can have their own faction that they control on their own. You can mix and match as you like.<br />
<br />
* The connect by IP window has been completely reworked visually so that it matches the rest of the game and doesn't look like the old temporary style that we were using in 2017 (because that's what it was).<br />
** This also lets us put extra information on that screen to help anyone who might be confused.<br />
<br />
* The client connections status window is now patterned as a continuation of the connect by IP window, and it's nice and graceful and in the new style.<br />
<br />
== Version 2.106 Immortals and Unresponsiveness ==<br />
(Released July 23rd, 2020)<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in field names for the risk analyzers saving, so if they have trouble serializing we can see which field it was.<br />
** Also then made it so that the total increase and net increase both are automatically clamped to 0 instead of a negative number so that they won't throw an exception when trying to save.<br />
** Thanks to GreatYng for reporting.<br />
<br />
* When stacks are split, they now have their "time on planet" and "time alive" set to be whatever the original stack was. Same with the amount of cloaking points they have lost, and the number of cloaking points they have left.<br />
** This prevents a variety of abilities from triggering, including the "invincible if only on this planet for x seconds."<br />
** We also made it so that dying to remains does not reset the "time have been alive or on this planet" counter, for similar reasons.<br />
** This keeps the vanguard hydra heads from being insanely impossible to kill, among other issues that are probably pretty much all in the player's favor to have resolved.<br />
** Thanks to crawlers for reporting.<br />
<br />
* Added some extra debugging information for the status of gamecommands that are queued, to see if there are clogs happening. At this point, we can't replicate any evidence of that, though we have some reports from multiple players of it. So maybe the problem either takes a bit to manifest, or is in a different area of the code than we expected.<br />
<br />
* AIP should no longer increase when things die to remains if you have the "ships of X type die to remains instead of dying entirely" galaxy map option on.<br />
** This is untested, but should work.<br />
** Thanks to crawlers for suggesting.<br />
<br />
* Found and fixed the core typo from a few builds back where remains that were being rebuilt were being set to have the cost of the rebuilder, not themselves. This was previously massively overcharging players for building most things, but then once we put on a band-aid to fix that, it started giving it to them for basically free.<br />
** Thanks to Lord Of Nothing for the report and save.<br />
<br />
* Fixed a bug from the last few versions that nobody seemed to notice, where the galaxy map was not centering on planets properly when you first went into the game after loading a savegame. This had to do with when we were calculating the position of the planet, and that not always being calculated before we tried to center on it.<br />
<br />
* Fixed a bug where it was possible that a client would send more commands to the host than it would tell the host about, and thus the host would not know to read the extra ones (or vice-versa). In single-player you are both the host and client, so it still applies.<br />
** This was happening because of multiple threads adding to the queues of commands at the same time that the queue was being drawn down.<br />
** This was actually something that probably could have happened since more or less forever, but it was substantially more likely in the last few versions because of some efficiency improvements we made.<br />
** Additionally, we have now switched to using a ConcurrentQueue for each of those collections, rather than a regular Queue. This should also help with potential contention.<br />
** There was also the possibility that we might not be able to get enough commands out of the list for some reason to then send more, and we are also now guarding against that.<br />
** Previously, this problem was manifesting as orders not being carried out when you gave them, sometimes or all the time. And things like "save my game" and "pause or unpause" not working anymore.<br />
** We were able to duplicate this in one savegame after some time, but no longer can. Given the intermittent nature of this sort of thing, we can't say for sure that it is solved -- but the logic of what was going on makes sense, and the fix we put in should hold that at bay. It's one of those "can't prove a negative" things, at the moment, so fingers crossed it just never shows up again.<br />
** The characteristics that we observed while this happens, if it happens to you and you want to see what you can tell us:<br />
*** In the escape menu, under the memory pooling performance, the number of raw commands were steadily climbing. One or two every few seconds. This should never happen in that way. Increases happen, but not a steady drain flow like that.<br />
*** In the escape menu, further down under the Commands Queued By Type, you may see some null warnings up at the top of that list, now. That wasn't there when we observed it, but it would be if it ever happened now.<br />
** Thanks to zeusalmighty, Puppet Master, Gdrk, and GreatYng for reporting and giving advice on how to reproduce it.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* In our copy of FORGE networking, we've removed some useless extra code that was for the UniversalWindowsPlatform framework, which we won't be ever using.<br />
<br />
* In our copy of FORGE networking, we also got rid of a very useless set of "pending" messages on the UDPClient and UDPServer, which were ostensibly to help with reliable messaging, but in reality was just doing some useless event handling and invocation, and some useless cross-threading locks. It just put the things in the basket and took them back out, never checking the basket or doing anything with it. Thankfully, there is a second basket for reliable UDP inside the UDPPacketComposer, so this was just extra redundancy.<br />
<br />
* Added a new ArcenNetworkClientConnection abstract class, which we now store on ArcenNetworkAuthority in a ClientConnections list.<br />
** These are connections, not yet correlated to specific players. But it lets the network pipe connect up a specific connection with a specific player (or reject that connection if it's not okay).<br />
** Each individual networking framework (ArcenSocket descendent class) is actually responsible for keeping track of these connections and populating them.<br />
** But the actual network authority does the job of authenticating them into a given game and handling the challenge/response work, figuring out a match to a player slot in the game, etc.<br />
** With this in place, we can now get rid of GetNumberOfConnections(), because that's now moved out of the socket and into the network authority.<br />
** This is a substantial refactor, in that it will really make Steamworks and GOG a lot easier for us to work with as networking frameworks, faster.<br />
<br />
* NetworkingPlayer in FORGE now inherits from ArcenNetworkClientConnection, and is the first version of a networking framework using this new pattern.<br />
** On NetworkingPlayer, rather than having a public { get; private set; } for some of the immutable connection things, we now use them as public readonly. This is both more efficient in performance (slightly), but also prevents sync issues between this class and its new underlying abstract class.<br />
** This class gives the information it needs to the base class, and doesn't bother registering the host NetworkingPlayer as an underlying client connection at all, keeping things simple.<br />
<br />
* A bunch of stuff with the FORGE networking logging has been replaced with wrappers around our own logs, so that if there are internal exceptions those don't just go nowhere invisibly anymore.<br />
<br />
* Trimmed out a bunch more old FORGE code that has been commented out for years from the look of things.<br />
<br />
* RespondToNewConnectionAcceptedByTransportLayer() is definitively game code, not part of the actual networking transport layer, and it has been moved into the central codebase and away from any specific networking framework.<br />
** "Hello friend, you've connected: what's your profile name you want to play under?" Etc.<br />
<br />
* A fair bit of the "initial chatter" of clients connecting to a host and the host responding are now logged to the debug log no matter what.<br />
** There really is not that much that is said, and this will certainly help someone at some point who is having some sort of connection issue.<br />
<br />
* When clients are connected to the host, now the host not only shows the number of clients, but also sees their profile names that they have chosen to connect with.<br />
<br />
* A bunch of event-driven stuff on the FORGE networking has been made a bit more inline, improving performance a bit and also reducing certain areas of complexity.<br />
<br />
* The initial challenge-response work, and "what's your name" work, is all functional again. This is stuff that will be identical regardless of the network framework.<br />
** The host can now properly see the profile name of the client, and is poised to send the client back all the world information.<br />
<br />
== Version 2.105 Selection Hotfix ==<br />
(Released July 22nd, 2020)<br />
<br />
* The game still loads various xml files asynchronously, and loads icons and music and sound in that fashion, but it no longer tries to load the ships, shots, or wormholes in that way.<br />
** This was just too unreliable, because of some issues in the unity engine. It didn't affect all players, and not all the time -- but enough that it majorly affected the stability of the game for some folks, and that's too much.<br />
** This also removes the potential for the really long (15-30 second) lag time when you are first opening a new game or the lobby if things didn't load during the loading period.<br />
** Thanks to Ovalcircle for the most recent set of reports.<br />
<br />
* Previously, the game was using a standard List<> object for keeping track of selected ships, and that sometimes ran into inefficiencies and cross-threading issues.<br />
** In the prior build, we tried to fix some of those cross-threading issues, but wound up making things not actually deselect properly.<br />
** To fix all of the above, we've now switched to the much more flexible and robust ArcenLessLinkedList<> object, and adjust the code to handle this. This is both more efficient (not that efficiency is a major problem here), and does not fall victim to the various cross-threading woes that the old style could. <br />
** And, naturally, as part of that, this also resolves the frankly infuriating selection issues in the most recent build of the game. Sorry about that one!<br />
** Thanks to ctl0ve, CRCGamer, Chuito12, and Burner for reporting.<br />
<br />
* Previously, the tech menu only showed techs that would actually benefit a ship you have at present, or which you could capture.<br />
** This was very confusing to a lot of players, as they would not see the entire tech tree and thus think that something was missing or broken.<br />
** In some other cases, possibly due to changes in the recent past, you CAN build something (like a command station), but since you have not done so yet, it would not show up.<br />
** All of the techs now always show up, but the ones that are for ships that would not benefit you right now still show up as red and not researchable.<br />
** Additionally, the tech color shows up as white when it benefits ships you have, gray when it benefits ships that you don't have right now, and lighter gray when it benefits ships that you could capture.<br />
** Please note that since citadel upgrades don't benefit battlestations anymore, the citadel tech not showing from the start was working properly.<br />
** Thanks to Strategic Sage and CRCGamer for reporting the confusion.<br />
<br />
== Version 2.104 Negative Build Percentage Hotfix ==<br />
(Released July 21st, 2020)<br />
<br />
* Somehow or other, it became possible for some self-building ships to go very negative in their build percentage (instead of counting up to 100%, they would be way in the negative percentages of building process). <br />
** This seems to be a new bug in the last day or so, based likely around some changes that we made to improve the cross-thread reliability of the game. The problem is, upon manual code review of the areas that would be relevant, we just can't see anything that looks like a bug.<br />
** Ultimately what is happening is that the SelfBuildMetalRemaining is getting absolutely giant in value, far larger than the original metal cost of the ship that is constructing. This was probably an integer overflow from it going really negative first, and then wrapping back around, but it's hard to be sure.<br />
** We've put in some extra defensive code to make sure that if it goes negative at all, it marks itself as complete. We've also put in protections so that if you "owe more than it is worth" in general, that it will assume that there was an overflow and just go ahead and finish it now. These two changes should help to keep the problem from happening again, and fix the cases where it was already in progress.<br />
** While we were already at it, we put in a small general improvement that prevents you from being overcharged for the last tiny percentage of constructing a ship. If you had a bunch of engineers building, and each frame cycle they normally would do 1.1% of the construction of a ship, and charge you accordingly, then you might wind up in a case where you had only 0.2% remaining work to do, and yet got charged the full 1.1% rate. It is now careful to only charge you for what you would owe, so the 0.2% rate in this example.<br />
** Hopefully there are no other errors in any of the metal flows, with things like drones building, anything engineers would claim or repair, etc. The code looks clean, but then again the code for the self construction also looks clean. In the next couple of days, please let us know if you see anything else that seems amiss with how metal is being charged against you. So far we can't duplicate anything like that anymore, now.<br />
** Thanks to CRCGamer, deso, and Puppet Master for reporting.<br />
<br />
* Some code from yesterday dealing with cross-threading protections let us unfortunately sometimes wind up with runaway DoForSelected loops. This is now fixed, and it has several kinds of self-repair in place to prevent this from happening now.<br />
** Thanks to Gunner for reporting.<br />
<br />
=== Multiplayer Connection Work ===<br />
<br />
* Reworked the NetworkTrafficLog.txt multiplayer output to actually be a lot more informative.<br />
<br />
* GetNumberOfConnectsCurrentlyActive has been replaced with GetNumberOfConnections, which lets the network framework tell us a lot more about the general status of things happening.<br />
** Instead of just a generic number of players that exist, we can see how many are disconnected, how many if any are the host, how many are clients, etc, etc.<br />
<br />
* In the lobby, the host now sees how many connected clients there are, and if there are any disconnected ones, how many disconnected ones there are.<br />
** Previously it just showed one number that included the host and also disconnected clients all wrapped up into one.<br />
** It still isn't detecting disconnects properly in FORGE, but we'll get to that.<br />
<br />
* The host now only bothers sending heartbeat messages if it has at least one non-host client machine connected.<br />
<br />
* Removed some old "desync detected" code that was not fitting with the new plans for multiplayer.<br />
<br />
* Figured out some of why the client was not detecting itself as properly connected, and so was not getting messages from the host at all in the last few builds after the connection.<br />
<br />
* The way that gamecommands are queued and then given out to player simulations for both single-player and multiplayer is now more efficient.<br />
** We're using queues now instead of lists, and this gives us a lower chance of accidentally losing a command, as well (not that we know of that ever happening before).<br />
** This has several performance benefits even for single-player when there are a lot of commands going around.<br />
<br />
* Added a new FromServerToClient_AuthorizeThroughFrameNoCommands in addition to the FromServerToClient_SendNextBatchOfCommandsToExecute, to slightly save on space (1 byte per message) and make the logs clearer.<br />
<br />
* The network log no longer has a time delay built in where it logs only 100 items at a time. It just immediately dumps items to disk.<br />
** Realistically there is only substantial traffic every 100ms or so anyhow, and the delay in logging was incredibly confusing as a programmer working with it.<br />
<br />
* The network polling interval has been updated from 20 times per second to 100 times per second. In practice it will actually be variable, but the polling is extremely lightweight (the part that is on the main thread), and having absolutely minimal delays in getting and sending messages is what will keep things moving smoothly.<br />
<br />
* To make network logging even more efficient and clear, the old ArcenNetworkLogEntry is now ArcenNetworkSendLogEntry, and is now a struct instead of a class. This runs lightning fast and doesn't affect RAM usage.<br />
** We also now are then logging data that is gotten in (which we call TAKE) along with data that is sent (which we call SEND).<br />
** This way we can see the conversation between several machines all interleaved on a single machine's log, and thus figure out why they are saying what they do, and if messages are getting there, etc.<br />
** Surprisingly, the way we were logging things previously really didn't lend itself to that, so it was easy to go down rabbit holes of wrong information (thinking data did not get to a machine when in fact it did).<br />
<br />
* Furthering clarity on the networking side, we're now ignoring loopback messages-to-self on the host in our logs, which previously we were not doing.<br />
** This way we don't get drowned in a sea of stuff that "I'm telling myself in order to be the same as everyone else," and we can just see what is actually passing between machines.<br />
** The loopback stuff has been demonstrably working fine since more or less forever, unless we broke it today, since single-player relies on that.<br />
<br />
* Fun fact, after all these logging changes, we can now actually see how well parts of the networking are already doing.<br />
** As one client connects, the host is able keep talking to itself and/or others without breaking stride, letting the potential connection wait for the challenge and acceptance (not yet reimplemented) before it loops in the new client to the rest.<br />
*** This is a great example of how we can keep people from accidentally messing with the sessions of friends by trying to join during a game, etc. It's the sort of thing that only matters among friends, but it keeps it clean.<br />
** On top of that, we can see now that the reason for the host not noticing when a client disconnects is because it's ignoring the client that has not fully gone through the challenge-response process yet, and so the mystery of how it was "sending messages that failed but didn't flag the client as disconnected" is easily solved (answer: it wasn't sending messages to that particular client yet, because it is smart).<br />
** In general, by improving our logging quite a lot we can see what is actually happening and make sure all of this works properly. The vast majority of this is network-agnostic, which is doubly great. These particular logs will look substantially the same between FORGE and Steam and GOG.<br />
<br />
== Version 2.103 Hotfix ==<br />
(Released July 21st, 2020)<br />
<br />
* Fixed a bug from the prior version where the dark spire serialization fix was making any savegames with dark spire in them -- new or old -- not able to load.<br />
** Thanks to valinor000 and stanazolol69 for reporting.<br />
<br />
== Version 2.102 Digression For Quality ==<br />
(Released July 20th, 2020)<br />
<br />
* Using the "Increase Max Dyson Strength" hack will now also increase the Dyson's general mark level<br />
* Some minor buffs to the Dyson's income, mostly at higher levels<br />
** Thanks to a discussion started by zeusalmighty<br />
<br />
* When picking music (through the debug menu), the hovertext will now give you information on most of the tracks saying the original source<br />
<br />
* Improved the speed of some dictionary lookups by precalculating the ArcenAssetBundlePath CombinedPath.<br />
** This also required us to change their member variables into properties, and in return that meant that the general string fill methods needed to be adjusted to new FillBundle and FillPath methods for xml reading.<br />
** This doesn't affect as much code as it sounds like.<br />
** We also adjusted the various debug logging points to use the combinedpath, which is cleaner and easier to read, but not much faster since that almost never happens.<br />
<br />
* Fixed a bug that could happen with entity order serialization in rare circumstances if threads were fighting over putting items back in or taking them back out.<br />
** Since multiple threads do in fact often use orders, at once, this is one of the few collections prone to that.<br />
<br />
* Fixed a variety of exceptions that could happen based on cross-threading bad luck during the exit of the game either to the OS or to the main menu, all in the metal expenditures code.<br />
<br />
=== Ship Behavior Improvements ===<br />
<br />
* Fix two problems related to shields recovering from being bumped by Astro Trains <br />
** Human Home Forcefield Generators can now recover from being bumped.<br />
*** Thanks to Lord Of Nothing for the bug report<br />
** If a forcefield generator is bumped twice in short order, it will now do a better job of returning to its original location. This isn't perfect, but it's a pretty intense corner case<br />
*** Thanks to Puppet Master for the bug report<br />
<br />
* If there are only non-combatant enemies on a planet, ignore any requirement in the targeting code that particular targets need to be combatants. This prevents ships in FRD from discarding reasonable targets incorrectly. <br />
** Thanks to ParadoxSong for the bug report<br />
<br />
* Actually support Targeting tracing now; you need to set Targeting tracing and the Debug setting that lets you set the PrimaryKey for the unit you want to follow, and you'll get some actual logging. <br />
** Not for the faint of heart; intended only for developers who want to get their hands very dirty.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a bug where the 'delete campaign' button wasn't giving the campaign name<br />
** Thanks to OvalCircle for reporting<br />
<br />
* Fixed a rare and harmless (but annoying) cross threading exception that could pop up with argument out of range exceptions in RenderShip.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed a rare nullref exception that could happen in DoRemovalChecks() on shots, mainly a cross-threading thing.<br />
** Thanks to Lord Of Nothing for reporting.<br />
<br />
* Fixed two possible spots in DoForSelected() where cross-threading issues could sneak in and cause an exception in rare cases.<br />
** Thanks to Lord Of Nothing for reporting.<br />
<br />
* Fixed an issue when loading savegames that have a missing planet naming scheme. It will now default to the default naming scheme if it can't find the one that the world was started with.<br />
** Thanks to Oryutzen for a save that demonstrated this.<br />
<br />
* Fix a bug where the imperial spire wasn't Watching previously explored planets for you.<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fixed an error in TextMeshPro where it would still give us "Unable to use Ellipsis character since it wasn't found in the current Font Asset" invisible errors that would fill up the debug log even if warnings were disabled.<br />
** This was, in very long play, a memory leak as well as a performance drain, and it was generally invisible.<br />
** The ellipsis character was typically something it was trying to find specifically for purposes of showing cut-off text, and some fonts just don't have that in them. So no wonder we couldn't actually find the ellipsis character used in our own text files.<br />
** Thanks to Puppet Master for providing the log file demonstrating all this.<br />
<br />
* Fixed an issue where the stationsRemainingBeforeDepot on astro trains could go arbitrarily negative, thus causing an error on save. It now stops at 0, and thus seems not to cause the issue anymore. But on the change that an astro train does have a data exception during save anymore, it will now log what field is having the problem and we can fix it.<br />
** Thanks to Lord Of Nothing for the report and save.<br />
<br />
* The game has been updated so that the debug logging that is DoNotShow now ONLY goes to the ArcenDebugLog.txt, and not to the unity Player.log. The unity Player.log is kept in memory in a very unfortunate fashion, and in long gameplay this will be extra RAM used that should not be. Probably also extra slowness.<br />
** We added a new DoNotShowButSendToUnityLogEvenOutsideEditor Verbosity option that lets us have the old behavior of going to both of those logs, but we are not using that anywhere at the present time.<br />
** All of this is going to make it even more important that we have both kinds of logs from players if they have an outright game crash, now. But generally speaking, if it's an exception popup but not an outright crash, the ArcenDebugLog.txt has always been enough and will continue to be. It's only when the game crashes all the way to the desktop that we need the Player.log, typically, and now we'll just still need the ArcenDebugLog.txt in addition to that. However, any ShowAsInfo or ShowAsError logs to the main ArcenDebugLog will still appear in the Player.log, so potentially even that won't be true.<br />
** For a developer using the unity editor, it still logs everything to the actual unity log because that's for short testing cases and super useful to see output in realtime.<br />
** At any rate, we are trying to strike a balance between getting the logs we need, easily on the part of players, but without having any accidental extra usage of memory on very long play sessions.<br />
<br />
* All of the dark spire per-unit data is now saved in a format where we can tell which field is having trouble if one does.<br />
** The dark spire data "lastTimeAttemptedLocus" was trying to save as an int16 and would overflow any time a game saved that was more than about 32000 seconds in. Fixed.<br />
** Thanks to RockyBst for reporting.<br />
<br />
==== Memory Leak Fix From 2.099 ====<br />
<br />
* New setting on the debug menu: Show Pool Counts In Escape Menu<br />
** Used for searching for memory leaks, particularly between loads of a savegame. If pool counts keep rising after each load, then something isn't getting put back in the pool properly and is instead persisting lost in memory.<br />
<br />
* ArcenGameObjectResourcePools must all now have a unique name, and they register themselves in a central place that identifies how many of them there are.<br />
** These pools also now keep track of how many objects they have ever produced from themselves, so that if we are leaking objects from them we can tell. And we can tell if we are leaking pools themselves.<br />
** After seeing all of these in the new debug menu option above, we can clearly see that none of these are leaking and they are all behaving just wonderfully. Hmm. But we have a leak somewhere, so let's expand this...<br />
<br />
* Created a new CountedPoolBase abstract class that sits under the ArcenGameObjectResourcePool, and takes its counting capabilities and puts them there so that we can also use them for some other pool types.<br />
** This is also now used on a new "Shot Instance Renderer Pool Of Pools" so that we can tell if we are leaking there. And now ships and squads, too.<br />
** Also this is now used on LoosePool, which is the underlying basis for ship, shot, and squad visualizers (different from instanced renderers) now.<br />
** Despite all this, no memory leak was found in any of these pools. They are all working wonderfully efficiently.<br />
<br />
* ExternalizedPool now inherits from CountedPoolBase.<br />
** Same for TimeBasedPoolBase (and thus TimeBasedPool itself).<br />
** And same for BasicPool.<br />
** And holy cow, there's some sort of memory leak with the time-based pools, looks like, based on this. That makes sense, as we recently reworked some of their functionality to fix a bug with them. Apparently we introduced a new bug at the same time.<br />
<br />
* Added a new setting to the debug menu: Show Details Of Time-Based Pools In Escape Menu<br />
** Used for searching for memory leaks or other bad behavior on a certain very high-turnover series of pooled objects. If pool counts keep rising, or other numbers seem off, then we know we have a memory leak or a performance problem.<br />
** Thanks to Puppet Master, RockyBst, Lord Of Nothing, and NRSirLimbo for reports that led to us finding this.<br />
<br />
* Fixed a MAJOR bug from version 2.099 that was leading to a memory leak in general, and performance problems as well (the longer you played the slower it would get).<br />
** Our entire "time based pool" logic was not actually properly processing because we forgot a single line of code, go figure.<br />
<br />
==== Slow Load Or CTD Fix ====<br />
<br />
* Since we started using the asynchronous loading of asset bundle items using unity (the last few weeks), there have been some intermittent problems with certain random items not loading in properly. This is some sort of funky bug in Unity, we're pretty positive.<br />
** We solved that problem a week or so ago by checking the async request's asset property, and if it was not invalid, forcing it to finish loading even though it was stuck.<br />
** On most machines, this was causing a really annoying lag of 10-25 seconds while Unity did whatever it was doing to finish that load. That was really annoying, but only happened the first time you loaded a savegame or quickstart or custom lobby after starting the program, and not every run of the program, and not on all machines.<br />
** More recently, we discovered that the very act of checking the async request's asset property would cause an unrecoverable error deep in unity and an immediate crash to the desktop.<br />
** Killing two birds with one stone, we're no longer checking the async request asset property at all -- thus avoiding the crash -- and instead just do a normal synchronous load when we detect a failed load. This leaves the one async request in limbo kind of forever, but that shouldn't be a problem; if it ever decides to complete, it will see that it was already completed and just do nothing.<br />
** In the meantime, not only should this avoid the crash, but it should also avoid that awful lag spike that happened for those for whom it didn't crash.<br />
** The downside is that on our dev computers we haven't been able to replicate the error at all today, so we can't verify that this 100% works. It should work, and you should see in the arcen debugging log slightly differently that says "PrototypeObject failed async load and so loaded synchronously for [some stuff] (this is not a problem, but is odd)"<br />
*** If you're one of the people who were frequently seeing either the crash, or seeing the older "PrototypeObject fixed and loaded late for [some stuff] (this is not a problem, but is odd)" message, then we'd love to have a confirmation of you seeing the new message and all being well.<br />
** Thanks to Sol and RocketAssistedPuffin for reporting.<br />
<br />
== Version 2.101 Connection Status: Confirmed ==<br />
(Released July 17th, 2020)<br />
<br />
* Carriage returns and newlines are now supported by the "condensed" string format. This will prevent tutorial messages from turning those characters into question marks when they are dumped to the chat log. Note that this will only affect chat log messages logged in this version and on, not past versions.<br />
** Thanks to ParadoxSong for reporting.<br />
<br />
* The left and right click functions of the metal display have been switched to be more natural.<br />
** Thanks to Waladil and Galian Gadris for suggesting.<br />
<br />
* The "Spire Railgun Shop" mod that comes packaged with the game has been updated to use the icons from their new locations, and will no longer error.<br />
<br />
* We've reworked our "Window_PopupScrollingColumnButtonList" a bit to add some new handy features for us.<br />
** In the factions selection window, when you are adding new factions, it now still lets you see factions that you can't add because there is only one per galaxy, but now it shows them in red, doesn't allow you to select them, and explains why in the tooltip.<br />
** In the debug menu in the escape menu in the main game, the change music submenu now shows the current selection in red (with the note that you can't change to it because it is already playing), and it shows all of the options sorted alphabetically except for the current track, which it shows as the first item.<br />
*** Also fixed a bug where the music you selected to play would not actually be the track that played; it was choosing a random other track.<br />
<br />
=== Scourge Updates ===<br />
<br />
* The hovertext for the Scourge "Strength" in the game lobby now tells you what the strength does (more scourge ships/structures, and faster).<br />
<br />
* Add a "Sandbox: Extra Strong Mode" for the scourge<br />
** This is not balanced for regular play, but is intended as a sandbox thing.<br />
** Thanks to Avenger1649 for suggesting<br />
<br />
* Fix a bug where the scourge were periodically suiciding Defensive Fireteams into player positions.<br />
** Thanks to ParadoxSong for the save.<br />
<br />
* On intensities >= 5, the scourge can create cloaked "blockade running builders" if the player has tried to blockade the scourge into a small region of the galaxy<br />
** Thanks to ParadoxSong for the suggestion<br />
<br />
* On intensities >= 6, the scourge is intended to sneak a builder off to another part of the galaxy at the beginning of the game, to make it much harder for the player to blockade them in. This was not working on some map types, including the X type.<br />
** Thanks to ParadoxSong for the save that exposed this problem.<br />
<br />
* These changes should make the scourge much harder to deal with in general, and on the X map type in particular.<br />
<br />
=== Initial Multiplayer Connection ===<br />
<br />
* AllowOtherPlayersToConnect was a setting on the World object in the past, and thus something that was getting saved into savegames and that dictated how a lot of things worked for player connections.<br />
** We've removed this concept, and instead are making it based on the menu choices you make on the main menu.<br />
** We now have a DesiredMultiplayerStatus on ArcenNetworkAuthority, which lets us recall if you wanted to be the client, a host, or just left alone in single player.<br />
<br />
* The basic shells of SteamSocket and GOGSocket have been added to the game. The in no way function yet, but this will allow for them to be built out in the future.<br />
<br />
* The SpecialNetworkType has been moved into ArcenUniversal, and is now copied onto ArcenSocket along with the InternalName of the row that created the socket.<br />
** There is now a list of AllPossibleSockets on the ArcenNetworkAuthority to allow it to swap between sockets as needed, and particularly by type.<br />
<br />
* When you open the multiplayer menu, if you have that enabled, it will now set a default network framework for you based on the status of your game at that time.<br />
** If you are logged into Steamworks, it will set steam as the default network.<br />
** If that didn't work or wasn't true, and you are logged into GOG Galaxy, it will use that as the default network.<br />
** If none of those worked, then it will pick the first "other" network type, which in this case would be Forged.<br />
<br />
* All of the options in the multiplayer menu for hosting a savegame, quickstart, or custom game now properly do those things identically to as if it was the single-player menu, but put you into host mode first.<br />
** The single-player menu puts you into single-player mode, and makes sure that your ArcenSocket is set to NullSocket.<br />
<br />
* When you try to go into one of the client or host multiplayer areas from the multiplayer menu, it now properly activates your most recent chosen network framework, or switches to the first available one that actually can function right now on your system and gives you explanations for why it did that.<br />
** Essentially there is a fair bit of under the hood plumbing now for the frameworks to register themselves with the network authority class and explain about their availability.<br />
<br />
* If you are looking to connect to another machine, then the "connect as client" tooltip now gives you information about what to expect based on your currently-selected framework.<br />
** Are we connecting by IP? How much of a hassle will that be? Is it going to be by selecting a friend on Steam or GOG? Etc.<br />
<br />
* For IP-address-based networking frameworks, either starting a host mode or client mode event now pops up with a message explaining what information you need to give to the client players or get from the host.<br />
** This is not really the preferred networking method unless you're having a LAN party, and the game makes that clear, but it also goes out of its way to address the most likely areas of potential confusion for people who are using these frameworks.<br />
<br />
* Fixed a few bugs, and added a bit more debug logging clarity, so that the host can once again properly open a socket and wait for connection.<br />
** This was working up until a week or so ago, and was simply messed up a bit when we reworked things to support multiple networking frameworks. There were lots of lonely hosts never getting any client requests ever since the game has been in public beta.<br />
<br />
* When you quit out of the multiplayer lobby back to the main menu, it now immediately disconnects you as a host or client, to avoid confusion of lingering connections.<br />
<br />
* When you are in the lobby in multiplayer, the chat sidebar/log now appears again. At the top it says if you are hosting multiplayer or a multiplayer client.<br />
<br />
==== Choosing A Networking Framework ====<br />
<br />
* The main menu has been updated so that the "network" button at the top of the multiplayer menu now updates its text to show the current network.<br />
<br />
* The network button at the top of the multiplayer menu on the main menu is now fully functional. It shows available network frameworks, and gives you explanations for each one, as well as showing unavailable ones in red with an explanation for why they are not available right now. It lets you select from available ones, which then get set as your current socket when you try to host or join a multiplayer game.<br />
<br />
==== What Is My IP Address If I Need It? ====<br />
<br />
* In the networking section of the settings menu, it now has helpful informational displays of your local IP addresses and your public IP address.<br />
** To get your public IP address, we have to make a public call to the url http://checkip.dyndns.org, so this may flag your software firewall to ask permission when you go to the networking tab now.<br />
** Our goal is of course for you to not have to use your direct IP addresses at all in this game, but if you're playing on a LAN then that would be one great example of when you'd want to use this.<br />
** At any rate, each IP address is stored in a textbox that you can copy-paste from, which is very handy when sharing with friends.<br />
** There are also lengthy explanations about what the public IP address is for, and under what circumstances to use it, as well as the local IP addresses, plus special notes for any IPV6 addresses that it detects.<br />
** Getting this data is time-consuming for your computer, so you will notice micro-lags every few seconds while you are on the networking tab, now. This is normal and should not impair your use of the functionality.<br />
<br />
==== Milestone: Successfully Connecting A Client To Host ====<br />
<br />
* The old interface for network connections by IP address is restored and works again. We'll have a different one for connecting via friends list on Steam and GOG, later, but this is the one that gets used for Forge and any other IP-based network frameworks.<br />
<br />
* Connections are now able to be established from one computer to another, for the first time since 2018!<br />
** We added the ability to see how many clients there are connected to a host in the lobby (including the host), so you can see the connection tick up.<br />
** Next up is them actually exchanging enough information to get the client into the lobby and have them see shared world info and be able to chat and all that. But this is milestone one!<br />
<br />
== Version 2.099 Last Rabbit Holes ==<br />
(Released July 15th, 2020)<br />
<br />
* There is now a galaxy setting to grant players Watch vision for 1, 2 or 3 hops from all command stations.<br />
** Thanks to uhamster9 for inspiring this addition.<br />
<br />
=== Fixes And Tweaks ===<br />
<br />
* Improved the way that time-based pools are incremented in time, so that we're never having accidental cases where we miss one.<br />
** Also made it so that they actually work as intended when the world is being cleared (running 16 seconds' worth of time at once). This then keeps the pools smaller if you repeatedly load savegames.<br />
<br />
* On the escape menu, under where it shows you the various numbers of objects in memory, it now shows you the number of galaxy planets and planet links activated and in existence.<br />
** This lets us tell when these have a memory leak, if there ever is one with them.<br />
<br />
* Additionally, galaxy map links are now pooled for the first time ever, as the discarding of them was previously a definite memory leak. Normally this just happened between saves and loads, but it was also possible to happen when nomad planets moved.<br />
<br />
* In addition to the existing time based pools, we now have a new ExternalizedPool.<br />
** This is now used for the galaxy map links, and actually we have stopped the galaxy map planets themselves from using the super-old IArcenGameObjectResourcePoolable and they also now use this.<br />
<br />
* The way that planets for the galaxy map are initialized, and the way that their positions are set, is completely overhauled.<br />
** This is more efficient and properly uses pooling (which never was working properly before, it turns out).<br />
** It also makes the position of planets automatically react to them having moved in the game sim, without having to do anything special.<br />
<br />
* The arcencolors asset bundle has been removed, with its contents simply rolled into arcenui. Ultimately this is a bit faster to load, and saves a bit of disk space and RAM also.<br />
** Also removed the aiw2squads bundle, and the examples bundle.<br />
*** The examples bundle simply has its example content still there, but not in a bundle (it's to help aspiring models modders).<br />
*** The squads bundle is old data that we've not used in forever, and so has just been cleared out. It wasn't huge, but wasn't worth being there.<br />
<br />
* Starting to load a savegame (including for a quickstart or the last settings for a lobby) now writes to the log when you start the process, and at the end of the process writes how long it took.<br />
<br />
* Added a new debug setting: "Write Detailed Savegame Timings"<br />
** When loading a savegame, including the 'last settings' for the lobby or the basis for a quick start, keep track of detailed timing data and write that into the normal debug log so that it's clear what is taking longer and shorter amounts of time.<br />
<br />
* It turns out that chasing "why savegames now take 16 seconds to load sometimes" was a snipe hunt. The serialization sizes logging, when enabled, actually was causing that amount of slowness. With that off, it loads in about 2 seconds.<br />
** The extra instrumentation that we added for the savegame timings is still nice, but ultimately was not a useful bit of time spent at the current moment.<br />
<br />
* Fixed an issue that could happen in the lobby in particular where it could not properly save your prior settings because the fleet ID or speed group ID was lass than zero.<br />
** This pretty much could only happen if you already had another error first.<br />
<br />
* Fixed an exception in SeedNormalEntities that could happen if you rapidly tried to regenerate maps in the lobby in just the wrong way.<br />
<br />
=== Under The Hood Improvements For Icon Modding And RAM Usage ===<br />
<br />
* The last of the icons from the ExternalIcons folder have been moved into the unity project that generates the asset bundles, simply to dispel any potential confusion about the fact that they can be edited directly and that have some change on the game without recompiling asset bundles. This was a frequent modder confusion.<br />
** That said, the ones that were in the Official_1 folder are now in a CentralIconBits, and can now be used in the UI for the first time if we ever want to. That means things like health bars and whatnot could in theory be used in the ui if someone wanted to, whereas before they could only be used on gamespace-level icons.<br />
<br />
* Cleaned out a variety of unused icons from the arcenui asset bundle, and in general tidied up some of our organization of working files versus final files.<br />
** Also standardized the naming of certain things.<br />
<br />
* Broke the "official icon dictionary" out into six dictionaries:<br />
** One is for the "central bits" like health bars and so on, and would be the same for all ships.<br />
** Two are for the overlays, like for saying what kind of starship or guard post something is. There can be more than one of these, and the fact that these are split out like this demonstrate the modding capabilities and how things can combine.<br />
** Three are for ship icons and their borders, and there can be more of these modded in as well. As with the overlays, not only does this demonstrate how such mods would work, but it also has the side benefit of slightly less VRAM usage in a few cases.<br />
<br />
* The way that GUI icons are discovered from the xml based on their gamespace-icon counterparts is completely revised, and is now based on extra information in the ExternalIconDictionary entries.<br />
** This is a lot more flexible, and allows us to load icons from multiple asset bundles and/or multiple files within the same bundle.<br />
<br />
* The naming for finding icons is now much more complicated, in the sense that they don't all come from a single dictionary called "Official."<br />
** So there were over 1100 places in the base game and expansions where we've had to modify to point to the new dictionaries. Any mods would also need to be updated to point to the new places, unless they want to start using their own icons (once we put together a tutorial for that).<br />
<br />
* The external sprite dictionaries have been updated to be able to properly load in in multiple threads.<br />
<br />
* The game is now able to load the xml files for external icons from any mod or expansion, in:<br />
** Expansions/[ExpansionName]/GameData/ExternalIcons/[thefile].xml<br />
** XMLMods/[ModName]/ExternalIcons/[thefile].xml<br />
** XMLMods_NonDistributed/[ModName]/ExternalIcons/[thefile].xml<br />
** It's worth noting that these are xml files that are generated by Texture Packer, not xml that we create.<br />
** These files are referred to in the "ExternalIconDictionaries" xml as something along the lines of xml_path="Official_CentralIconBits.xml"<br />
*** It will then search the main game's folder (/GameData/ExternalIcons/[thefile].xml), then all the expansion folders, then any activated mod folders for a file with that name that was specified.<br />
** This allows for mods to be self-contained when it comes to their icons, and it allows expansions to have their own icons that are not packaged with the main game (not that we have imminent plans to do that).<br />
<br />
* On the icons used in the game, we previously were not using any compression, which made them absolutely massive in size (80mb for the main dictionary).<br />
** This was done in order to preserve quality, but we're also using GIANT icons in order to allow for really super-high-res displays of the future, as well as square ones to allow for ideal mipmaps, etc. So the lack of compression was hugely overkill.<br />
** We're now using compressed textures, which turns what was 80mb into more like 8mb. This has a very direct impact on performance and VRAM usage, so particularly on low-spec machines they will likely run far better.<br />
<br />
* The game now automatically constructs custom "gimbal materials" for the in-gamespace icons, in as many combinations as are needed for the things that it has drawn for you so far.<br />
** The total number of materials always in the past was "one," but it was using a single large dictionary and a lot more VRAM -- and it had a finite amount of space for things. There was a solid chance we were going to run out of space in that one dictionary as part of implementing DLC2. But either way, mods were not possible. The new number right now is 8, looks like.<br />
** Now it may make a handful of materials, depending on how many mods you have installed that have custom icons, and several for the core game and expansions itself. But these are vastly smaller, and while this does increase the number of "draw calls," each material is still mostly instanced together (there are a few mesh differences depending on if there are health bars shown or whatever), but the overall load on the GPU pipeline is lower.<br />
** All of this is automatically handled by the game in as efficient a pattern as possible, and if you're curious how many combination materials it has created, you can see that in the escape menu at the bottom of the list of memory pooling info.<br />
<br />
* A new debug setting, "Log Gimbal Icon Material Creation", has been added:<br />
** When this is on, any 'gimbal icon' material creation events will be logged as to what was created and how long it took to do so.<br />
** Turns out that this uses an immeasurably small amount of time for each material (less than 1ms each), so that's awesome.<br />
<br />
=== Under The Hood Improvements For Mods With Code ===<br />
<br />
* The game is now able to load dlls from mods or expansions, rather than just from the central game folder.<br />
** This works just like the external icon files, and basically looks for the dll in the central game folder first (/GameData/ModdableLogicDLLs/[thefile].dll), and then looks at expansions and then installed mods if it can't find them.<br />
** The paths are:<br />
*** Expansions/[ExpansionName]/GameData/ModdableLogicDLLs/[thefile].dll<br />
** XMLMods/[ModName]/ModdableLogicDLLs/[thefile].dll<br />
** XMLMods_NonDistributed/[ModName]/ModdableLogicDLLs/[thefile].dll<br />
** We really don't have a need to do this with expansions, but the flexibility is nice.<br />
** With mods that are more than just xml, however, this finally lets a modder distribute just a single folder that has everything in it, and not have to worry about putting some things in central game folders.<br />
** This is only partially tested, but should work.<br />
<br />
* It's worth pointing out that expansions and mods already did (and still do) have the capability to load asset bundles (icons, music, sound effects, models, textures, shaders, etc) from their folders.<br />
** The structure for those is /GlobalBundles/ in the main folder for anything not platform-specific, /AssetBundles_Linux/, /AssetBundles_OSX/, or /AssetBundles_Win/ for the things that are.<br />
** Inside the folders for expansions it is: Expansions/[ExpansionName]/[OneOfTheAboveFolders]/<br />
** Inside the folders for mods it is: XMLMods/[ModName]/[OneOfTheAboveFolders]/ or XMLMods_NonDistributed/[ModName]/[OneOfTheAboveFolders]/<br />
** None of this is new, but it's worth mentioning for now.<br />
** This is only partially tested, but should work.<br />
<br />
=== Larger Gamespace Icons And Fixed Galaxy Map Line Offsets ===<br />
<br />
* We also now have a non-billboarding version of our shader for purposes of our icons on the galaxy map.<br />
** Our core shader does on-GPU (read: hyper efficient) billboarding to always fully face the camera. This is very useful in the main view where you are moving around the camera a lot but always want the icons to face you.<br />
** The downside, however, is that with a largely-straight-overhead camera like the galaxy map uses, this billboarding would cause there to be a perspective shift where the icons for planets would get offset from the lines leading between planets no matter what we did. It also caused them to move relative to the text that was next to them.<br />
*** This offsetting of the lines to the planets was one of the largest "visual papercut" issues that we've had for a really long time, and it is finally fixed!<br />
<br />
* The ship icon scale has been adjusted from a default of 1.5 to 2.2, and will affect all prior settings files.<br />
** It's description has also been updated for the personal settings tooltip: For the icons in the main display area (not the sidebar), how large should they draw? Default is 2.2. If you go too large, it can be hard to see things because they overlap too much. If you go too small, they can get extremely blurry because of flipping to a lower mipmap. The larger your screen DPI, the smaller you can go without losing clarity.<br />
<br />
== Prior Release Notes ==<br />
<br />
[[AI War 2: Building Multiplayer]]</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:The_Paradigm_Shift&diff=40799AI War 2:The Paradigm Shift2020-10-13T22:57:51Z<p>Democracy? Democracy!: /* Turret Rebalance */</p>
<hr />
<div>== Known Issues ==<br />
<br />
* Any bugs or requests should go to our [https://bugtracker.arcengames.com/ mantis bugtracker]<br />
** 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.<br />
** 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:<br />
*** Windows: C:\Users\username\AppData\LocalLow\Arcen Games, LLC\AIWar2\Player.log<br />
*** macOS: ~/Library/Logs/Arcen Games, LLC/AIWar2/Player.log<br />
*** Linux: ~/.config/unity3d/Arcen Games, LLC/AIWar2/Player.log<br />
<br />
* '''Multiplayer is in public alpha, as noted below.''' There is a [[:Category:AI War 2: All About Multiplayer|detailed multiplayer guide]] that we are working on building up.<br />
<br />
* Feel free to [https://discord.com/channels/240637654717300736/242012213580136448 join discussions on discord]!<br />
<br />
== What Does Multiplayer Alpha Mean? ==<br />
<br />
[[:Category:AI War 2: All About Multiplayer#Initial Caveats And Related Resources|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.<br />
<br />
== What's this phase all about? ==<br />
<br />
We've been preparing for this for months, tightening up the codebase and getting everything ready as much as possible. Now it's time to start having machines actually talk to one another, and then refine from there. At this point, LiteNetLib, Steam, and GOG Galaxy are all fully working as communication frameworks, and the game is in an alpha state (as of September 9th) where not all of the functionality is there, but the game can be played together. <br />
<br />
It's important to remember what an alpha is! There are glitches and inefficiencies, and we'd like to know more about those. There are also glaringly missing features. Beta means feature-complete but not bug-free, and we're not there yet. Please don't assume that we will implement some feature you want, like the ability to share X between players. If you're testing the alpha and want something, please do drop us a message and ask for it, just in case.<br />
<br />
We expect to be into beta of multiplayer in late September. Hopefully the alpha and beta periods are both short due to all the work of the last phase, but we shall see how it shakes out.<br />
<br />
Once we get into a stable beta period for multiplayer, then we'll let the clock run a bit and Chris will work on adding interplanetary weapons to the base game as a free update (that's the last of the kickstarter stretch goals). This phase should wrap up all our kickstarter promises (including a laundry list of other smaller items).<br />
<br />
Badger has already done the bulk of his work for the second expansion, Zenith Onslaught. Chris has done none of his work for that, as yet. Once multiplayer is in the "let it exist in beta and have people bang on it" phase, then Chris can circle in and get his work done for DLC2 along with those base game bits for interplanetary weapons, etc. The full version of multiplayer should launch alongside of DLC2, but we're not sure exactly when. October?<br />
<br />
Either way, multiplayer will be in a solid state that is "beta but just because we want more time with more people testing it" for a month or so while the DLC2 work from Chris's end happens. None of the actual multiplayer stuff is delayed in any fashion for DLC2, it's been the other way around.<br />
<br />
== Version 2.613 ==<br />
(Not yet released -- we're still working on it!)<br />
<br />
* In the settings menu, in the game tab, hovering over the enable/disable button for mods and expansions now gives a very brief tooltip with just the name of the item in question, and brief instructions on what will happen. It then has a note that for the full explanation, you should hover over the name of the thing, to the left. <br />
** The descriptions of many mods were so long that it was impossible to see what you were doing as you tried to click things, previously! This works around that while still allowing for the long descriptions.<br />
<br />
* When you are viewing the list of major AI structures on a planet, it no longer just gives you this jumbled unsorted list of every item.<br />
** Now it sorts them by name, and for any that have multiples, it shows you x2 or x3 or whatever rather than just writing them multiple times. Yay legibility!<br />
<br />
* Hovering a planet in the Game Lobby now tells you that you can click on it to make it your new homeworld<br />
** Suggested by the Puffin Emeritus, thanks in part to discussion by Asteroid, Arnold Schwarzenegger, and others.<br />
<br />
=== Turret Rebalance ===<br />
<br />
* Upped base Turret type count of RaidOffensiveTurrets and GeneralTurrets Battlestation/Citadel fleet design templates.<br />
<br />
* Seeker Turret base damage reduced to around a third. Versus things such as normal Guardians and Starships, it does less than a Nucleophilic Turret would, but would still start to outscale it on larger targets.<br />
** Said larger targets is around mass 8.<br />
<br />
* Ruffian Turret range increased 25%, damage increased 50%.<br />
<br />
* Scrap Turret reload time 2s -> 1s, damage doubled, shots to self destruct 15 -> 20.<br />
** Results in it doing 4x the DPS it was before, allowing it to get more shots out overall if under enemy fire. Double damage and 33% more "shots until self destruct" result in an overall 2.6x damage increase before being destroyed, assuming no enemy fire.<br />
<br />
* Blaster Turret damage increased 30%.<br />
<br />
* Counter Sniper damage reduced 20%.<br />
<br />
* MLRS Turret damage increased 20%.<br />
<br />
* Tripled Harmonic Turret base damage, doubled Harmonic effect damage and cap.<br />
<br />
* Increased Fortified Tesla range and AoE radius by 50%.<br />
<br />
Please note, turrets are still being rebalanced. We are updating them one chunk at a time so everything doesn't radically change overnight.<br />
<br />
=== AI Reserves Rework ===<br />
<br />
* When a player starts deepstriking, there's a notification that the AI reserves will start spawning "soon" (a minute or two). <br />
<br />
* Once the reserves are ready to start spawning, they will begin creating wormholes on planets near the place you are attacking. Each wormhole will periodically release AI Reserves ships that will fly to any deepstriking planets you have and begin attacking. Each wormhole has a separate budget, and will spawn more ships the longer it exists. The strength of the ships spawned is based on AI Wave size, so AIP/AI difficulty are factored in.<br />
<br />
* When you stop deepstriking, the AI reserves ships will fly back to their wormholes and vanish. Once all the ships are gone, the wormholes will persist for a short while (3 minutes at release time), then vanish.<br />
<br />
* If you are deepstriking at multiple planets, a new Wormhole will be randomly placed near one of the planets you are deepstriking. As a result, deepstriking multiple places at once can split the reserves response.<br />
<br />
* The ships spawned are based on the sort of ships the AI uses at a given planet (so hopefully you'll get a good amount of variety). There's also a unique new ship for the Reserves designed by zeusalmighty.<br />
<br />
* Goals: <br />
** Make the AI reserves have some new, unique behaviour, to make them more interesting/exciting.<br />
** Make it so that 'Oops, I triggered the Reserves' feels less like a coin flip where sometimes you get crushed out of nowhere<br />
<br />
* Definitely needs some balance feedback<br />
<br />
* Note: This is technically a DLC2 backport, since it reuses tech from DLC2<br />
<br />
* New field in the AI Behaviors section of the galaxy options: AI Reserves Grace Period<br />
** If you lose a planet deep in AI territory, how many seconds will you have to recapture the planet before the AI Reserves start anti-deepstriking attacks against you?<br />
** The default is 60 seconds (1 minute), to give you a moment to collect yourself, but still probably have the deepstriking attacks kick in at least a bit if the AI snipes you off a forward planet base.<br />
** This is vastly reduced from the 20 minute grace period (1200 seconds) that the game gave you as of last version, but the AI Reserves attacks are more gradual now in general. And you can still increase this to 20 minutes if you want (but that will not be considered a "pure" 10/10/10 win if you're aiming for that).<br />
** Thanks to Badger and Smidlee for suggesting.<br />
<br />
=== Strength Calculation Revisions V2 ===<br />
<br />
* The strength calculation constants have been moved into the ExternalConstants xml file so that those can be modded or so that players can tweak them.<br />
** We have balance_strengthcalculation_hull_divisor, balance_strengthcalculation_shields_divisor, and balance_strengthcalculation_final_divisor from the prior build.<br />
** We also have a new balance_strengthcalculation_dps_multiplier, which allows us to weight DPS higher.<br />
** Thanks to Puffin for suggesting.<br />
<br />
* A new "GameEntityStrengthList.txt" file is written, which just exports the ship names and their strengths.<br />
** This allows us to do quick diffs with different values for the strength calculations and see how those affect overall strength amounts.<br />
<br />
* The new DPS multiplier is now set to 2, which winds up having the strength values in this version be more like what they were in 2.609 and prior in overall scale, but with things more appropriately weighted towards DPS.<br />
** There are a lot of ships that have almost identical strength to before, some golems and such that now report nearly double the strength they did before, and other things which have far less strength.<br />
** The spread is different, but remember that these are for informational purposes (and AI decision-making on where to put stuff and if it can win a fight) only. These don't actually make the units stronger or weaker, it's just how it's estimating their stats translate into a single "strength" number.<br />
** Thanks to Puffin for suggesting that DPS was still under-represented.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an issue from the tooltips that show how long it has been since the humans last owned a planet, where it was showing information based on when the AI last reinforced the planet instead.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* The "major AI structure" field now only counts for ships that belong to the AI Sentinels.<br />
** So this means that ships from Civilian Industries, or Scourge, or whatever else, won't ever have this flag on them in a way that matters (the flag will still be set to true, but it won't count for the rollups).<br />
** Essentially, if you are playing with allied scourge or just civilian industries in general, they could block ownership of your own planets by accident and cause deepstrike warnings really fast.<br />
** Thanks to CRCGamer for explaining what wasa happening, and Endovior for the report.<br />
<br />
* Fixed an issue where savegames were incorrectly deserializing how long it had been since the humans or the AI had last controlled a planet, leading to nonsensical results all over the place.<br />
** This data all gets wiped out for older savegames now, since it was gibberish anyhow.<br />
<br />
=== Updates To Included Mod: Civilian Industries By StarKelp ===<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where various Militia Buildings could be caught by functions checking for Guardposts or AI structures.<br />
*** Chris fixed this on the game end as well, but this was some pretty poorly done entity code all things considered, so its better now.<br />
*** This may additionally fix a weird bug that Waladil was experiencing where Astro Trains would attempt to path to Civilian structures.<br />
** Fixed a bug where Militia would always try to expand with your allies even when disabled.<br />
*** Thanks to many individuals for reporting.<br />
** Fixed a bug where some cleanup code in the mod could get too aggressive, causing out of index exceptions.<br />
*** Thanks to Endovior on the Forums for reporting.<br />
<br />
== Version 2.612 Divide By Zero Hotfix ==<br />
(Released October 12th, 2020)<br />
<br />
* Fixed a bug in the most recent version where if there were no planets valid to reinforce in a category, it could have a divide by zero exception.<br />
** Thanks to Metrekec and Badger for reporting.<br />
<br />
== Version 2.611 AI Defensive Huddle ==<br />
(Released October 12th, 2020)<br />
<br />
* There are now Journal entries for Hunter/Warden/Praetorian, which pop up when you see that faction.<br />
<br />
* There's now an Advisor journal entry suggesting that players should use some of the Automations settings, if they haven't used those and they are 5 minutes into the game.<br />
<br />
* The 'Auto-Build Assault Frigates option is now an int-slider, so you can ask all your planets to build up to a specific number of assault frigates.<br />
** Suggested by ParadoxSong<br />
<br />
* Slight buff to CPA movement speeds. CPA ships from further away now move a bit faster, to try to increase the peak CPA incoming ship rate.<br />
** From a discussion with Democracy<br />
<br />
* Hacking a Tech Vault now shows the tech line to be granted in the tooltip for the Hack<br />
** Thanks to Asteroid for suggesting.<br />
<br />
* Spire infested macrophages now turn to Liches when nanocausted<br />
** Reported by GreatYng.<br />
<br />
* Player allied scourge can create an extra builder, thus allowing them to do more upgrading<br />
** Thanks to GreatYng.<br />
<br />
* Human Resistance Fighters will no longer attack planets with AI Eyes on them<br />
** Their appearance had a bad tendency to alert the eyes <br />
** Suggested by Strategic Sage.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a problem with the GCA hack text<br />
** Thanks to ParadoxSong for reporting<br />
<br />
* Added a new "savegames_from_this_version_are_broken_message" field, which lets us specify when a given game version is broken, and what is broken about it.<br />
** This should be something that is hopefully very rarely used, but it does eliminate confusion about something like the fact that games saved in 2.600 are all broken, for instance.<br />
** Thanks to Badger for suggesting.<br />
<br />
* Change the 'Hack DS for ships' hacking hovertext<br />
** Reported by GreatYng.<br />
<br />
* AI Eyes no longer give you an alert if you aren't Watching the planet. Previously you would get alerts if you'd even explored the planet<br />
** Thanks to Asteroid for the bug report.<br />
<br />
* In the StrengthCounting code, if there are any planetfactions missing for factions that exist in the game, it now complains about this in more detail so we know what is happening.<br />
** Thanks to Badger for reporting.<br />
<br />
* Fixed a bug where the game would not correct for missing planetfactions on destroyed planets. This could interact with factions that were added belatedly after planets were already destroyed.<br />
** Thanks to zeus for the report and save.<br />
<br />
=== Dyson Anti-Hacking buffs ===<br />
<br />
* Each time you hack a dyson sphere, the antagonized sphere gets more powerful<br />
* The Antagonized Dyson Sphere now attritions all enemies on its planets<br />
* The Antagonized Dyson Sphere now takes the safest path to the player homeworld, not the most direct, once its been hacked a few times<br />
* Decrease the number of Sentinels you can have from hacking the Dyson; they were felt to be too powerful<br />
** Prompted by GreatYng<br />
<br />
=== Strength Calculation Revisions V1 ===<br />
<br />
* Changes to how strength is calculated:<br />
** Previously, hull health was added in based on a formula that included dividing it by 12. That is now divided by 28.<br />
** Previously, shield health was added in based on a formula that included dividing it by 20. That is now divided by 30.<br />
** The DPS portion of the strength calculation has been left alone for now.<br />
** The final step of the strength calculation was dividing it by 20, but now we're dividing by 16.<br />
** Hopefully this leads to more accurate strength values that better reflect the fact that firepower is king in determining battle results.<br />
** We may need to keep adjusting this, but didn't want to go too far in one direction right away.<br />
** Having increasingly-accurate strength values will lead to better AI decisions, as well as making the odds more clear to human players as well.<br />
** Thanks to Puffin for the suggestions that led to this change.<br />
<br />
=== Overhaul of AI Sentinels Reinforcements And Alert Levels ===<br />
<br />
* The concept of "alerted planets" in this game has always been a bit on the loose side, particularly compared to the first AI War.<br />
** It was hard to tell what planets were alerted, for one thing, and for another, planets were not allowed to reinforce planets that were not on alert. It was a very binary system.<br />
** This in some ways really made it so that deepstrikes were more powerful than they should have been (thanks to those planets never having been reinforced), and even made surprise homeworld assaults too effective.<br />
** In general it could cause issues with too-few reinforcemetns on the map as a whole, which would then lead to tsunami CPAs actually draining the galaxy of AI sentinels mobile ships.<br />
<br />
* We have now added a new AISentinelAlertLevel table, which can be customized or modded, but has alert levels defined in four tiers:<br />
** 1: Lowest Readiness<br />
*** Reinforcement cap: 30%<br />
*** Reinforcement priority: 50%<br />
*** Sentinel command at this planet is unaware of any credible threat to itself within the galaxy.<br />
*** This is most planets until the AI has lost a few planets.<br />
** 2: Distant Readiness<br />
*** Reinforcement cap: 60%<br />
*** Reinforcement priority: 100%<br />
*** Sentinel command at this planet is aware of threats elsewhere in the galaxy, but does not judge that any special precautions need to be taken at this location.<br />
*** This is most planets after the AI has lost a few planets.<br />
** 3: General Readiness<br />
*** Reinforcement cap: 80%<br />
*** Reinforcement priority: 250%<br />
*** Sentinel command at this planet is not aware of any direct threats to itself, but feels that it has a general duty to remain prepared for the unexpected.<br />
*** This is triggered by certain AI structures on planets, such as troop accelerators, raid engines, or an AI overlord.<br />
** 4: High Readiness<br />
*** Reinforcement cap: 100%<br />
*** Reinforcement priority: 600%<br />
*** Sentinel command at this planet is aware of direct and credible threats, and requests aid to defend itself or repair from past assaults.<br />
*** This is triggered in much the same way that the "alerted" status previously was, but now you can actually see it. This is based on having been attacked recently, or being on the front lines against an enemy planet (such as humans, not only humans).<br />
<br />
* A bunch of extra instrumentation has been put into planet serialization logs, to help with any issues we may run into with that.<br />
<br />
* Planets now not only track their current alert level, but also keep track of the last time a reinforcement happened, how strong the last reinforcement was, how many reinforcement events have happened so far this game, and the total strength of all the reinforcements so far this game.<br />
** Note that since this data is only being tracked starting now, it won't have any useful information about savegames that were started prior to this version. It will just tell you how much has happened since you resumed playing in this new version.<br />
<br />
* A new xml tag, triggers_general_readiness_on_ai_sentinels, has been added to unit definitions in general.<br />
** If any unit with this set to true is on an AI planet, then the sentinels on that planet will have a minimum alert level of 3. Even if neutral or hostile to the AI sentinels.<br />
** This is currently applied to: troop accelerator, raid engine, magnifier, superterminal, coprocessor, major data center, risk analyzer, exo wormholes, overlords phase 1 and 2.<br />
<br />
* There is a new CalculateAISentinelAlertStatus() that happens every sim frame and which determines what the SentinelsAlertLevel is on each planet.<br />
** It's valid for SentinelsAlertLevel to be null, which basically is it saying "not relevant."<br />
** "The Distant Readiness" status is calculated instead of "Lowest Readiness" if the AI has lost more than 3 planets.<br />
*** This could trigger immediately, or very nearly so, in galaxies where there are a bunch of other factions, even if they are allied to the AI. The AI does not like losing planets, and doesn't care who took them.<br />
*** A faction having influence over a planet won't trigger this, so generally the other faction would have to be hostile to the AI to cause this to tick up.<br />
<br />
* Previously, the logic for AI Sentinels reinforcements to planets was kind of stupidly simple.<br />
** Essentially if the planet was on alert, which was an invisible status, then it would get an even portion of the reinforcement budget that the AI is working with at the moment. This was... extremely simplistic. In the impossible event that no planets were alerted, it would reinforce the king planet. But that was impossible, so never happened.<br />
** This is being entirely reworked as follows:<br />
*** First, roughly a third of the budget is allocated to alert-level 4 planets.<br />
**** This is divided evenly between all of the tier 4 planets, so the more of them there are, the less of an effect this has. Remember, these used to be the ONLY planets getting any reinforcements.<br />
*** Then, roughly 10% of the budget is allocated to alert-level 3 planets.<br />
**** This is divided evenly between all of the tier 3 planets, so the more of them there are, the less dangerous this is.<br />
*** Lastly, the remainder is applied to planets at random, based on the probability of them needing reinforcement in general as defined by their alert level.<br />
**** So in this step, tier 3 and 4 planets might get more budget from this portion, and in fact are very likely to.<br />
**** This remaining budget is broken up into 10 allotments, which are given out based on whatever pops up.<br />
** Previously, if there was any remaining reinforcement budget after trying to give it to all the planets in question, it would donate this to the CPA budget. This no longer happens. It just saves it for a future reinforcement cycle, now.<br />
** Also a change is that, previously, a reinforcement booster (like troop accelerators) would cause extra budget to be used at the planet in question (thus taking from other planets, in effect). That is no longer the case.<br />
*** Now that extra "reinforcement boost" is just free extra budget, which is how it worked in the original AI War. That's way more in keeping with the theme of what those units are actually supposed to be doing, anyway.<br />
** Additionally, there were a lot of cases where a planet that was "full" could wind up wasting quite a bit of budget that then would just get thrown towards a CPA later on. Instead, that budget is now thrown over to another planet in whatever the current budget category is.<br />
*** So for example, an alert level 4 planet that is already full will wind up donating its unused budget to be spread evenly among the other remaining planets that are alert level 4. And then that cascades on down the priority chain.<br />
<br />
* IAIDefensePlacerImplementation's Reinforce method now requires an int AddedStrength reference parameter, which should be incremented inside that method to let the caller know how much strength actually went up in this case.<br />
** This is a big deal for our proper monitoring of how much strength actually resulted from each reinforcement event, as opposed to how much AI budget was spent on the event (those are two different things, and the latter wouldn't mean anything to the average player).<br />
<br />
* Same with PlaceGuardPosts() on IAIGuardPostAndCommandPlacerImplementation.<br />
** This is used only for reconquest events, but still should be counted in the information that the player can see on reinforcements that happened at a planet.<br />
<br />
* Added a new "Log Reinforcement Event Details" option in the debug section of the personal settings menu.<br />
** Writes the details of each AI Sentinels reinforcement event into your main log. If you suspect something is off with how budgets are being spent or allocated, then this is a way to check up on that.<br />
** This is of particular relevance right now, with the logic all being so new!<br />
** So far, everything that is popping out in the log looks very sensible, so this is good -- that means we can actually release this.<br />
<br />
* In the planet tooltip, the text "AI Reinforcement Points" now says "AI Reinforcement Spots" to be less ambiguous.<br />
** In that same tooltip, it now gives some general information about the time of the last reinforcement of the AI sentinels at that planet, and what its strength was.<br />
** It also shows you the alert level of every AI planet. (Of course, planets you have not explored yet show none of this.)<br />
** If you hold any of the hotkeys that give you medium-or-more details about the planet, then it will show you the description of the alert level, and more details about all the reinforcements that ever happened at that planet.<br />
<br />
* It is possible that, given how reinforcements are being spread out now, that they may need to get a buff to their budget.<br />
** It's worth noting that, given the nerfs we made to the AI budgets in the recent past where the AI can't gift to the reinforcement budget if another budget fills up, this may need a boost anyhow.<br />
** That said, the budgets are being distributed so much more effectively now, and never just shunted over to the CPA budget, so it may actually be okay. We need some feedback on this.<br />
*** This change, of course, may mean that CPAs are substantially less frequent now since the reinforcement budget isn't being diverted to that anymore. It's hard to know just how much that was happening before.<br />
** We don't want to give the AI an unintentional mega buff to their reinforcements, so for now we're leaving the actual budget amounts alone. We suspect it's too low, but look forward to hearing from folks on that.<br />
<br />
* Added a new AIUtilityMethods static class, for ease and efficiency of access of certain things.<br />
** GetGuardingUnitAICostPurchaseCap() has been moved there.<br />
** GetAICostPurchaseCapForBudgetType() has also been moved there.<br />
** And GetAIToPurchaseCostPresentForBudgetType().<br />
<br />
* Previously, the cap on strikecraft strength at AI homeworlds was always 2x that of any other planet. This was insanely too high.<br />
** This has been changed so that it thinks this way for the initial seeding of the galaxy only (so that it starts out strong), but after that it isn't applied at all.<br />
<br />
* Previously, the cap on strikecraft strength guarding an AI-owned former human homeworld was 67% of normal. A nice penalty that makes sense.<br />
** This now applies to the other categories of reinforcements at those sorts of planets, so also turrets and guardians and so on.<br />
<br />
* The AI homeworlds are now constrained a bit by gametime in terms of what their total caps can be.<br />
** They start out at the 0 second mark with their cap set at 50% of the max cap that they will later have.<br />
** Over the course of the first 3 hours of the game, in 10 minute increments, their cap raises from 50% of what it would normally be up to the full 100% amount.<br />
** This keeps the AI homeworlds from getting overly reinforced during the early game in particular, since there are far fewer alert-level-3-and-4 planets at that stage.<br />
<br />
* The reinforcement logic for planets is now more efficient, in that it now early-on discards any planets that don't have open budget for strikecraft or guardians.<br />
** If a planet has reached its "cap for now" as the game progresses, then it basically makes it more likely that a budget event will properly use that budget somewhere else.<br />
** The idea is a bit on the side of efficiency, but it also makes it more likely that the full 10 planets will get their reinforcements at other locations.<br />
<br />
* Thanks to Puffin, Badger, Democracy, StarKelp, Ovalcircle, Burner, and others for the discussions that led to all this.<br />
<br />
* In order to avoid situations where certain planets -- particularly level 4 alerted ones -- get absolutely overpoweringly reinforced, we are making a few changes.<br />
** First of all, the changes in general to reinforcements in this release already help with that a lot by distributing the reinforcement budget to not be SOLELY to alerted planets.<br />
*** Previously, if you had 1 alerted planet, then all of the reinforcement budget for the entire galaxy went to that single planet, and any overflow went to the CPA budget. That could lead to mega-death planets right next door to you.<br />
*** Also previously, if you had 6 alerted planets but had neutered 5 of them and so they were at cap, then the 6th and final one would be in that same situation again of getting all of the reinforcement budget for the entire galaxy and becoming a mega-death planet.<br />
*** Largely our existing changes in this new system already work around this, because those planets would at most be getting 30% of the budget for the reinforcements for the entire galaxy, and the rest rolls over to the rest of the galaxy. That said, it might actually often work out to more frequently be something like 36%, because of the extra weight to these planets in the "random other planets" section.<br />
**** Even so, having 36% of the budget for the galaxy going to one or a very few planets is just bad juju, frankly. Even with the 10% budget for alert-level-3 planets, we were seeing some internal test cases of homeworlds going absolutely wild because of them being too aggressively filled with reinforcements when there were not enough alert-level-3 planets to share the load.<br />
** With that in mind:<br />
*** If there are no alert level 4 planets that are free for reinforcement, then all of that budget (30% of the total) just gets used for random planets.<br />
*** If there are fewer than 10 alert-level-4 planets that are free for reinforcement, then it will shrink the budget proportionately.<br />
**** So in the case of there being 9 valid planets that can receive reinforcements at alert level 4, it will give 90% of the usual alert-level-4 budget. In the case of 4, it gives 40% of that budget.<br />
**** In the even that there are fewer than 2 planets, it will never give less than 20% of the budget. So for 1 or 2 planets, those both get 20% of the overall 30% slice, aka 6% of the final galaxy budget. And they may pick up an additional (100-16 = 84/10 = ) 8.4% from the "random assignment to planets" logic.<br />
*** If there are no alert level 3 planets that are free for reinforcement, then all of that budget (10% of the total) just gets used for random planets.<br />
*** If there are fewer than 5 alert-level-3 planets that can receive reinforcements at alert level 3, then it will shrink the budget proportionately.<br />
**** So if there is 1 out of the 5, then the budget is naturally 20% of the full 10%, and so on.<br />
** Additionally, if there are fewer top-tier (alert level 4 or 3) planets being reinforced, then the number of "desired unique random planets" now goes up by an equivalent amount.<br />
*** So for instance, if there are no alert-level-4 planets at all that have room for more reinforcements right now, then the number of random planets being reinforced goes up by 10 (from the original count of 10 to 20).<br />
*** With this, it keeps the overall "ambient reinforcements" more widespread, rather than giving a larger budget to just a few random backwater planets.<br />
*** This may be overly cautious, partly because those planets already have an alert-level-based cap on their total reinforcement amounts allowed, but we figure it can't hurt to be too cautious.<br />
** Overall, depending on how things play out, these changes should help to make it so that no one single planet gets so overwhelmingly strong, but the overall danger of the galaxy grows more realistically instead.<br />
*** Do bear in mind that the same number of units are being sent out anyhow, so this is just about where they go. Although in the past, sometimes it was sending the excess budget to CPA budget instead of units, so there may be more raw units in actual practice in some games (late into those games).<br />
*** Also please bear in mind that this doesn't create a "doomsday clock" where the entire galaxy will fill up. Rather, instead a CPA will come through and periodically clear out a LOT of these units, since CPAs specifically use existing guards rather than generating new units of their own.<br />
**** This will probably work best with the Tsunami CPAs on, which might should be the new default, but we shall see with time.<br />
**** It may also be that without the budget coming from stuck-reinforcements, that CPA budgets feel too small now on their own. It's hard to say. If that's the case, then we can up the CPA budget.<br />
*** At any rate, with Tsunami CPAs on, in recent versions we could sometimes run into cases where the galaxy was literally empty of any mobile guards right after a (smaller than it should have been due to lack of guards to free) CPA. That should no longer be a concern, but it should still thin out the guards in a way that helps counterbalance what would otherwise be a doomsday clock.<br />
*** Some of this will still just frankly take some testing, to see if we're missing anything. A lot of the variables here are based on your playstyle, the map types involved, how high the AI difficulty is, and many other difficult-to-predict factors. We did our best to account for as many edge cases as possible.<br />
** Thanks to UncleYar, smidlee, Strategic Sage, and arnaud_defrance for pointing out some of the issues that could happen with the old alert system, so that we could account for those in this system.<br />
<br />
* The description for the Troop Accelerator has been completely rewritten.<br />
** It used to say: The AI gets additional reinforcements on this planet.<br />
** It now says: The AI Sentinels are far more likely to reinforce this planet, and every time they do any reinforcements here, they get an extra 50% budget for free.<br />
** We are keeping this functionally the same for now. These will likely be intense, which is the idea. They are also rare.<br />
<br />
* GetIndexOfMostAnnoyingFaction no longer takes a boolean as its second option, but instead takes a AnnoyingFactionFlags flags parameter. <br />
** This allows for us to make more precise requests for what kind of annoying faction is required.<br />
** The two options at present are:<br />
*** DefaultToRandomNonHumanHostileFaction, which works the same as the boolean used to.<br />
*** AIMustBeAbleToSendWavesAgainst, which excludes a few factions like the macrophage and devourer, which might be very annoying at a planet but which the AI can't send waves against.<br />
**** We now use this new flag on raid engines to prevent them from getting into a situation where they want to fire, but cannot because the most annoying target on their planet is something that they can't fire at. Now they will fire, if a less-annoying-target on that planet is present that they can launch a wave against.<br />
<br />
* Raid engines previously were set to fire as soon as there were any hostile enemies on the planet with the raid engine, which was WAY too sensitive. That isn't what raid engines used to be.<br />
** Updated their description from this: Causes extra waves to be sent against anyone who has units on this planet, after a short delay.<br />
** To this: While the AI Sentinels on this planet are at alert level 4, they will spawn waves against the strongest viable aggressor every two minutes or so.<br />
** Additionally, raid engines now trip after being aggro'd for only 2 seconds, rather than the previously-required 30. Now you have to actually get them to a state of alert level 4, which takes far more doing, so they need to respond faster.<br />
<br />
=== Deepstriking (AI Reserves) Updates ===<br />
<br />
* Planets now keep track of the last time they were owned by a human, the last time they were owned by the AI sentinels, and the number of "major AI structures" that are currently on a planet.<br />
<br />
* There is a new is_major_ai_structure boolean that can be set on ships. If this is true, then they will count as "major AI structures" for the above.<br />
** Guard posts, the AI King command station version (not phase 2 mobile), AI command stations (normal and reconquest) all automatically get counted as this.<br />
** Other major structures for the AI are explicitly defined as: warp gates, AI eyes, troop accelerators, black hole machines, AI fortresses, AI superfortresses, raid engines, alarm posts, and magnifiers.<br />
<br />
* The way that "a deepstrike is happening" is calculated is a lot more complicated now, but actually does a better job.<br />
** Previously it was "players have a big force X distance away from planets they own."<br />
*** That might sound elegantly simple, but the problem is that if you have a planet you own way out in the middle of the AI empire and you lose that planet, suddenly you're deepstriking and getting hit by AI Reserves unexpectedly.<br />
** Now, if the humans own the planet, or have owned the planet within the last 20 minutes, then for purposes of deepstriking calculations it acts as if you still own it.<br />
*** That gives you 20 minutes (gametime) to get your planet recaptured before it starts thinking of you as being in enemy territory. Even if the AI recaptures the planet during that 20 minute period, it doesn't matter.<br />
** But wait! What if you are using "aggressive command station" placement? Basically, where you go hard into an AI planet, pop their command station, and throw your own up as fast as possible... before dealing with the entire rest of their planet.<br />
*** That's fine, but it will now still count as deepstriking. So if the AI Reserves were going to come for you, they'll still come for you if you use this tactic.<br />
*** Essentially, if there are any "Major AI Structures" (as defined above) on a planet, then it will NOT count as a human planet, even if it is currently a human planet. And this overrides the grace period, too.<br />
*** Actually, this means that if the AI recaptures the planet, it will be overriding the planet while it has its new command station and guard posts there. You have to kill those first, and then your grace period resumes (if you had 5 minutes left after doing that killing, then you have those 5 minutes left).<br />
*** It also means that if somehow the AI buys something from the Zenith Trader on a planet that is neutral that you then take, or something crazy like that happens, then it could wind up blocking you. That's way less likely, though.<br />
** The overall goal of these changes is to make deepstriking detection more accurate, and prevent the AI from sniping your command station and taking advantage of you... and to keep you from sniping their command station and taking advantage of them.<br />
** Thanks to Badger, zeus, Strategic Sage, Smidlee, and others for ideas on this, and Arides and Asteroid for reporting the initial issue.<br />
<br />
* In the planet tooltip, if a planet has any major AI structures on it, it now shows that number.<br />
** If you hold any of the hotkeys that show more than basic detail, then it will also list what those structures are.<br />
<br />
* In the planet tooltip, if a former AI homeworld is now owned by nobody or owned by someone else, it now says it was a former AI homeworld.<br />
** Same deal for if the planet was once a human homeworld.<br />
<br />
* In the planet tooltip, if a planet was owned by humans within the last 20 minutes, but is not currently owned by them, it shows how long ago it was owned by humans.<br />
** It also tells you that "Deepstriking reprisals, if relevant, will not take place until it has been 20 minutes"<br />
** If humans owned the planet longer ago than that, it now shows how long it has been since humans owned it, but in a drab sort of green, and without the nice message about deepstrikes.<br />
<br />
=== Mod Updates: Extended Ship Variants by NR SirLimbo ===<br />
<br />
* Fixed the "Elctro-Strike Corvette" (typo).<br />
** Thanks to crawlers for reporting on Discord<br />
<br />
*Fixed the Oculus being overpowered. Its damage modifier to enemies over 2 minutes at the planet has been reduced from 3 to 2.5, and its energy use per 1x added multiplier increased from 2500 to 3500.<br />
** If this needs further adjustments, feedback is welcome.<br />
** Thanks to ArnaudB for reporting on Discord<br />
<br />
'''For the Fallen Spire Extended Ship Variants Mod:'''<br />
<br />
* Reduced the health and shield of the EMP Missile (from the EMP Missile Frigate) from a base of 5000 each to a base of 100 each (reduced by 98%) since there was no way to shoot them down, ever.<br />
** Also disabled the EMP Missile from having Strike Craft status, which means health (unless default settings were changed) goes down to actual 200 combined instead of 20000 (wow, 99% reduced health now!) and damage goes down from 750 to 500.<br />
** Background is that these missiles come in a swarm that's supposed to get some missiles shot down. Which, at the speed versus time to kill was impossible unless the entire enemy fleet had nothing to do other than point defense.<br />
<br />
== Version 2.608 MP Deduplication And Bugfixes ==<br />
(Released October 7th, 2020)<br />
<br />
* Make it even harder for the zenith trader to be killed improperly<br />
** Thanks to Mckloshiv, Fritz1776, and GreatYng for reporting<br />
<br />
* Made the "Coroutine container not configured... did you forget to call Init?" message not something that just goes to the player log, as that was really confusing.<br />
** That actually now self-repairs, in cases where it may have had a problem for whatever reason. This had to do with dropdowns hiding themselves and not always doing it properly.<br />
** This was probably invisible as an actual error, but probably left the dropdown visible when it should not have been.<br />
** Thanks to A Classy Mushroom for reporting.<br />
<br />
* Fixed another bug that could happen during "UIBehaviour.IsActive()" when dropdowns were being hidden in some contexts.<br />
** This was probably invisible as an actual error, but probably left the dropdown visible when it should not have been.<br />
** Thanks to A Classy Mushroom for reporting.<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a potential source of multiplayer desync in the trade code.<br />
** Fixed a long standing source of 'stutter lag' in the Trade Station Creation code.<br />
*** 'Stutter lag', for lack of a better term, is when ship movement looks to be moving like a power point presentation.<br />
*** It was notably frustrating to hunt down because it can happen even without any slowdown, at 100% speed even!<br />
<br />
* Fixed a very unexpected error that could happen in DoAICounterattackForcesPerSecondLogic(), which we instrumented yesterday in order to find where the error could be, but did not actually fix anything with. Turns out that ShipGroup_WavesFromHere_Normal's draw bag could sometimes return a null result. We now continue trying to pull a non-null result for 30 tries if this happens for some reason, and then if it is still null then skip the parts that would throw errors.<br />
** Thanks to Democracy and Puffin for reporting.<br />
<br />
* Fixed a severe multiplayer bug that was leading to a wide range of issues, mostly involving having a lot of extra ships that should not exist on the client.<br />
** These involved unloading ships from transports, ships coming out of guard posts, ships spawning from waves, ships spawning in hacking responses, turrets being placed in bulk batches by the player, and assumedly other cases as well.<br />
** Essentially in all of these cases, the client and the host wind up with different values for their PKIDs of those units, and thus on the client the units get deleted and the host sends over the proper copies that they have created.<br />
** The problem was, the client was doing the deletions in INCREDIBLE slow motion. It would remove those ships at a rate of about 1 per 3 seconds, rather than "all of the ships that are erroneous go away every 3 seconds."<br />
** The reason for this is how we are ruthlessly scrubbing out the existence of these ships; it was breaking out ability to loop over the full list of ships properly. So we instead gather up the list of ships first, then ruthlessly delete them, and all is well.<br />
** There are still going to be spurious brownout notices that pop up at the moment, and extra ships that appear, but they should only last about 3 seconds and so should not cause any major lag or other problems, unlike what was happening before.<br />
** Our PKID allocation chain is going to be revised in order to completely bypass this sort of problem in general, but we first wanted to fix this issue since whenever there IS a problem, the game is supposed to be able to repair itself, and so these problems sticking around longer and being easy to reproduce (in the end) were a golden opportunity for us to make sure all that works. Now it does.<br />
*** When the PKID allocation chain is reworked, there won't be those spikes of deletions and recreations, or those spurious brownout notices. Until then, that will be an ongoing minor annoyance.<br />
** Thanks to OzoneGrif, Puffin, Democracy, 𝔳☆𝔩𝔱𝔞𝔤𝔢, and probably others for reporting.<br />
<br />
* Added in a variety of logging on deserialization and serialization surrounding "MinorFactionCommon Data," so that we can tell by manual review a bit better if something is off.<br />
** Same for all of the various AI faction externaldata, for the common case, sentinels, warden, hunter, PG, AI budget item current config, and AIP history.<br />
** Then same for the external factioncommon data. And fireteam data. And some ship stuff. And some transported ship stuff. Wow.<br />
<br />
* Made some improvements to how the deserialization logging works for super old-school data formats from back in April and before (April of this year was like 10 years ago, right?).<br />
<br />
* Fixed some very old savegames not being able to load because of missing "Lesser ZenithMatterConverter".<br />
** There are a few spotty savegames from a long time ago (1.302 and 1.304), or from right around 2.600, which don't load for mysterious reasons.<br />
** This seems probably to have something to do with the changes to how we started reading ExternalData in during the post-2.600 betas, but we can't find any errors in code review, and looking at the actual data in the serialization logs isn't giving us anything useful.<br />
** We're not sure if it's possible to actually cause a broken savegame with the current builds or the last few builds that have been public. And most other older savegames except right around those exact version numbers also seem to work just great.<br />
** There was a much wider range of older version numbers that were breaking until today, based on some things that could be null, but those are all fixed now. The remaining issues are all centered around those specific versions.<br />
** Oh man! Wait, we just wasted a fair bit of time. Actually, version 2.600 saves were known-bad and we can't fix those because of the nature of that error: https://wiki.arcengames.com/index.php?title=AI_War_2:Multiplayer_Alpha_And_Beta#Version_2.601_Savegame_Hotfix<br />
** However, the version in the 1.302 to 1.304 range we're not sure what is wrong with. Those are old and don't seem to affect much of anyone, though.<br />
** Thanks to myrion1 for reporting.<br />
<br />
== Version 2.607 MP Stability, Exo Syncs, And Limbo Mods ==<br />
(Released October 6th, 2020)<br />
<br />
* The Imperial Spire is now better at ending games with crazy-strong AIs<br />
** Thanks to Isiel for reporting<br />
<br />
* The Nanocaust's ability to get turrets and some bonus ships is now the default behaviour<br />
<br />
=== Exo Syncing with AI attacks ===<br />
<br />
* If an Exo is pretty close to done when a CPA or a Wormhole Invasion is also close to being ready, the Exogalactic Strikeforce will sync itself to the AI attack so they'll launch at the same time. The goal of this is to get some particularly epic moments, where the Exo punches a hole in your outer defenses and the CPA floods through to your backline (or the CPA distracts your fleet while the Wormhole Invasion destroys your backline).<br />
<br />
* Once the sync happens, the Exo Notification will begin to lie to you about the charge percentage; instead of measuring its actual strength it will instead fudge numbers so that it will hit 100% when the CPA hits.<br />
** The goal is to make sure that you can't tell easily that the sync has happened before it's announced<br />
<br />
* When the CPA/Wormhole Invasion is announced, the Exo notification will tell you that it's sync'd to the strike, but until the CPA/Wormhole Invasion notification appears you won't know.<br />
<br />
* Exos that are syncing are still capped at their intended strength (so if the Exo waits an extra 5 minutes, it won't be stronger than usual. If an exo launches early then it will be weaker than usual)<br />
<br />
* This behaviour is only available for AIs at difficulty >= 7<br />
<br />
=== New Off By Default Mod: Extended Ship Variants by -NR- SirLimbo ===<br />
<br />
* Adds 13 more Strike Craft and 4 Frigate ship lines.<br />
** Ship variants are balanced further towards Medium Hull and less-used Weapon Tech groups to make them an alternative to the default Fusion-Generalist-Concussion combo.<br />
** The FRS Ship Lines do not have fleet-wide bonuses but are low-AIP by comparison and very powerful, and offensive damage multipliers increase with mark level.<br />
<br />
* Strike Craft:<br />
** Obstructor Wing -> V-Wing variant which deals more damage to slow enemies.<br />
** Strike Wing -> More agile and higher-damage but lower-durabiltiy raid-VWing variant<br />
** Oculus -> Eyebot variant with improved damage to a planet's idle defenders<br />
** Vex Guard -> Shieldless Vanguard variant that deals more damage the lower its health goes<br />
** Cannon Bot -> Higher-range and very high-damage Gunbot variant with very slow reload during which it can re-cloak<br />
** Elctro Strike Corvette -> Inhibiting Tesla Corvette variant dealing full damage every attack distributed to all enemies hit<br />
** Fortified Agravic Pod -> Uncloaked Agravic Pod variant which is almost invulnerable from afar<br />
** Ablative Artillery -> High-range and damage variant of the Ablative Gatling with higher damage if the target is further away<br />
** Metabolizing MLRS Corvette -> MLRS Corvette variant that grants metal when enemies it attacked enough die<br />
** Tracker -> Shorter range Raptor variant with decloaking capabilities and longer-lasting ambush modifier<br />
** Space Bomber -> Uncloaked Space Plane variant with better radar dampening and high damage against heavy enemies<br />
<br />
* Frigates:<br />
** Translocator Sniper Frigate -> Tritium Sniper Frigate variant which knocks back even larger targets and deals bonus damage if the target very far away, at the cost of other damage<br />
** Shredder Frigate -> New Melee-Frigate type with very durable shields and high damage, even more if the target's hull is low<br />
** Sharpener Frigate -> Shredder Frigate variant with much lower damage but the ability to amplify all allied attacks upon its target<br />
** Wedge Frigate -> Anti-Large Shredder Frigate variant with greatly improved hull and damage against heavy targets, but no shields<br />
<br />
* FRS-Only Strike Craft:<br />
** Alpha Strike Wing -> Strike Wing variant with much higher stats and longer-lasting buffs, and of cause greatly enhanced ship cap for a mere 20 AIP<br />
** Void Bombers -> Space Bomber variant with perfect and very-close-range radar dampening, combined with overall enhanced stats for a mere 30 AIP<br />
<br />
=== New Off By Default Mod: Extended Ship Variants For Fallen Spire by -NR- SirLimbo ===<br />
<br />
* Requires The Spire Rises (DLC1)<br />
<br />
* Adds 5 more Strike Craft and 1 Frigate ship line for any player's taste, similar to the Vanilla variant. Naturally it requires Fallen Spire to be installed and enabled.<br />
<br />
* Strike Craft:<br />
** Beam Bombard -> Bombard variant with a higher-range multi-railcannon attack well suited to destroy Strike Craft and strong shields, though slower and with very low hull<br />
** Compact Bombard -> Smaller, lighter, faster, cheaper and lower-range Bombard variant with on average higher ship counts. Attacks are weaker but faster too, intended for players who dislike the Bombard's lethargy<br />
** Cloaked Viral Shredder -> Viral Shredder variant with cloak and the ability to attack up to 6 times without revealing itself. Naturally its replicants are able to do the same. In return loses a lot of durability<br />
** Parasitic Viral Shredder -> Replicates everything: Itself when attacking, and enemies via Zombification. Naturally its replicants are able to do the same. Has lower damage and ship counts to compensate<br />
<br />
* Frigate:<br />
** EMP Missile Frigate -> Similar to Lighting Torpedo Frigates or Tackle Drone Launcher Frigates launches very fast EMP Missile-Drones that disable enemies, even up to underweighted Frigates<br />
<br />
* FRS-Only Strike Craft:<br />
** Rail Bombard -> Very high-range Beam Bombard variant that deals high ambush and anti-Strike-Craft damage. Much slower, but in the middle of a planet can just about attack everywhere at once for a mere 35 AIP<br />
<br />
=== Bugfixes ===<br />
<br />
* Since Steam networking has a 512kb limit per message, kind of arbitrarily baked in from what we can tell, we're working around that by splitting any messages that are larger than (512kb minus 100 bytes) into multiple fragments for reassembly on the other side.<br />
** The only known way to hit this right now is with a sufficiently large savegame, and so this should probably only happen from client to host. But technically it can happen in either direction.<br />
** Our logic for doing the fragmentation and adding extra header information onto each fragment for reassembly on the other end seems to be successful, but we have not yet taken the steps to actually reassemble it and read in the interior message yet on the receiving end.<br />
** Another challenge we ran into before that is that we get a mysterious "limit exceeded" result back when we are sending two large messages (aka the two fragments) too close behind one another. The documentation just has a cutesy "too much of a good thing" note as an explanation, so no idea what is actually happening there, or what the real limits are.<br />
*** To work around THAT, we hang onto whatever the fragment is that it is failing to send, sleep the current thread for 10 milliseconds, and try again. We do this for up to 400 times if required, but so far in our testing it takes between 42 and 46 tries before it actually gives us a proper result.<br />
*** It's important to stress that this would have been an incredibly roadblock if we were actually having during-gameplay code running into this more, but for now this seems to be a minor annoyance in some edge cases.<br />
*** Next step is actually reconstituting the internal message on the receiving end from the fragments.<br />
<br />
* Added a new setting to the Network section of the personal settings screen: Log Fragmented Messages<br />
** Depending on the networking framework you are using, there may not even BE any fragmented messages (or rather, there are, but they are handled well below our code). In certain cases, such as anything over 512KB being sent on Steam, we have to do our own fragmentation. <br />
** This fragmentation is pretty much limited to just the initial sending of exceptionally large savegames across the network. When this option is on, then any fragmented messages that are sent or reconstituted will be written into the PlayerData/NetworkFragmentedMessages folder. If there is some sort of problem, then by enabling this on all the involved computers and then comparing the files with the same names helps us figure out what is going on.<br />
<br />
* The fragmented messages that are able to be sent now are properly reconstituted on the other end.<br />
** Several messages from difference sources can be sent or received at the same time, if needed.<br />
** This really should only apply for basically one message (initial world sync on Steam on some savegames) during a typical session, but it makes it so that those savegames once again finally work.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Previously it was possible for GetCurrentDefensePlacer() or GetAIDefensePlacerForPlanet() to throw an exception during map generation in various circumstances.<br />
<br />
* Previously it was possible for two instances if GenerateMap to be called simultaneously in some circumstances when you started the game from the lobby or started a quick start, which led to all sorts of chaos.<br />
** At worst, it should now run those back to back. But in general it should avoid the second call and save you something like 0.8 to 1 seconds of load time.<br />
<br />
* The "A Twisted Enemy" quickstart has been replaced with a version that no longer has “Super Strong” accidentally enabled on it.<br />
** Thanks to Ovalcircle, smidlee, and ArnaudB for reporting.<br />
<br />
* GenerateMap() now gives better errors if it has any, and there are several more places where it repairs bad data if it can't find things it was expecting.<br />
** This often applies to something like trying to load a savegame into the lobby for editing when it includes explicit content from DLC or mods you don't have.<br />
<br />
* If you try to load a savegame or quickstart into the lobby and it requires mods or expansions you don't have installed or enabled, then it will give a nice error message complaining about that rather than a hodgepodge of death error messages.<br />
** Thanks to Spyrooooooo for reporting.<br />
<br />
* Fixed a longstanding oversight where the "number of times a save has been loaded" was not being incremented if you loaded it via the continue button.<br />
<br />
* Made it so that if a savegame metadata file line fails to parse, it will not be treated as a fatal error and will instead just move on past it.<br />
** Thanks to Ovalcircle for reporting.<br />
<br />
* Put in a bunch of improvements to UpdateVisualObj() to prevent cross-threading exceptions that could still happen, and also put in more instrumentation so if a future error happens we will know more where it is. Also this should be less disruptive to gameplay if it ever does happen, now.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Put in a bunch of extra debug logging in DoAICounterattackForcesPerSecondLogic() for if there are any errors in there. It won't fix any of them, but will make them less disruptive to game flow, and also will give us more information on what to fix.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Fixed one more oversight in DoForSelected() that could still lead to cross-threading exceptions.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Previously, if you had multiple AIs and then removed one of them, it would leave behind an extra Praetorian Guard faction that would then error out. Now, when you remove the extra AI faction it will also remove the extra PG subfaction.<br />
** For existing lobbies that are unable to start, you can hit Reset To Defaults in order to work around this.<br />
** Thanks to Fenrakk101, Badger, GreatYng, and Asteroid for reporting.<br />
<br />
* Added a new remove_if_more_than_one_per_ai_prior_to_this field for factions, which is set to true for the hunter, warden, and praetorian guard sub-factions.<br />
** This causes any extra of those sub-factions to be removed when you load up your lobby settings or quick start or whatever it is that you're loading into the lobby.<br />
** This makes it so that existing bad data doesn't require resetting to defaults to get back to it.<br />
** Thanks to GreatYng for the settings file that let us fix this.<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where some turret types were using incorrect tech types.<br />
*** Thanks to crawlers on Discord for the report.<br />
** Fixed a bug where some External Data values that could sometimes be negative were always assuming they were positive.<br />
*** Thanks to SirLimbo for the report.<br />
** Finally fixed a bug that could result in the raid notification causing an error on mouseover/click.<br />
*** This was due to a race condition that I was failing to account for.<br />
*** Thanks to Badger³ for helping to finally fix this.<br />
<br />
* Fixed a variety of client-side issues in multiplayer that were triggered by building custom fleet leaders on the client.<br />
** Prior to now, those would cause the game to lose sync fully and spam errors to death.<br />
** There was a whole huge cluster of things that could probably cause this, but the custom fleet leaders was the simplest reproduction case. All of the other cases should also be resolved now.<br />
** Thanks to RocketAssistedPuffin and 𝔳☆𝔩𝔱𝔞𝔤𝔢 for reporting.<br />
<br />
== Version 2.606 Lurking And Influencing ==<br />
(Released October 5th, 2020)<br />
<br />
* Improve hunter fleet lurk planet finding logic<br />
<br />
* Improve Astro Train depot/train spawning logic to prevent them from spawning on weird places<br />
** Thanks to GreatYng and GophTheGreat for reporting<br />
<br />
* Improve fireteam logic at detecting when their ships are ready to attack<br />
** Thanks to Democracy for the bug report<br />
<br />
* Fix a several bugs where CPAs could wind up allied to seemingly random other factions. <br />
** Note this fix applies only to freshly started games; in progress games will still have this<br />
** Thanks to Isiel and Ovalcircle for reporting<br />
<br />
* Fix a bug where click on a Notification for a Dark Spire Locus you couldn't see would still show you which planet it was on<br />
** Thanks to GreatYng for reporting<br />
<br />
* A planet can now have multiple minor factions with Influence on it. The game will automatically sort the factions with influence and use the strongest minor faction as the thing to show on the galaxy map.<br />
** This should solve periodically seen problems with planet colour flickering between faction colours.<br />
<br />
* Hopefully high-level astro train carrier variants now will produce drones.<br />
** Thanks to GreatYng for reporting and Puffin for suggesting a solution<br />
<br />
* Fix a bug with the Nanocaust getting units they should not, including Astro Trains and Antagonized Dyson units<br />
** Thanks to GreatYng for reporting<br />
<br />
* Minor buff for the nanocaust if it's stuck on one planet<br />
** Thanks to ovalcircle for reporting<br />
<br />
* Add a new Galaxy Setting under 'scouting' to allow your allies to share vision with you<br />
** Thanks to the appropriately named Lux Imperia for reporting<br />
<br />
* In the science screen, there are two new numbers on the bottom row which are 'number of offensive ship lines that can be upgraded' and 'number of defensive ship lines that can be upgraded'.<br />
** Badger found himself often wishing for that information, since the strength estimator doesn't tell me how many lines there are.<br />
<br />
* Put in changes to the Facepunch Steamworks wrapper to change k_cbMaxSteamNetworkingSocketsMessageSizeSend from 512 kb max send size to instead be 512 MB.<br />
** As feared, this did not work. To override this limitation we would instead have to recompile the C++ client-side files for Steam itself, and we're not sure we could actually do that, since only the networking portion is open-source.<br />
** We could ask Valve about this, but the nearest time a change would be in place that could affect this positively would be "whenever they next do a developer SDK update," which is a very different schedule from their public client update schedule.<br />
** It's possible that we could also use some form of decompiler to alter the existing .dll (windows), .bundle (OSX), and .so (OSX and Linux) files and change the value of this one precompiled constant int32 in the version that we distribute with the game, but that risks messing up other things that are working fine right now. And it's probably a TOS violation for us to do that, though it would likely be a harmless one. Then again if someone started using that in a way that adversely affected Valve's networks, we'd be in major trouble, so best to punt on that entire line of thinking.<br />
** So with that in mind, we're going to just have to work around the 512kb-per-message send limit on Steam as a hard limiter for now. This will take a bit more engineering to do, but it's not the end of the world. We used to have such things for the original AI War because network card drivers were such that this volume of data often swamped their internal buffers, so this is not a new problem. It's just unexpected in this context since we missed this obscure reference in the documentation of one of our three network libraries in use here.<br />
<br />
== Version 2.605 Hunter Intelligence ==<br />
(Released October 2nd, 2020)<br />
<br />
* Planet In Combat notification improvements<br />
** The Hacking notification tooltip now includes strength data about the enemy hacking response, so you can just hover the tooltip without going to look at the hack, if you are multitasking<br />
** Planets with at least 5 strength in your turrets are now eligible for Planet In Combat notifications, even if you do not own those planets.<br />
*** The goal is to also cover Beachheads, and planets where you are still fighting but the AI just sniped your command station.<br />
** Thanks to Burner for the suggestion<br />
<br />
* New cheat codes:<br />
** 'instacpa' --> spawns a CPA in 30 seconds. Perfect for trying out the new tsunami CPAs.<br />
** 'destroyp,planet name' --> destroys the planet listed. Works like findp. <br />
<br />
=== Flavor Improvements ===<br />
<br />
* The ARS and Tech Vault now have more flavour in their description, and their associated hacks. <br />
** The ARS updates contributed by Puffin<br />
<br />
* Thanks to UncleYar for reminding us about this<br />
<br />
=== Intelligence Buffs ===<br />
<br />
* Hunter Intelligence improvements at higher difficulties (specifically when targeting player) at higher difficulties (>=7)<br />
** Hunter fleet now prefers to go after critical targets like GCAs, MDCs, Zenith Power Generators, etc... rather than just thinking EXTERMINATE! EXTERMINATE!. <br />
** The AI will begin to prefer critical targets over just killing player planets at 6 and 7, but the effect is weak and entirely absent in the early game. It's a much stronger preference at difficulties 8-10.<br />
** If loss of a particular command station would put the player into brownout, that is always a valid target.<br />
*** As a result of these changes, the hunter fleet should be less willing to attack you except over something you really care about, so baiting the Hunter to wear them out should be harder unless you really take a risk with the bait.<br />
<br />
* Note this behaviour is controlled by the Hunter Fleet Difficulty, so you can play AI 9 Hunter 7 if you don't enjoy this behaviour. <br />
<br />
* Fireteam intelligence improvements<br />
** Make Fireteams willing to wait a bit longer between switching targets. I think this was preventing them from properly gathering their strength to strike<br />
** Improve Fireteam intelligence for determining whether they should take a battle and when they should reteat. Should be a buff to all fireteam-using factions. They were often attacking players in particular without enough strength to break them<br />
*** Done as an additional improvement when updating the Hunter<br />
<br />
* This section brought to you by Burner, who wanted the Hunter to be more evil<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an error in the tooltips for CPAs where non-tsunami and tsunami tooltips were reversed. Confusion!<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Fix 2 problems with the Nanocaust Lich. First, its guns now have at least as long of range as its tractors. Secondly, its tractors are slightly nerfed to no longer be able to grab Battlestations <br />
** Thanks to crawlers for reporting<br />
<br />
* Fix a number of bugs related to the allegiance of AI-allied minor factions during a civil war, causing them to ally with one AI in particular<br />
** Thanks to Nyteblade and GreatYng for reporting<br />
<br />
* Fixed an issue with the Dark Spire ships that humans were able to hack for. Essentially, the does_not_use_multipliers_from_mark_level flag was being inherited from the dark spire faction versions, so this made all faction levels act the same. Now they properly upgrade their stats over mark level increases.<br />
** In addition, all of the dark spire human ships now get upgraded by the Heavy tech type. But they still remain without weapon techs (you have to use fleet upgrades to get them the rest of the way).<br />
** Thanks to julian509 for reporting.<br />
<br />
* Fixed a bug in multiplayer faction sync that would mess things up quite royally if you had much in the way of tech history for a faction and also speed groups.<br />
** Thanks to Tzarro for reporting.<br />
<br />
* Fixed a general nullref exception that could happen in cross-threading cases in SquadWrapper's GetSquad() method.<br />
** Why NRSirLimbo always hits these is a mystery, but thanks to him for reporting it!<br />
<br />
* PreCalculateAllRepairableTargetsForPlanetFaction now actually gives better error messages if something goes wrong.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Data is probably very broken is this happens anyway, but it should no longer be possible for exceptions to happen during GetHasRelationshipWith() checks between two factions.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* There are several groups of spurious "we had a network error" messages that should no longer appear when clients and hosts disconnect while in the middle of trying to send a message.<br />
<br />
* It was not super common, but it was possible in multiplayer to have it silently fail to send a message from the host to the client for various reasons, and no error was shown anywhere and it just looked like they were connecting infinitely.<br />
** This now actually shows an error message, so that we know what's up and people don't waste time just sitting there.<br />
** Thanks to Andyroo for reporting.<br />
<br />
* Our serialization buffers in general now do a more accurate and efficient job of expanding their capacity when they need to.<br />
<br />
* Discovered that Steam networking is only willing to SEND up to 512kb of data at a time, thanks to a const k_cbMaxSteamNetworkingSocketsMessageSizeSend, even though it's willing to take in more data than that and can send messages that are larger than that if not for this one random constant.<br />
** This is... really irritating, to be honest. We'll have to see how to best work around this, but this was not clearly documented at all and in fact seems to have gone against what we thought their networking protocol was.<br />
** Our other two networking libraries don't have this limitation, so building in a workaround for just Steam (admittedly the majority case) is annoying either way.<br />
** This is going to take us a bit to figure out how best to handle; this is literally a limitation purely based on a config setting that is hardcoded into the Steam API at the moment, so that's... not our favorite thing. We may simply be able to recompile the wrapper libraries, though, we're not sure.<br />
** Thanks to Andyroo for discovering this limitation.<br />
<br />
=== Included Mod: Civilian Industries By StarKelp ===<br />
<br />
* Civilian Industries Bugfixes<br />
** Fixed a bug where hacking a Civilian Beacon when there were already existing Civilian Subfactions would sometimes fail to activate yours.<br />
** Fixed a bug where Traders would try to trade with crippled structures.<br />
** Fixed a bug where Resources could randomly be regenerated as the game goes along.<br />
*** This fix may result in one more resource regeneration upon loading an old save. One day these resources will cool off.<br />
<br />
* Fixed a bug where civilians wouldn't stance to help allied attacks.<br />
** This was a conflict of interest with the new logic that was put in place to make them group up around wormholes before attacking, instead of trickling in and dying constantly.<br />
** Thanks to ussdefiant60 on Discord for the report and save.<br />
<br />
== Version 2.604 A Thousand Screaming Idiots ==<br />
(Released October 1st, 2020)<br />
<br />
* Add a Tip of the Day reminding players they can change their starting planet in the custom game lobby<br />
** Prompted by a discussion with Fenrakk101<br />
<br />
* Make the 'bait the hunter into a meatgrinder on a player planet' strategy a bit less effective on Hunter difficulty 8 or higher<br />
<br />
* The hunter fleet type that was previously Kamikaze has been renamed to Reckless. This avoids some confusion.<br />
** Thanks to crawlers and Puffin for suggesting.<br />
<br />
* The "overconfidence ratio" of the AI is something that has it overestimate the competence of its own forces and charge in in various situations where the strength values are not exactly equal-or-in-its-favor.<br />
** For difficulty 6, the value has long been 2.0. For all other difficulties above that, it has been 1.0.<br />
** For difficulties 8 and above, the value is now 0.9.<br />
** It has been pointed out to us that not all strength is equal, and leaving some margin for error in there to account for potentially strengths and weaknesses playing a bigger role is a good idea. Let's really make sure the AI is going to smash them.<br />
** Bear in mind that this only applies to the regular threat controlled by the sentinels, and the hunters and warden use their own separate logic.<br />
** Thanks to TechSY730 for suggesting.<br />
<br />
* In external constants, there is a new field called strength_multiplier_for_turrets. It is by default now 2.<br />
** This basically makes the apparent strength of all turrets twice what they have previously been estimated to be. Turrets are observed to have a number of advantages when absolutely wrecking enemies, so this should more accurately reflect reality. We look forward to future suggestions on more accurate numbers here.<br />
** Individual turrets are still able to have their own strength_multiplier, and this is still added in for those on top of the general turret bonus.<br />
** Thanks to Badger, Puffin, zeusalmighty428, and others for helping with this idea.<br />
<br />
=== "Tsunami" CPAs ===<br />
<br />
* Add a new Galaxy Setting, "Tsunami CPA". This setting can be applied to ongoing games, but is off by default. If people like it, this can become the default mode (and the old mode can be enabled with a setting)<br />
* When enabled:<br />
** CPA units are now ineligible to join Threat or the Hunter.<br />
** The units for a CPA will just charge straight at you. No quarter asked or given. They try to be reasonably clever about it, but they will just come at you in an unstoppable tide until you or they die.<br />
** Twice the number of units will be sent as a normal CPA, roughly.<br />
<br />
* From a discussion started by UncleYar on Steam. Badger thinks this is really cool and will be playing with it in all his games from here on.<br />
<br />
* The description for the galaxy options setting:<br />
** Enabling this changes the Cross Planet Attack logic. Ships released by a CPA now flood into your empires from all over the place in a jumbled and exciting rush, rather than joining the Hunter fleet and waiting for an opening.<br />
** This reckless attack can create surprising openings for the rest of your enemies to exploit, or it can lead to you mopping up a lot of ships that arrive haphazardly. One way or the other, it's going to be an event.<br />
** Additionally, because the CPA is using such a staggered approach that you can defend against piecemeal, it's going to send twice as many ships as usual. This can be really good for you, in terms of greatly weakening the defenses of AI planets, but it comes with inherent dangers.<br />
<br />
* The tooltips for CPAs have been rewritten in general. At best it was confusing before.<br />
** When tsunami is NOT on, it now says:<br />
*** Cross Planet Attacks free a massive amount of AI guard ships all at once across a large area of the galaxy. It does not generate new ships, but it turns ships that were guarding various planets into active Threat against you. You don't know what will be in the CPA, or even exactly how strong it will be, until you see it. The higher the AIP, the stronger the CPA, though, as a general rule. The most likely result of these ships turning to Threat will be that they join the Hunter Fleet and strike at you at a much later time, but you never know. If you want far more exciting and interesting CPAs, consider enabling the 'Tsunami CPA' option in the Galaxy Options.<br />
** When tsunami is on, it now says:<br />
*** Cross Planet Attacks free a massive amount of AI guard ships all at once across a large area of the galaxy. It does not generate new ships, but it turns ships that were guarding various planets into a staggering barrage of attackers who will arrive from all directions and over a varied span of time. You don't know what will be in the CPA, or even exactly how strong it will be, until you see it. The higher the AIP, the stronger the CPA, though, as a general rule. Since you are using the exciting Tsunami CPA option, you'll have the chance to mow down lots of AI ships in your own defenses... but at the same time they may create dangerous openings for the Hunter to exploit, or may burst down your defenses by sheer volume over time.<br />
<br />
=== Lore ===<br />
<br />
* The game now has a Lore journal for the backstory of the AI (and thus AIW2 in general)<br />
<br />
* When you start a game with Zenith or Spire factions, there's now a Journal Entry with Lore about the Zenith or Spire race giving some flavour/background.<br />
<br />
* Also Risk Analyzers and Scourge have Lore sections as well which explain some of their mechanics and give flavour<br />
<br />
* Eventually I'd like to have Lore entries for all the factions in the game, and this is a start.<br />
<br />
* Updated the Zenith introductory lore to talk about their biology and a lot of information about their golems as automatons and so on.<br />
** It's not clear if we ever published anything about this before in a canonical sense, but we were writing up a lot of this sort of thing for Stars Beyond Reach. At any rate, now we've got perhaps the best look at the Zenith -- including the massive amount of things we don't know -- actually in the game!<br />
<br />
* Update the lore for DLC2's Zenith to mention that they are LIKELY from another universe in the multiverse, but not to make it absolutely rock solid certain that they are interdimensional.<br />
** This lore bit now does establish in-game for the first time that the existence of the multiverse is known to scientists to be a definite fact... but that so far there hasn't been any evidence of beings traveling between universes. This may be changing for the first time in DLC2...<br />
<br />
=== Included Mod: Civilian Industries by StarKelp ===<br />
<br />
* Fixed a bug where Civilian Resources were reset upon saving and loading.<br />
* Made it so Civilian Units would load up into their patrol posts when they have no active orders.<br />
** This change in particular is an absolutely massive speed improvement, increasing late game speed from 30~% to 90~% in stress tests.<br />
<br />
* Added Beacon Support to Civilian Industries<br />
* A large number of optimization to militia movement code.<br />
** Units will no longer go on a battle rage and immediately fly to another adjacent planet after winning a fight.<br />
** Units now chill out and wait for 66% of their forces to ready up before attack instead of the old 33%.<br />
*** This is still ignored when reinforcing other Militia or Allies.<br />
** Units that are At Ease in their patrol post will no longer sleep through apocalyptic levels of danger when they could stop being lazy and help.<br />
** Units that are loaded up into their patrol posts are now more accurately counted.<br />
** Militia HQ units should now be far better at keeping up with their assigned Battlestation/Citadel.<br />
* Some more multiplayer-specific fail safes were put in place.<br />
* Fixed a bug where planets were improperly saving their resources.<br />
** This will be retroactively 'fixed', but the fix will simply be them regenerating their resource on load. There is no way to get their prior resource I'm afraid, sorry about that.<br />
<br />
=== AI Budget Planning ===<br />
<br />
* Adjust the way most AI spend their budgets by a bit.<br />
** Most AIs actually gets to reinforce the praetorian guard early; previously if you kept your AIP to 50 or less the praetorian guard would get essentially no reinforcements over time, which meant that very low AIP games would find the homeworld easy pickings. <br />
** Also shift a bit of AI income from Waves into CPAs, since there were reports that CPAs weren't particularly scary<br />
** This doesn't affect AIs like the Tsunami that do unique budget allocations.<br />
<br />
* AI Budgeting Overhaul: Allocations!<br />
** So, basically, the AI has a variety of budgets for different things (various forms of defense and offense, reconquest, etc).<br />
** In the first AI War, these budgets were all independent and could not be reallocated based on the situation. In AI War 2, Chris and Keith both thought it would be awesome to have the AI more intelligently allocate its budgets for various situations (such as when its king is threatened).<br />
** The problem with this sort of reallocation is that it's invisible and causes all sorts of ill effects. A few of which are noted here:<br />
*** When the king is threatened, the AI can become so defensive that it loses the ability to strike back at you. This can make it hard for it to win in the very late game, which can make your eventual victory feel inevitable or boring once you get to that point. The back-and-forth can stop, which is the opposite of what we want.<br />
*** If you choose to threaten the king early, on purpose, then you can put the AI into a defensive footing that gives you breathing room that you should not have.<br />
*** While the AI is feeling threatened and is all defensive, it actually can pour far too many resources into its homeworld defense, making it so that it's tedious for you to win at the same time that it is hard for you to lose. Absolutely the opposite of our goal.<br />
*** While the AI is feeling threatened, some of its various other budgets will still have events that fire (wormhole invasions, waves, etc), but they can be hilariously underpowered to the point that it seems like a bug and confuses people. We've been having sporadic reports of this for years.<br />
** Overall the idea now is to stop allowing for this reallocation of budgets, and just keep it fixed regardless of the situation the AI is in,<br />
*** This prevents various forms of advanced player cheese against the AI.<br />
*** This should make final homeworld assaults go faster, BUT also make it so that you're at much greater risk of counterattack during these same time periods. So your ease of winning will go up, if you're in the position to do that final push, but your risk of losing at the last second also is majorly going up.<br />
*** Since this budget-shuffling was invisible to players in the first place, this means that there are no longer situations where the AI seems to be either cheating ("infinite" defenders at the expense of offense) or buggy (why a wormhole invasion with barely anything in it?).<br />
*** This also preserves the uniqueness of various AI types, as those with unusual spending ratios will do that now even when their kings are threatened, versus falling back to a very generic defensive posture during king-threatened situations. This sort of situation could lead to AIs doing "unallowed" events for their AI type if you threaten their king long enough.<br />
** TLDR: the AI will act more like you already probably expected, and the endgame will not be as prolonged but will also be more dangerous for you.<br />
** Thanks to Puffin for raising a lot of the issues here.<br />
<br />
* AI Budgets: donations when full between sub-factions.<br />
** This is another one that has many negative implications, but mainly in edge cases.<br />
*** Essentially, if an AI had a huge budget for its hunter fleet or something of that nature, but the hunter fleet was already full, then it could donate its budget to something else. As just one example. There are a lot of categories.<br />
*** In practice, what this would often mean is that certain specialized AI types could become masters of something that they were not supposed to be, such as a very aggressive AI type having amazing defenses by accident because its offensive arm was full and didn't need the excessive budget it had, and thus was reallocating that to defense.<br />
** One of the the advantages of having separate budgets that don't intersect too much is that we can add a new feature, like the Praetorian Guard for instance, and have that be a new thing that doesn't impact the rest of the AI's budget.<br />
*** Similarly, we can have certain features that have their own budget get turned off in the lobby, like wormhole invasions, without throwing off the rest of the budgeting for the AI.<br />
*** Up until now we have mostly enjoyed these advantages, but at the same time we consistently ran into some unintended consequences because of the donations between budgets winding up causing extra-beefy spends "out of nowhere" in some cases.<br />
** The new solution is very much like what AI War Classic used: if there is a case where a donation would have happened between budgets, then instead it just loses half of the budget it would have spent and waits to later think about spending it again.<br />
*** Thus in our hunter fleet example, it won't stay in a situation of "max money, instant respend and respec" at all times if it is truly maxed out, but it also won't beef up the defenses more than the AI type designer was expecting.<br />
** At present, these changes just cover the hunter, warden, and praetorian guard fleets.<br />
** Thanks to Puffin for again raising a lot of these points.<br />
<br />
* Previously, if you had wormhole invasions disabled, or waves were not allowed, or reconquest waves were not enabled, then the budget from those things were given to the reinforcements instead.<br />
** This is counter to what we actually want, these days. Those other features are meant to be something you can turn off, and they just make the game easier if you do. The fact that they were rolling over their income into reinforcements on the other AI planets is highly undesirable and no longer happens.<br />
** Thanks to Puffin for finding this particular case of donation.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix several problems with the 'flush units from reinforcement points' code that was causing it to be over-responsive<br />
** Thanks to SortYa for reporting<br />
<br />
* Renamed the "id" field on Fireteams to be FireteamID, and made it a get-only property rather than a naked variable.<br />
** This way we can make sure that it is not accidentally being set when we don't expect (it was not).<br />
** There is now a SetFireTeamID() method that is used for actually changing the ID, and it can have extra instrumentation in there as needed, if needed. At the moment it's good.<br />
<br />
* Also made the constructor for Fireteam private, so that it can't be called directly from other classes.<br />
** There is instead now a public static CreateNewWithIDFromList() factory method on Fireteam which should be used, and which ensures that it's not possible to forget to assign the FireTeamID when initializing a new Fireteam.<br />
** As with the other change, we found no errors in the code, but we are keeping the changes partly to make fireteams that little bit more accident-proof both in terms of our own future code, and modder code.<br />
<br />
* Fixed a line that was missing where during fireteam deserialization we were not actually assigning the fireteam id to the fireteam. This has been present since September 3rd, when we were overhauling a lot of the externaldata and how it is read in.<br />
** This was particularly tricky to find, because the data was being read in properly, and so the serialization logs all showed things properly as did the deserialization logs. However, since nothing was done with the read-in ID, it then would have the game behave improperly and the NEXT time that serialization happened it would write -1 for all the fireteam IDs that it had previously deserialized, which was the first sign in data of something being wrong.<br />
** Anyhow, this was causing the hunter and other factions to be notably stupid for a few minutes after loading any savegame, but is now fixed.<br />
** Thanks to Badger for reporting.<br />
<br />
* The tooltip for the 'Hack Dyson For Ships' hack now reminds the player it will antagonize the dyson for a while<br />
** Thanks to TechSY730 for reminding me<br />
<br />
* ArcenLessLinkedList and ArcenOverLinkedList have both been updated to be a bit more threadsafe by making it so that when items are removed from them, they can't have errors based on being aske to remove themselves twice.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* Fixed a whole raft of potential cross-threading errors that could happen inside HandleShipToShipLinesIfAny() in various rare cases.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* Fixed a number of possible places where sync errors between the host and client in multiplayer could lead to errors on the client in GameCommand_UnitSetCommands.<br />
** Also put in more instrumentation so that if we get future errors in this area, we will know more precisely where they are.<br />
** Also put in protections so that if one unit does get an error, it will give a harmless popup and then move on with life, versus corrupting a bunch of units' orders after that.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Fixed an issue where AI Eyes were once again flipping back and forth between alerted and non-alerted status.<br />
** This was causing duplicates of them in multiplayer, as well as making them un-targetable in single-player.<br />
** Thanks to Ovalcircle and Arides for reporting.<br />
<br />
* Fixed an exception that could happen in the warden fleet when ships die, particularly in multiplayer.<br />
** Ditto astro trains.<br />
** Ditto devourer.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
* Improved the logging of exceptions from when things die related to the dark spire. Also, it should just carry on with the game rather than stalling many more things.<br />
** Ditto with the human factions.<br />
** Double ditto macrophage.<br />
** Ditto NP faction from DLC2.<br />
** Ditto ZM faction from DLC2.<br />
** Ditto the Zenith Trader.<br />
** Thanks to OzoneGrif for reporting.<br />
<br />
== Version 2.603 Nanocaust And Civvies Strike Back ==<br />
(Released September 29th, 2020)<br />
<br />
* Add a Tip of the Day to remind players about holding R when hovering units to show strengths/weaknesses<br />
<br />
* When player ships are being constructed by factories to join fleets, those ships previously would ALWAYS come out un-stacked... and if they needed to stack, then they would explode and stack themselves shortly thereafter.<br />
** Now the game automatically stacks them from the start, when needed, and does so in a really efficient fashion with as small of stacks as possible spread out as much as possible.<br />
** This works both when ships are loaded in a transport and when they are outside of a transport.<br />
** This helps performance, multiplayer sync, and also makes things a lot less confusing for new players in particular (but avoids visual clutter for everyone).<br />
** Thanks to UncleYar for suggesting.<br />
<br />
* Fix a bug where Hunter fleet ships were picking really bad planets to lurk on. <br />
** Reported by NRSirLimbo without a save; debugged using a save from Suzera<br />
<br />
=== Included Mod Updates: Civilian Industries Working Again ===<br />
<br />
* Updated Civilian Industries for the latest builds.<br />
** Single Player looks to be working fine.<br />
** Your Civilians will oddly request an exceptionally large number of cargo ships as the game begins, but they eventually calm down.<br />
** Multi Player has a few odd bugs here and there, but appears to also be working.<br />
*** The main thing that seems to still occur are instances of the game being unable to find ExternalData at points. I (StarKelp) am still working to hunt these down, but it has been out of commission for long enough. No reason to hold off the single player compatible version for the multiplayer optimized version.<br />
<br />
=== Nanocaust Buffs ===<br />
<br />
* At the moment, many ship types cannot be Nanocausted; AI Golems, Scourge units, units with zombifying/nanocausting weapons, etc. <br />
** Now when the Nanocaust kills (most) non-nanocaustable ships, they get a new Nanocaust ship instead. The Lore is that the Nanocaust can transform these units into new ships, instead of just taking over the existing ships. This doesn't apply to Players, Dyson or Dark Spire for balance reasons, and certain individual ship lines might be prevented as well.<br />
*** Fleetship-level units transform into Husks, melee units with engine stunners<br />
*** Guardian-level units transform into Ghouls, which have an AOE acid weapon<br />
*** Dire-Guardian level units transform into Liches, which have Deathgrip (tractors, and guns that do extra damage to tractored units) <br />
<br />
* Also when the Nanocaust kills an AI turret (not a turret owned by a player or modded faction), it generates a weak turret of its own.<br />
<br />
* These changes are intended as a nice buff to the Nanocaust, since the Nanocaust is feeling really lackluster these days. It would be good to bring it back to "terrifying" <br />
<br />
* These changes are currently locked behind an opt-in Setting in the "Game" section so people can give balance feedback before I unleash it on everyone. This setting is not multiplayer friendly.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed an exception that was happening in new games with the fallen spire on, where the spire relic was having trouble seeding the very first time. Not sure if this is new in this version or if a very recent thing.<br />
<br />
* Fixed a "CalculateSpeed exception" that could happen on ships in general in thread race conditions, but particularly on multiplayer clients.<br />
** Thanks to Tzarro and narwhalofages for reporting.<br />
<br />
* Fixed an exception that could happen if you were viewing the escape menu while receiving certain data at just the wrong time as a multiplayer client.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Put in a lot of extra instrumentation into shot deserialization to make it less likely for there to be any errors in that, and/or to find out where errors are if any happen.<br />
** Also put in some protection against the time-based-pools having spurious nulls in them for whatever reason.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Fixed an exception that could happen in GetLocalPlayerFactionOrNull() in some instances, including apparently during game startup if your mouse cursor was in just the wrong position.<br />
** Thanks to zeusalmighty for reporting.<br />
<br />
* Fixed a couple of exceptions that could happen in GroupAllowedToSpawnOnPlanet() after a failed savegame load in particular.<br />
** Thanks to zeusalmighty for reporting.<br />
<br />
* Fixed the Damage Modifiers MyHullPercentageMissing and MyShieldPercentageMissing not referring to "my" current hull/shield percentage but to the target's.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Redid a number of the entity hover tooltip pieces of code in order to make it so that there are a number of exceptions that are not possible to have happen anymore. Most of these are related to the orders collection, or the next order of the entity.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* The tooltip for AI Eyes that are alerted now says "You do not have too many units on this planet, so this unit will probably stop being alerted before long." rather than having a negative number when you no longer are alerting an eye.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Put in a bunch more instrumentation of entity system steps to avoid potential errors there.<br />
<br />
* Also found another place where there were apparently nulls getting into the time-based pools for shots and fixed that.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* The major cause of "Unable to render visuals for 3.01s, because of:" was some timing issues that really should not have been happening in the first place, but they kind of compound display strangeness when it did happen.<br />
** These messages should no longer show, and so far as we can tell it should let things continue working appropriately.<br />
** Thanks to Tzarro and narwhalofages for reporting an excessive number of these happening for them in multiplayer in particular.<br />
<br />
* UpdateVisualObj() will no longer ever complain about PlanetFaction being null. This is an indication that a ship is dying or moving between planets, and so just silently returning and moving on with life is the appropriate course of action. This could happen in single player or on multiplayer hosts or clients.<br />
<br />
* Combat Engineers that were assigned to a battlestation or citadel would not construct properly in prior versions of the game. They still won't, but they will no longer be assigned to those (they are meant for support fleets only).<br />
** In new savegames started this version, anyplace that you would have encountered combat engineers on a battlestation or citadel, you will now instead see Interplanetary Engineers.<br />
** These are the same as regular engineers, but are able to move between planets. They also have the extra health and shields of a combat engineer.<br />
** These are built from the sidebar like regular engineers.<br />
** Thanks to CRCGamer and Mckloshiv for reporting, and Puffin for figuring out what was going on.<br />
<br />
== Version 2.602 Transports Fixed In Multiplayer ==<br />
(Released September 28th, 2020)<br />
<br />
* Fixed a bug in multiplayer where transported ships were being doubled on the client every second or so.<br />
** This was causing all sorts of issues ranging from brownouts flipping on and off, to a memory leak and performance degradation.<br />
** If nobody was transporting ships, or transporting ships for very long, then this problem would solve itself. This is how Suzara and Ipsum were able to win the first complete game against the AI in multiplayer for this game, where others were hitting a wall a bit sooner.<br />
** Thanks to lots of folks for reporting, including Puffin, OzoneGrif, Burner, Democracy, jradishurr, and potentially others.<br />
<br />
* Split out the spire relic transformation code into its own sub-method, ConvertRelicIntoCity().<br />
** Fixed an exception that was very likely to happen in there (amazed it did not happen more frequently) where we were using the wrong index to search into the SpireCities array.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
== Version 2.601 Savegame Hotfix ==<br />
(Released September 26th, 2020)<br />
<br />
'''Please note: this was supposed to go out late on the 25th, but accidentally did not go out for the entire next day. Apologies! We thought we had this out much faster than that.'''<br />
<br />
* Fixed a stupid one-line typo that snuck in at the very end of testing the last release, which broke all savegames in 2.600.<br />
** The bad news is that this is an error with the save process, not the load process, so those savegames are just toast. :/<br />
** Thanks to TechSY730 and Ovalcircle for reporting.<br />
<br />
== Version 2.600 Multiplayer Alpha Full Announcement==<br />
(Released September 25th, 2020)<br />
<br />
* Fixed a bug where melee units given a load-into-transport order would keep trying to go back to their remembered melee anchor spot.<br />
** Thanks to Isiel, crawlers, fwiffoforce, and TechSY730 for reporting.<br />
<br />
* Hopefully make eyes stay visible through transformation on Explored planets. Otherwise if another faction triggered the eye you would lose vision of it until you looked at the planet again.<br />
** Thanks to giftgruen for reporting.<br />
<br />
* Tweaks to hovertext for units with multiple wormhole movements queued<br />
** If at the planet view, it will say "finalDestination via nextDestination" if you have the tooltips on Full<br />
** If hovering at the galaxy view, it will always show the wormhole orders (if any) to tell you where the ship is going.<br />
*** From a discussion started by Tzarro<br />
<br />
=== Multiplayer Work ===<br />
<br />
* Fixed two deserialization issues with factions that would mainly come up during multiplayer, where the hacking history and speed groups could lead to deserialization errors.<br />
** Thanks to Suzera and Ipsum for reporting.<br />
<br />
* Added a new ListExtensions class in ArcenUniversal, which adds a new RemoveEndEntriesWhileCountLargerThan() method to the List<> class.<br />
** This is something that can be centralized as well as having a limiter to make sure that the max count is not negative.<br />
<br />
* Fixed yet another typo in the factions sync code where it could mess up on the hacking history.<br />
** Thanks to Suzera and Ipsum for reporting.<br />
<br />
* Previously if you tried to load a savegame into multiplayer as a host, but your profile name was not in that game, then it would give you the proper error message but also put you into a very broken half-main-menu-half-game state. Now it just keeps you on the main menu properly.<br />
<br />
* GetLocalPlayerFactionOrNull() now actually returns null, rather than the "first found player faction" if you are in any form of multiplayer.<br />
<br />
* Fixed an even larger bug in GetLocalPlayerFactionOrNull() where it was looking by the index of player accounts, rather than the actual ControlledByPlayerAccounts_DuringGame list. This was going to be problematic for a whole host of reasons.<br />
<br />
* A new GetIsCurrentlyInSpectatorMode() is now on Engine_AIW2, and also can be called via IGameSpecificEngine from Arcen Universal.<br />
** Also added GetFullListOfPlayerAccounts() onto these, which can give you a full list of the player slots that are there and what their status is (host, already full, spectator, etc).<br />
<br />
* Added a new GetFirstFactionControlledByPlayerOrNull(), which lets us find the first faction (hopefully there is only one) assigned to a player account, regardless if there are many of them or not.<br />
<br />
* When you connect fresh as a client to a multiplayer game, it now logs a different message if you are attached to a faction or if you are a spectator.<br />
** If it's starting the world for real, such as loading into the game after being in the lobby, or joining a savegame in progress, or just re-joining a game in general, it now also does a popup telling you that you are in spectator mode.<br />
<br />
* For some reason, a player joining an MP game in progress with a username not assigned to any faction was still being put in charge of a faction,<br />
** So we are now writing a full list of all the accounts in the game when a client joins into their client log.<br />
** This will likely be useful in general in the future, to avoid confusion.<br />
** But it turns out that the host was being WAY too free with how it was trying to match incoming clients to usernames. Essentially it was giving the first non-taken spot to whoever joined in if there was a name mismatch, which was intentional logic for some reason but definitely not what we wanted to have happen.<br />
*** Now the host properly creates a new account for the incoming profile and goes from there. The lack of this may have been substantially hampering three-plus-player games in at least some cases prior to now.<br />
<br />
* When you are in spectator mode, all of the resource slots in the top bar now show up as empty, except for the metal line, which shows "Specator Mode."<br />
** Looks like a lot of spectator mode works just fine, as far as we can tell from a quick look around.<br />
<br />
* Added a bool GetInSetupPhase() that we can read in Arcen Universal.<br />
** And added a RegenerateWorldImmediately() that can be called from Arcen Universal.<br />
<br />
* Since some other changes in these internal builds, new players to the lobby were coming in as spectators... sort of. Basically until the map was regenerated.<br />
** Prior to this build, they probably could not see their starting planet properly until the map was regenerated.<br />
** Now it regenerates the map automatically before bothering to send it to the client, and thus gives them the full info from the start, and without them being in spectator mode wrongly.<br />
** This MAY open up a slight window where if two clients try to connect within something like 400ms of one another, the second client might get an error and have to try again. Not sure 100% on that.<br />
<br />
* A number of scary-looking-but-harmless error messages that would happen on clients and hosts when they disconnect from one another should probably now still happen but in a less scary-looking fashion. We'll work on making those not happen at all.<br />
<br />
* Fixed an issue with how the scourge were being initialized that was causing them to throw errors constantly on clients in multiplayer.<br />
** Thanks to Badger for pointing us to how to fix this.<br />
<br />
* Fixed a minor issue with "Ship syncs sent" always being zero on the host.<br />
<br />
* SecondsSinceBrownout is no longer synced via the periodic-sync-correction for factions, since that was probably messing with things on the client.<br />
** Additionally, brownout messages will never be shown except for the actual player who is in a brownout.<br />
<br />
* QueueChatMessageOrCommand() now properly handles the ChatType.ShowLocallyOnly. This was never fully implemented for multiplayer purposes, it seems.<br />
** This also now only writes to the "MomentaryDisplayLog", and does not clutter up the long-term chat log even in single-player.<br />
** This means that brownout notices, "can't build there" notices, and similar don't go in the way of the chat from the AI or other informational bits.<br />
<br />
* Between the above two items, this should be a solution to the excessive brownout notices reported by Puffin, Democracy, Suzera, Ipsum, and perhaps others.<br />
<br />
* LocalMomentaryDisplayLog has been moved off of the world object and onto Engine_Universal.<br />
** This keeps it from being wiped out whenever new world sync data is sent in, which in turn keeps client-side chat in the lobby from disappearing when map changes are made in the lobby.<br />
** Did add in code to make this still properly clear when you leave a game and go back to the main menu, though.<br />
** Thanks to Puffin for reporting.<br />
<br />
* _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient has been changed from 3 to 5, which means that the server will still keep giving orders even if it is 500ms ahead of the client.<br />
** This lag in the client is what was leading to a lot of the command-lag that was client-side only, but it's also the sort of thing that makes the network connection volatility more of a factor.<br />
** Increasing this number on its own gives us more leeway, but ultimately doesn't do anything to help the client catch up.<br />
<br />
* Also reduced the _SyncMessageFromClientToServerInterval_Frames_InMultiplayer and _BatchMessageFromServerToClientInterval_Frames_InMultiplayer from 2 each to 1.<br />
** This helps to reduce the command lag that was on the client, and the network bandwidth that we're dealing with here is absolutely fine.<br />
<br />
* Also put in a "catch up" period on the host, where if the client winds up being 500ms behind, it waits until it catches up and then proceeds after that.<br />
** This is better than the prior method, where it just waited until it was no longer 300ms behind, which meant that there was a constant 200-300ms delay on the client, and it was always at imminent risk of being too far behind.<br />
** This almost completely eliminates the "waiting for client/host" messages in our test environment, but the movement of ships on the client is still jerky and we need to work on that.<br />
** There is still excessive input lag on the client, but there's still one remaining thing to handle with the client.<br />
<br />
* GetCurrentFrameFrequencyMulitplier() has been updated so that if the client detects that it is falling behind, it starts speeding itself up in its frame processing.<br />
** This puts extra load on the client CPU, but usually only temporarily, and probably on frames that were more or less already dead air already (time where it would have just been waiting for the next sim cycle to start).<br />
** This adaptive processing plays extremely well with our multi-tiered simulation and visual playback layers, and winds up more or less eliminating the lag spikes.<br />
<br />
* However, what we DID find was that it was often the case that the clients could get a bit ahead of the host, simply because the host is still waiting for sync confirmation from the clients, which is not the best.<br />
** Another wave of changes will be related to dealing with that in just a moment.<br />
<br />
* Since the client is now adaptively able to catch up to the host, we are just changing _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient to an extreme 10, which is 2 seconds of time.<br />
** This basically will stop things when there is a client that is syncing the whole world or something along those lines, but at no other times.<br />
<br />
* We also then got rid of the new useStrictFramesWhileClientsCatchUp that we added, since the clients are now responsible for catching themselves up.<br />
** We would have gotten rid of the _MaxNumberOfFramesServerIsAllowedToGetAheadOfClient entirely, but then the long initial syncs of the clients getting in would have messed things up.<br />
** It's possible we may revisit that concept and handle those giant syncs in a different fashion.<br />
<br />
* On the client, it was still possible to be seeing little "waiting on host" messages popping by, which was quite irritating. Those now only show if it would be more than 1 second that they would last there.<br />
** There's still some choppiness in the movement of units, but we'll work on smoothing that out in the future. For now, the simulation speed stays where it should be, and it's just a bit of ships moving a bit too fast and then too slow as things try to correct themselves on the client.<br />
<br />
* Fixed a bug that could affect multiplayer sync in a variety of ways with index out of range exceptions because of the serialization gates for each PKID type not being updated before certain types of sync activities. Those are now explicitly synced before those kinds of messages, and require a "whopping" (note sarcasm) 12 bytes to handle.<br />
<br />
== Version 2.511 "Last Lobby Settings" Robustness ==<br />
(Released September 24th, 2020)<br />
<br />
* Fixed literally a few hundred more places that the center color and trim color were being referred to by other names.<br />
** This doesn't fix the outstanding issue with the player trim being set to the center color, but maybe it will help us find it.<br />
<br />
* Found and fixed a really annoying case where player starting faction colors were still having the trim set to be the center color. Instrumentation for the win.<br />
** Thanks to folks for letting us know that was still there.<br />
<br />
* Fixed another seemingly-rare exception that could happen inside DoForSelected() when there was a lot of cross-threading competition.<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* If you have serialization logging enabled, then now when the lobby writes out its "last settings" for savegames, it will write to the file WorldSerialization_LastSettings.txt<br />
** We were seeing some strange issues with only 92KB saves being written there, without properly being able to be loaded back in, in our internal build.<br />
** Loading into the lobby and then exiting immediately now lets you compare WorldSerialization_LastSettings.txt and WorldDeserialization.txt.<br />
<br />
* The world save method now takes a bool IsForLastSettings parameter, which lets us strip out yet some more data from the last settings.<br />
** In particular, this lets us forget what expansions or mods you had installed last time, so if you were changing that it will hopefully still load your settings properly.<br />
<br />
* When savegames fail to load from the "last lobby settings" file, it's supposed to just give you a blank fresh copy of the lobby, which it has been doing and still will do.<br />
** But now it also logs some errors silently to the log, so we can see what is happening if that is of interest.<br />
<br />
* The stripped-down lobby settings files are definitely by design, but they were dying in SetGuardPostAndCommandPlacerFromPlanetStats(), which is no longer called when loading them (as GetCurrentDefensePlacer() is no longer called, too).<br />
** This saves time on map generation in general, in addition to fixing the ability for last lobby settings to load.<br />
** The nice thing is that the last lobby settings are sometimes as small as 92KB instead of 1.5MB, but it just depends on when you were saving it. Exiting out of the lobby via the quit button gives a very different result from it saving after you go into a game from the lobby, when they should be identical or close.<br />
<br />
* When saving for the "last settings" for the lobby, the "externaldata" is no longer saved at all.<br />
** The details of PermanentSerializationIndicesForThisWorld are also not saved, which makes us have to be extra vigilant with SerializeByIndex... but on the plus side, it should throw errors immediately on game start from the lobby when we mess that up.<br />
*** AICounterattackForces on planets no longer saves in the "last settings" path, since this would break (and is useless).<br />
*** Same with Player_AddedToCommandStation_Permanent and Player_AddedToCommandStation_Current on the World.<br />
*** Also same for the ChatLog, journal history, and fleets on the world.<br />
*** Also for TechUpgrades, FreeTechUpgrades, SpeedGroups, HackingHistory, TechHistory, on factions.<br />
*** Also for the entities of all types on planetfactions.<br />
** So far this seems to properly do the job of getting you into the game faster, and it SHOULD prevent issues with "my last settings were from having three mods on, but now I disabled those mods and want to load a savegame and it just throws me to the default settings."<br />
*** Worst case, it should just throw you to the default settings like before in these cases, but hopefully that happens at least a lot less frequently, if at all, now.<br />
<br />
* In the event that the "last settings" file is unrecoverably messed up (probably from trying to load the data from a mod that is not on at present), then it no longer has the chance of throwing a bunch of errors when you go into the lobby. Instead it logs a couple of errors silently to your log, and gives you a fresh lobby with default settings.<br />
** The other changes in this release to make it less likely for "last settings" files to be unrecoverably bad are the second part of this solution, but there's always some edge cases (or suitably old data) that we can't work around.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Version 2.510 Astro Train Safety Training ==<br />
(Released September 23rd, 2020)<br />
<br />
* Fix a bug where games with astro trains would crash<br />
** Thanks to CRCGamer for the bug report<br />
<br />
* Some additional improvements toward helping hunter fleet ships not suicide<br />
** Thanks to a save from Burner that let me reproduce this<br />
<br />
* Fix several typos in the game lobby/settings.<br />
** Thanks to Fenrakk101 for reporting<br />
<br />
* Hacking a conquest mode VG will cause it to transform into a regular VG<br />
** Thanks to crawlers for the suggestion<br />
<br />
* Fix a bug where the AI was not sending reconquest waves to unexplored planets<br />
** Thanks to Burner for reporting<br />
<br />
* Over the years, internally in our code we've had a variety of different terminologies for the "center color" for a player faction, which is sometimes the "main color" or "text color" or other things, and the "trim color" or "border color" that goes around the edges.<br />
** Apparently this has led to an error somewhere where we are inverting the main and border colors, so we're taking this chance to standardize all of the naming since it was something we were clearly making an error somewhere in, but couldn't see it in the code.<br />
** Now these are universally in the code referred to as the "faction center color" and "faction trim color".<br />
<br />
* As part of the above refactor, found a spot in GetDefaultFactionConfigurations() where we were assigning the player's trim color to also be their main color.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Version 2.509 Melee, Stacks, And Fireteams ==<br />
(Released September 22nd, 2020)<br />
<br />
* Fixed missing descriptions for the Damage modifiers of TargetHullPercentageMissing, MyHullPercentageMissing, TargetShieldPercentageMissing and MyShieldPercentageMissing if not used in combination with the MultiplesOf comparison type.<br />
* Instead this was displaying Unknown DamageModifierBasedOn.TheModifierName twice in the tooltip.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* Fix a problem introduced recently by my hunter fleet performance improvements that was causing the Hunter Fleet to just sit around<br />
** Thanks to a number of people for pointing this out, including ArnaudB, CRCGamer and Minotaar<br />
<br />
* Tweak the journal messages about exogalactic war front units<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Fix a very longstanding bug with fireteam histories, where they would report the planets they were lurking on incorrectly<br />
** This won't apply to previously existing histories, just new histories<br />
** Thanks to a save game from Minotaar for making this really obvious to me<br />
<br />
* Make it harder for players to trigger exogalactic war units without allied factions<br />
** Several people have had thoughts about this<br />
<br />
* Some buffs to the stronger astro train variants<br />
** Thanks to crawlers for requesting<br />
<br />
* Tweak the stacking/splitting code to make it harder for ships to decide to stack and split themselves over and over<br />
** Reported by Gott365 and TechSY730 for reporting<br />
<br />
* Fixed some issues with the new-ish melee unit behavior of flying out to attack nearby enemies when otherwise idle:<br />
** Fixed a bug where a melee unit would go back to its prior location after a direct order from the player (like a normal move order).<br />
** Fixed a bug where a melee unit's memory of where to go back to after no targets were in range would persist across wormhole jumps (causing it to try to go to that location on the new planet, which doesn't make sense).<br />
** Fixed a bug where melee units wouldn't use their implicit attack-move behavior if their internal behavior flag had been changed away from default and then back. So new melee units would use the behavior, but ones that had been around for a while often would not.<br />
** Thanks to OzoneGrif for reports revealing these.<br />
<br />
=== Data Dump Improvements ===<br />
<br />
* Fixed a couple of problems that were leading "cmd:dump data tables" to actually crash the game rather than exporting things nicely. Sometimes the crashes were only intermittent, which was doubly "fun."<br />
** This obviously made this far less useful in terms of actually debugging anything!<br />
<br />
* In general with our data dumps, we've been using ObjectDumper in a customized fashion. But now that we're moving to use it in more places, we're customizing it even further and making it more efficient.<br />
** For the largest export, the GameEntityType, this makes the data go from 35.8MB down to 29.2MB<br />
** More importantly, it makes the data a lot more legible.<br />
** For all of the various lists and dictionaries and other collections, this also now gives us counts of how many items are in each one, which it did not do before.<br />
<br />
* Fixed a variety of other things that would be different in those exports on different machines, or at different runtimes, that thus would have been in the way of our log comparisons.<br />
<br />
* In our exports, a variety of cases of contents that would just have empty brackets now do not export the useless empty brackets. A good example is ArcenPoint, which was saying its coordinates and then four lines of empty brackets.<br />
** Additionally, a bunch of default values that would be "None" or "-1", or collections that are empty no longer export at all. This is consistent with things already not exporting that were 0 or false or an empty string.<br />
** This gets our GameEntityType down to 24.8MB, and even easier to read.<br />
<br />
* Fixed several places where the ExternalData was still keeping a parentobject reference on an object that was meant to be used by all the parents.<br />
** This then caused some of the calls in the mods and externaldata to need to slightly change again.<br />
*** Really this is just an easy search and replace for GetCollectionByPatternIndex() to have a first parameter of ParentObject now.<br />
<br />
* Added a new "dump external data" command:<br />
** This causes all computers involved in the current game (so not just the local machine in multiplayer) to immediately dump all their 'external data' from all entities (World, Factions, Planets, Player Accounts, and Ships) into the ExternalDataExports subfolder in the PlayerData on each machine. <br />
<br />
* Added a number of improvements to the dump logging, for attributes like: SkipWritingNullEntries, NotForDumpingWithDataTables, and NotForDumpingWithExternalData.<br />
** These help us control the way that dumping works, making for more readable and legible output.<br />
<br />
* For better exported data in general (both in terms of the external data dumps and the data table dumps):<br />
** We've now implemented to ToString() method on ArcenSparseLookupPair, Pair, RefPair, ThreeTuple, RefThreeTuple, FourTuple, and RefFourTuple.<br />
*** This lets them actually show whatever their contents are, rather than just the semi-gibberish of their outer type (which is also not informative in general).<br />
** Also implemented ToString() on DeathEffectType and DeathEffectType.OffenseTier, so that they actually show real data rather than just writing their names.<br />
** Also implemented ToString() on ArcenDynamicTableRow so that those say their InternalName rather than just what type of row they are.<br />
*** Of the many things this improves, you can now actually read which expansions or mods tables were modified by.<br />
** Also implemented ToString() on all of the various inheritors of IDeathEffectImplementation, to make the exports more brief and clear.<br />
*** Well, this one didn't actually make any difference, even with making ToString() a required thing for the interface to implement. Not sure exactly why this last one didn't work, but it's ok.<br />
<br />
* ArcenSparseLookup now implements ICollection, making itself render its contents properly in logs.<br />
** Both ArcenOverLinkedList and ArcenLessLinkedList now do the same.<br />
** Now all three of these expose IEnumerable, which lets them be iterated-over and render their contents in a sensible fashion too.<br />
** With the various changes here, we are back up to 28.8MB of data on the GameEntityTypeData export in the data tables export, but it's actually meaningful data that is using that space.<br />
<br />
* Added a new INeverDumped that can be used to make an entire class or struct not dump.<br />
<br />
* In all of our data dumps, when it is dumping lists and dictionaries and other collections it now gives some commentary after them that you can search for to look for problems:<br />
** If more than 1 million items, it will say BIGLIST-E.<br />
** If more than 100k items, it will say BIGLIST-D.<br />
** If more than 10k items, it will say BIGLIST-C.<br />
** If more than 1k items, it will say BIGLIST-B.<br />
** If more than 100 items, it will say BIGLIST-A.<br />
** This lets anyone use any standard text editor (Notepad++ is great) to search for either "BIGLIST" in general, or one of the larger-format ones.<br />
** If players in multiplayer suspect that there is a performance degradation on a client via a memory leak, then having anyone type "cmd:dump external data" and the client-who-seems-to-be-having-troubles search for BIGLIST-E and BIGLIST-D in particular in the resulting files should help find anything suspicious. Or people can send those exports to us to look at.<br />
** Quite aside from this, however, it lets us get a general idea of how much externaldata we are actually using, and what is attached where, which is useful for developers and modders anyway.<br />
<br />
==== How To Use The New Log Dumps To Help Find Multiplayer Errors ====<br />
<br />
* New explanations on how to use the log dumps for multiplayer debugging purposes are in here:<br />
** This one is less likely to be useful: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#cmd:dump_data_tables<br />
** Whereas this one is very likely to come up as something to check: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#cmd:dump_external_data<br />
<br />
== Version 2.508 Waverider ==<br />
(Released September 19th, 2020)<br />
<br />
* Fixed a couple of places in the metal flows tooltip where it was stating the left and right mouse buttons backwards. (There were three places in all, and we had only changed one of them).<br />
** Thanks to Daniexpert for reporting.<br />
<br />
* Fixed a rare exception that could happen inside GetControllingOrInfluencingFaction() when exiting the game either to the OS or to the main menu.<br />
<br />
* Fix a bug where waves were not spawning any units. This affected regular waves and hacking responses.<br />
** Thanks to weapon master, CRCGamer, DaniExpert, ArnaudB, Gott365 and probably others for reporting<br />
<br />
* The Zenith Trader no longer sells AIP-increasing black hole machines to the player<br />
** Thanks to TechSY730 for reporting<br />
<br />
* The Zenith Trader will no longer sell things to dead AI factions<br />
** Thanks to GreatYng for reporting<br />
<br />
* Really fix that Macrophage null reference in LRP bug that's been annoying badger<br />
<br />
* Some performance improvements for fireteams in general (and some extra improvements for hunters) in late game scenarios<br />
** Thanks to a giant save from crawlers for letting me see what was going on<br />
<br />
* When you see the name of a song in the Escape Menu, it should now be formatted in a more readable way. For example, it now shows "Waking To Darkness" instead of "WakingToDarkness"<br />
<br />
* Improve the text of several "You can't hack this because of...." messages<br />
** Thanks to GreatYng for reporting<br />
<br />
* The experimental "Astro trains get stronger after you kill some of them" code is now enabled for everyone, and the setting is removed<br />
** I've heard reports that it works okay<br />
<br />
* Allow the HRF to flush enemies from command stations and guard posts<br />
** Thanks to GreatYng for requesting<br />
<br />
* The "This faction has no allies, not even itself" message is cleared up; this was being triggered by dead AIs, usually after the civil war started<br />
** Thanks to a number of people for reporting<br />
<br />
=== Dark Spire Tweaks ===<br />
<br />
* Fix a bug that was preventing the Dark Spire from being suitably aggressive in late game situations<br />
** Thanks to crawlers and Gott365 for the bug reports<br />
<br />
* Other factions will now actively go after Dark Spire Conquest mode VGs<br />
** This should give some counterplay against the Dark Spire<br />
<br />
* To compensate for the fact that Conquest Mode VGs will be targeted more, they are also tankier<br />
<br />
* In conquest mode, the Dark Spire will get a bit more energy<br />
<br />
== Version 2.507 Bugfixes ==<br />
(Released September 16th, 2020)<br />
<br />
* Fix a bug where player-allied nanocausts that aren't allowed to kill command stations weren't properly expanding. Add a journal entry to point out to the player that this leaves their allied nanocaust vulnerable<br />
** Pointed out to me on discord<br />
<br />
* Fix a bug where the render vengeance generator hack wasn't completing<br />
** Thanks to a number of people for reporting, including jradishurr, Magiik and Gott365<br />
<br />
* Fixed several cases where cross-threading issues could lead to some issues in the selected-ships counter.<br />
** Thanks to MasterGeese and GreatYng for reporting.<br />
<br />
* Fixed several cross-threading bugs that could happen in GetIsWithinRangeOf() or GetIsWithinRangeOf_VeryBasicCheckOnly().<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Fixed a bug introduced in the prior build that made it impossible to save most games that had outguard in them (all of them...?), and probably was messing with initial multiplayer sync, too. This was not seeming to affect every last save, but nonetheless was not good.<br />
** Thanks to Badger for reporting.<br />
<br />
* The "long range planning" code for the Macrophage now includes a lot more instrumentation for more detailed error messages. We started having some sort of error in at least some games starting the last release.<br />
** But after putting in the instrumentation (and having fixed the outguard serialization bug that also manifested in the same savegame), we no longer can duplicate the problem. So for now there's nothing more to do, but if it comes up again we'll at least know where it is.<br />
** Thanks to Badger for reporting.<br />
<br />
== Beta 2.506 ExternalData Overhaul Two ==<br />
(Released September 15th, 2020)<br />
<br />
'''This is kind of a nasty one, in that we're fixing a ton of things but potentially also breaking more things. External code-based mods are definitely broken again (sigh). But a bunch of things that were question marks for multiplayer are either now working properly for the first time (a few dozens of things), or are now verified-correct (even more dozens of things). So we're dropping back to beta briefly, to let people test things and let us know if there are any bugs that make this unplayable for some reason. Once folks have been through it sufficiently, we'll move back to the non-beta branch.'''<br />
<br />
* Previously, the dark spire ships that you could hack for had a starting mark level of X, and a max mark level of 4. Now they all start at mark 1 and level up like normal, but have a max mark level of 7 (because why not).<br />
** Essentially, tech unlocks for players probably did not work terribly well when the starting mark level of a player unit is greater than 1. And having a low mark cap on top of that can be frustrating for folks.<br />
** Specter used to start at mark3, now is 1.<br />
** Phantom was already mark1 at the start, but still is.<br />
** Okay, wraith was already mark1 at the start, and still is.<br />
** Anyhow, the level caps were a big part of what was messing with people, probably.<br />
** Thanks to crawlers and CRCGamer for reporting.<br />
<br />
* Fixed a potential nullref that could happen in CheckForInternalShipDeployment_DroneProducers_FromSimBGThread(), probably more likely on multiplayer clients than elsewhere, but definitely possible anywhere.<br />
** Thanks to Puffin for reporting.<br />
<br />
* Fixed a strange capitalization issue in the logging for faction deserialization where MinFIreteam and MaxFIreteam would thus show up as diffs.<br />
** Thanks to Puffin for the report.<br />
<br />
* New debugging command added: <code>dump data tables</code><br />
** This causes all computers involved in the current game (so not just the local machine in multiplayer) to immediately dump all their data in the same way that happens from "Dump All Data Tables After Load" from the debug section of the settings menu. <br />
** ''Please be advised that this will cause all of the computers involved in this game to freeze for something like 20-60 seconds, depending on their relative speeds, how many expansions and mods are installed, and so on. It's a good idea to warn people before you run this comment.'''<br />
** Aka, this writes a text file for each in-memory data table into a DataTableExports subfolder in the PlayerData folder. <br />
*** The purpose of this is mainly to use with diffing tools between one run of the game and another, to see what sort of data changes happened. If you are modding and made changes to some ships and want to see how those changes cascaded, this would be one way to do that. This is also a way for us to verify correctness when we make structural changes internally.<br />
*** In multiplayer, this can also be used to compare the contents of these folders between the host and various clients, to check for things that might be amiss thanks to mods or other local changes.<br />
*** To compare folders at a time, you'd need to share the contents of these folders between machines (zip and email, etc), and then run a folder-wide diffing tool like WinMerge to find any discrepancies.<br />
*** Lastly, if you're a mod author and concerned that your mod is adding to the data tables incorrectly over time, then you can use this to get snapshots of what those look like as you are playing. Normally this data should not be changing after the initial load of the application.<br />
** Never considered a cheat.<br />
<br />
=== Multiplayer And ExternalData Continued Improvements (Breaks Code-Style Mods Temporarily) ===<br />
<br />
* There are some issues with the data table dumps now actually dumping some game data.<br />
** To combat this, the ArcenOverLinkedList and ArcenLessLinkedList both no longer dump their firstItem and lastItem fields.<br />
** Hopefully we will still see the count of items in these, but that's really all we can do right now without getting into circular references by the very nature of these linked lists.<br />
<br />
* This also finally pushed us over the edge when it came to IArcenExternalDataPatternImplementation, and this is now becoming an ArcenExternalDataPatternImplementationBase abstract class that we can control a bit better in several different ways.<br />
** In general this will be a help for us with multiplayer sync, among other issues.<br />
** This class should never be directly inherited-from by things in External or mods, however.<br />
** Added a new ArcenExternalDataPatternImplementationBase_World, which is for use with things being attached to worlds.<br />
** And also a new ArcenExternalDataPatternImplementationBase_Faction, for things being attached to factions.<br />
** And a new ArcenExternalDataPatternImplementationBase_Squad for things being attached to ships.<br />
<br />
* Took this chance to fix a number of data structures that might not be multiplayer client-sync safe based on the fact that MP sync data might be missing and might need a catch-up:<br />
** AIReservesData (constructor updates, DeserializeExternalData updates).<br />
** Okay, 33 other classes needed the same update pattern, so we'll save you the list of going through all of those again.<br />
** Added a new ArcenExternalSubManagedData class, which all 34 of those classes now inherit from.<br />
*** This lets the increasingly-complex central logic from DeserializeExternalData be written only once, not 34 times.<br />
**** This is all handled, for the default case, via the new generic method DeserializeExternalDataAsArcenExternalSubManagedData().<br />
*** Also worth noting, we can no longer use constructors with arguments on this, because of how the logic is centralized. The default constructor is always called now, and then DeseerializeIntoSelf() is called after that if needed.<br />
**** This is doubly worth noting, since it makes sure that there are no cases where object initializations from the default constructor are not called.<br />
<br />
* While we are at it, we're marking the various lists and other collections as readonly in ArcenExternalSubManagedData-inheriting classes.<br />
** This helps us avoid ambiguity and extra code, and is a double reminder for us to review places where we could get into infinitely-expanding lists on multiplayer clients.<br />
*** Fixed the following infinite-expanding collections for multiplayer clients:<br />
**** The FinalComposition dictionary on PlannedWaves was going to infinitely expand while waves were incoming.<br />
*** Fixed the following "accidental data churn from throwing away collections on multiplayer clients":<br />
**** The DZPerUnitData ConversionList and ConversionBag.<br />
**** The metalByTier on DysonData.<br />
<br />
* Added a new ArcenExternalSubSubUnmanagedData abstract class for classes that is for the sub-data types that a few things use, like DarkSpirePerPlanet.<br />
** This adds some structure, but is not as fully managed as the main classes above it. These again help us to avoid some bad habits that can lead to memory leaks on clients.<br />
<br />
* Fixed a general cross-threading issue that could happen with Loci_ForUI in the dark spire. This could happen in single player or multiplayer, and we found it because of the new code rigor enforced by these new abstract classes.<br />
<br />
* The DeserializeDictionary utility method, and a few similar ones, no longer take their dictionaries as a ref parameter. That's now allowed syntactically for readonly dictionary fields, and it's not needed logically at all for dictionaries as a whole, which are reference objects and thus always passed by reference no matter what.<br />
** Same deal with ArcenRandomDrawBags, for the same reasons.<br />
** And same for some various working methods that were passing generic List<>s with ref explicit. It doesn't matter if the contents of the list are a value type, the list itself is still a reference type.<br />
<br />
* Fixed a client-only bug where certain things were being cleared incorrectly on the DLC2 "ZM" faction data object during faction sync, but now are not.<br />
** In that same faction, fixed another of the "ForUI" list cross-threading issues.<br />
<br />
* Added a ClearAndCopyFrom() method onto ArcenSparseLookup, which does what it says on the tin.<br />
** This is useful in places where we are no longer shuffling around sparse lookups by reference (think pointer), but instead are now keeping the lookups but needing to copy from one to another.<br />
** The need for this is pretty rare, but it's used in wave planning.<br />
<br />
* Discovered a rather dire issue from the last week or so, and have fixed it.<br />
** Essentially, the objects that previously inherited from IArcenExternalDataPatternImplementation (and now from a descendant of ArcenExternalDataPatternImplementationBase) are NOT UNIQUE per object.<br />
** So the fact that we were starting to store the ParentWorld and ParentSquad and so on on those was actually a major problem, and probably a source of some sort of random bugs in single player and multiplayer.<br />
** We were mostly saved by the fact that we ignored those properties and were using the Source object cast properly, which is what was supposed to happen.<br />
** But upon refactoring things, we ran into increasing problems with this. It has now been corrected, and this should hopefully also prevent us (or a modder) from making the same error in the future.<br />
<br />
* With the new way that we are using readonly for collections on the ArcenExternalSubManagedData and ArcenExternalSubSubUnmanagedData, we have to initialize all those collections properly in the constructor, which was not always happening before.<br />
** We now are just initializing them as part of their definition itself, which is easier to check for correctness and has the same end result and performance.<br />
** If we missed any of these, or heck if we made any typos in the many many other changes list above, then there will be errors when loading certain savegames or when during certain parts of gameplay.<br />
** We should be able to fix such issues very quickly, and for now we're not seeing any issues, but we'd definitely appreciate testers in both singleplayer and multiplayer.<br />
<br />
* It goes without saying, perhaps, that this breaks all of the code-style external mods again. We will probably break those a few more times in the coming weeks as we get things multiplayer-safe, and then will stop that.<br />
<br />
== Version 2.505 Multiplayer Alpha Starts, Take Two ==<br />
(Released September 14th, 2020)<br />
<br />
'''Let's try this again! This is one big reason we did a "soft launch" into MP alpha. If anyone is able to test tonight and let us know how it goes for you, then we will probably make the official "hey there's multiplayer alpha now!" posts tomorrow, unless new showstoppers are found. At this point there's the periodic minor "waiting for players" micro-hitching annoyance, but beyond that being a small thing, Chris was able to play for 18 minutes between two computers across Valve's network tonight. No permanent sync issues, no degradation in performance, nothing that seemed glaringly off. There will be more bugs, but the core stuff -- knock on wood -- seems to be working. [[:Category:AI_War_2:_All_About_Multiplayer#Selected_Short_Term_Todo_List|There's a good list of things that need to be done in the near term here]], and that's just in terms of general functionality, not MP-specific features.'''<br />
<br />
* Fixed a bug where "??? Name" was showing up incorrectly in the factions list in the prior build.<br />
** Thanks to Badger for finding the typo.<br />
<br />
=== Multiplayer Sync Initial Implementation Now Tests Out Initially Working ===<br />
<br />
* Followed several paths of code trying to fix the ship sync, but ultimately wound up reverting a lot of that code after we found the actual cause.<br />
<br />
* Found a one-line typo that was leading to infinite duplication of every fleet on the client every few seconds.<br />
** Essentially every fleet was trying to match to fleet 0, and never finding it, and then creating a new one.<br />
** This was leading to a really devastating amount of duplicate data, and confusing everything on the client.<br />
<br />
* Manually reviewed the code for all similar things, including factions and planets, and all of those seem good for now.<br />
<br />
* Discovered that it was possible for extra fleets to wind up on the client just hanging around after a full fleet sync. Those extras (usually were only one or two) now delete themselves.<br />
<br />
* The clients no longer automatically add 1000 to all of the PKIDs that they are syncing from the host. We welcome the extra conflicts at this point... maybe... as it will also lead to some sometimes-correct things that don't need to sync.<br />
** This was something we were doing as of a couple of versions ago in order to try to prevent things from fighting over the same dictionary spot.<br />
<br />
* At this point we have far fewer syncs needing to happen between the host and client, which is awesome.<br />
** The number of ships and fleets is consistent between the client and host, and the energy usage is also consistent, and so on (though energy usage may be misleading since that gets synced from the host as part of the ultra-frequent processing).<br />
** A bunch of ships are showing up as invisible on the client for whatever reason, we know for certain, but those ships that are showing up maintain sync properly.<br />
** There are still some extra ships in ship fleet lines on the client that should not be there, and may just be duplicate references to existing ships.<br />
** Overall the total stats on the number and size of messages sent and received on the clients and the server seem to be incorrect, although sub-parts are often correct.<br />
<br />
* The "Deletion Time!" header in the ship sync details log now only appears when there is actually something to delete, which is not all that frequently anymore.<br />
<br />
* Fixed a bug on the client and host in multiplayer where the total messages received, and the total bytes of them that were received, were far too low. A filter based on message type was incorrectly being applied to these overall counts, where no filter should have been applied.<br />
<br />
* Fixed the remainder of the network messages still not being properly logged, in size or number. There are two places where filters applied, and we missed the second one at first.<br />
<br />
* Fixed an issue where ships that were network-synced were properly added to fleets and the global registry, but NOT to the planet faction (and thus faction) registries. So they were showing up as invisible, despite syncing properly as of today.<br />
** Now the ships show up just fine!<br />
<br />
* Previously we had put some logic in place to not delete ships too fast on the client if they were not discussed by the host in a sync pass. But now that the sync passes are working, this is no longer needed (and in fact actively makes things look wrong for seconds at a time).<br />
** The game now does a much quicker job of removing these extras, and consequently there are not as frequently extra ships that should not exist in the fleet memberships sitting around.<br />
** It's worth noting that for 3ish seconds at a time right now, it is possible for these ships to hang around (but they only appear on the client, and can't be given any orders, which is confusing and annoying but a comparably minor thing and will be tamed soon when we improve how PKIDs are allocated so that fewer clashes happen.<br />
<br />
== Version 2.504 Clarity And Fair Play ==<br />
(Released September 14th, 2020)<br />
<br />
'''We're no longer on the beta branch, because we don't think that this will negatively affect the single player experience. However, multiplayer's alpha is still not ready to go. This build is focused on fixing things up to get things back working properly for single player (which of course also affects MP), and we'll be resuming work on getting MP ready now that this is out.'''<br />
<br />
* If a player-allied faction kills something that would grant rewards (science, hacking, metal), the game now sees if there were player ships on the planet too. If so then it grants the rewards to the strongest player on the planet.<br />
** This seems the path of least frustration for players<br />
** Thanks to Ymir for the bug report, and others for a spirited discussion on steam.<br />
<br />
=== Bugfixes ===<br />
<br />
* When placing wormholes on a planet, the game now makes an effort to make sure they aren't on top of eachother. In very rare cases, some map types could wind up with wormholes that basically overlapped eachother, which was very hard to work with.<br />
** Thanks to Mac for pointing this out.<br />
<br />
* Fixed a longstanding issue with the number of entities contained within a ship where it was showing much lower numbers than appropriate, because we were indexing into the wrong array of display numbers. Above 100 units, it should now show much more appropriate numbers.<br />
** Thanks to TechSY730 for the report that finally tipped us off to the potential cause of his strange area.<br />
<br />
* Fixed an issue that could cause exceptions in the target list sorting if ships died at just the wrong moment.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed a very unexpected bug that our recent extra-strict ExternalData checking logic let us find. Essentially it was somehow possible to get a second Praetorian Guard faction for a single AI, although we're not quite sure how. The game now actively clears those out when it is loading a savegame or settings as a template, to keep you from having double-strength PG forces for no apparent reason.<br />
** Thanks to Deathlymad and Metrekec for reporting, and for providing the savegame that let us practice testing and fixing the issue.<br />
<br />
* Fixed an exception that could happen at various times if the spire debris data was null when it was thinking about making notifications relating to them.<br />
** Thanks to jradishurr for reporting.<br />
<br />
* Fixed a minor visual error where it would say "ERROR: my FleetMembership is null!" if you were viewing a tooltip or popup window with a ship in it that had died. It now will say "This ship has died." instead, if the ship properly died (which is likely to be the case).<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Preventatively 'fixed' theoretically-possible-but-not-encountered bugs (that might not actually have been bugs in the end relating to the following, all based on the new ExternalData changes:<br />
** Winning a game and getting a superterminal achievement (probably not likely).<br />
** Exceptions in notifications about wormhole invasions (this one probably would have been hit eventually).<br />
** Exception in notification tooltip about spire debris (again was likely to be hit).<br />
** Exception in notification tooltip about instigators (very unlikely).<br />
** Two exceptions in notification tooltip about astro trains (somewhat likely).<br />
** Exception in notification tooltip about relic trains (unlikely except maybe for multiplayer client).<br />
** Exceptions in five tooltips for DLC2 (likely to be hit).<br />
** One other exception relating to DLC2.<br />
** Possible exception with the Shark B plot on.<br />
** Several possible exceptions in writing out the list of AI factions and their subtypes (most were very unlikely, except maybe in multiplayer on clients).<br />
<br />
* Fixed a pretty huge bug where if certain entities died to remains (rather than permadeath), they would give AIP every time they died to remains, but when the normal permadeath setting was on they gave no AIP. This was the opposite of our intention and has apparently been incorrect since July 23rd.<br />
** This meant that things like GCAs, etc, would not give their proper AIP on death.<br />
** Thanks to ParadoxSong, Strategic Sage, crawlers, Isiel, and Puffin for reporting and helping track this down.<br />
<br />
* Regular engineers are no longer part of the fleet membership selections for anything that you can get via battlestations or citadels. Instead, combat engineers are used for those cases.<br />
** This will not affect existing savegames, only new ones.<br />
** Thanks to ultamashot for the report.<br />
<br />
* On September 6, we added the following: "QoL tweak for repair. Any ships on a planet where you outnumber the enemies 10 to 1, or the enemies have less that .2 strength are eligible to be repaired immediately. The previous rule was 'Any ships on a planet without enemies'"<br />
** This now only applies to ships and structures of factions that are friendly to the humans. Any neutral or enemy factions will now use the old style of logic that existed prior to September 6th.<br />
** This prevents the AI and Exos in particular from developing invincible shields when they have overwhelming firepower against you, among some other unintended consequences.<br />
** Thanks to TechSY730, crawlers, and MasterGeese for reporting.<br />
<br />
=== Fireteam dynamic resizing ===<br />
<br />
* In the late game, powerful factions can have hundreds or thousands of fireteams, which can make LRP threads run very slowly.<br />
* Each faction using fireteams has some variables that control 'how large should my fireteams be'. <br />
* Now for every 50 fireteams a faction has, it will require future fireteams be larger 1.5x larger. If a faction starts losing fireteams, the size requirements will go back down<br />
** The end result is fewer but larger fireteams, which should be a nice performance boost. Note this won't really help existing games as much as it will help new games to never have that many fireteams at all. Applies to all factions that use fireteams except the Imperial Spire, since that ends the game quickly<br />
<br />
=== AI Difficulty Description Rewrites ===<br />
<br />
* The tooltip descriptions for AI difficulties have been updated after folks have given us indication that there was some confusion based on the old ones (particularly sometimes players felt bad for playing too low, or did not understand the true purpose of difficulty 10, etc):<br />
** Difficulty 1:<br />
*** Old: So easy it might be asleep.<br />
*** New: The AI is effectively dormant; this difficulty is good for practicing the game without any real opposition.<br />
** Difficulty 2:<br />
*** Old: Actively does stupid things.<br />
*** New: The AI will only utilize its most basic subroutines. Retaliation will be minimal in response to your efforts.<br />
** Difficulty 3:<br />
*** Old: Excellent if you're just wanting to mess around with no stress and you've never seen an RTS, ever, before.<br />
*** New: The AI is conscious, but will operate primarily in a reactive capacity. Most of your opposition will be in the form of defensive AI forces in enemy territory.<br />
** Difficulty 4:<br />
*** Old: If you're only vaguely familiar with RTS games, this might give you an interesting time. But bear in mind all the cool and clever tricks aren't remotely here for the AI yet.<br />
*** New: If you’re ready for a little push-back from the AI and some confrontation on the homefront, this will be a good introduction to some of the behavior you can expect from higher difficulties.<br />
** Difficulty 5:<br />
*** Old: If you're here for the first time, but know your way around RTS games, this isn't an awful place to start. The AI is partially brain-dead still, but it should give you an interesting time. But if the game seems too easy, you'll know why.<br />
*** New: The AI takes your presence a bit more seriously. You may find your attention split from time to time and will have to more carefully consider the repercussions of your choices and how the enemy will react to them. Ongoing reckless expansion on your part has the potential to incite a deadly response from AI.<br />
** Difficulty 6: <br />
*** Old: If you're solid at RTS games, then this is what would typically be considered 'Normal' for you... potentially. The AI doesn't have its full bag of tricks yet, but it's still pretty crafty and is starting to have some of its tricks. This difficulty is also great to use if you're really wanting to have the AI be there, but some other factions be the MAIN threat. This will keep the AI interesting but not on your back all the time.<br />
*** New: Against a Difficulty 6 opponent, your choices are really starting to matter. You will notice more devious tactics being used by the AI and will need to watch your back as you claim assets and territory. Other factions have the potential to be more threatening depending on how you set them up, but the AI will continually make its presence known.<br />
** Difficulty 7:<br />
*** Old: Players in the first game had a saying, that 'the real game starts at difficulty 7.' And while that is kind of... rude?... there is also some truth to that, in that the AI is finally fully unshackled. There are a few truly nasty things for the AI that you would still need to turn on in the AI Behaviors section of the Options tab if you really want full pain, but this is a fully competent AI. This is also the difficulty that Chris, the original developer of the games, plays at. It's fun and he can play in a relaxed fashion and not be super focused on every detail, but still win only about a third of the time playing that way. So if that gives you some measure. He plays most other RTS games on their max difficulty or close, not that that's always saying much.<br />
*** New: This is where the AI stops holding back and utilizes all of the strategies and resources at its disposal to try and keep you at bay as your power grows. Its economic power is still somewhat limited, and while you can still get away with being a bit of a nuisance early on, the enemy won't hesitate to put you down if you make yourself too much of a threat.<br />
** Difficulty 8:<br />
*** Old: This is the sweet spot for veteran players. The AI has all its tricks, and has a bit of a stronger economy and stronger responses, too. You COULD make the argument that the economy of the AI at difficulty 7 is a bit on the weak side, so it's not that this is a cheaty AI or something. For players who are really paying attention and managing all the small things and want to have a drag-out battle, this is the difficulty of choice. If Chris really wanted to white-knuckle it, he could probably maintain his 30% winning streak at this level. But he's not into that kind of stress. There's a good chance you're better at RTS games than he is, though, if you're a veteran in particular, so maybe that's not so much stress for you.<br />
*** New: If you take the fully-functional Difficulty 7 AI, provide it with a bit more fair allotment of assets, and make it more sensitive to your actions, this is where you end up. Ideal for veteran players really looking to test themselves.<br />
** Difficulty 9:<br />
*** Old: Are you super awesome at RTS games in general, and this one in particular? Difficulty 8 is just proving too passe? This keeps all the tricks from before, but cranks up the economy and some of the frequency with which the AI will harass you. You could argue that at this point it is getting to be slightly a 'cheating AI,' but frankly things are so lopsided it is hard to make that kind of distinction. If you're so much better than the average player at managing your empire, then... I guess this is kind of taking away that advantage that would otherwise let you roll the 'fair' AI? We get into murky waters here, but a subset of veteran players enjoy this difficulty, so here it is.<br />
*** New: Making for an exceptionally tough adversary, Difficulty 9 stacks the odds in favor of the AI. Armed with a robust economy, the enemy will be ruthless in their attacks and relentless in their harassment of your defenses. To overcome this challenge, you will always need to be on full alert to prevent the AI from exploiting any weakness in your strategy.<br />
** Difficulty 10:<br />
*** Old: This difficulty level is not meant to be fair. It's using all of the AI's legitimate tricks, and it has its economy and whatnot cranked up to 11. If you win against this level of AI, that's something that we traditionally consider 'a bug.' You are supposed to lose, every time. Please file a bug report with how you won so we can fix it. So why do we have this difficulty level? There are some players who are just THAT GOOD, and they spend their time trying to find weaknesses in the AI despite its unfair advantage. A lot of improvements to the AI have come about because of players on difficulty 10 telling us how they won. We usually adjust unit balance or AI logic in response to difficulty 10 victories, we don't just make difficulty 10 harder. That would defeat the point.<br />
*** New: Economically, the 'SuperCat' AI gets a substantially unfair advantage. Militarily, they still play fair but will be able to bring overwhelming force against you in most every situation, all the time. A subset of dedicated players enjoy this difficulty level, but it is not fun for most. Beating the SuperCat even once is considered a crowning achievement, and usually involves a player discovering an unbalanced tactic. If you find yourself in the enviable position of being able to have your name added to those who win a 'pure' difficulty 10 win, please file a bug report with any tips you have on how we can (legitimately) upgrade the AI to counter your winning strategy. This back-and-forth arms race between the players and the developers has led to some of the most interesting innovations for all levels of AI for the game (and its predecessor), and it is also a very specific style of brutal gauntlet that certain dedicated individuals enjoy throwing themselves into.<br />
** Thanks to Tzarro for writing the new descriptions for us, except for the new difficulty 10 description.<br />
<br />
== Beta 2.503 Multiplayer Not Quite Ready ==<br />
(Released September 11th, 2020)<br />
<br />
'''This remains on the beta branch in case there are more singleplayer issues. As far as multiplayer goes, things are not stable enough to do any real testing. There is an issue of some sort that causes fleets to infinitely multiply copies of themselves on the client, which leads to a lot of lag and other problems. There's also an issue with various ships syncing in and out of existence in funky ways, which essentially makes multiplayer unplayable. This is something that is going to take more hunting, but it's all one cluster of issues, and once it's resolved multiplayer should be pretty ready to go. Really glad we did a soft launch! It would have been awesome to have people able to play multiplayer over the weekend, but we're just not quite there at the moment. Hopefully in the first couple of days of next week we can figure this out, but for the moment our brains are fried. More to come soon!'''<br />
<br />
* There's now extra error handling in the "stage 3" faction logic, to keep that from ending the entire game when those happen. It reads:<br />
** DoPerSecondLogic_Stage3Main_OnMainThreadAndPartOfSim Error for faction [name] (index [a number]). Consider restarting the game, as many other things may now go wrong because of this first error. And please report this! Error: [error text]<br />
** This will probably solve things like paralysis counters not counting down when there are such errors, but you're still likely to have a strange time.<br />
** Thanks to StarKelp, Mac, and gigastar for reporting.<br />
<br />
* Fixed a bunch of places in notifications where it was still looking to the old locations for an out of date icon. We will have real icons in the future for those, but for now the placeholder will no longer throw an exception.<br />
** Thanks to jrad for reporting.<br />
<br />
* Fixed an exception that could happen when killing instigator bases, in the notification tooltip for them.<br />
** This is another regression... kind of... from the last few betas. This actually will make clients more robust in multiplayer, though, so it's better than just a straight regression fix.<br />
** Thanks to TechSY730 and jradishurr for reporting.<br />
<br />
* The Civilian Industries mod has been updated to be compatible with the new versions of the game.<br />
<br />
=== Multiplayer Ship Sync Fixes ===<br />
<br />
* Added a setting to the networking section of the settings menu: Log Human-Readable Ship Network Syncs To Disk<br />
** Only relevant on multiplayer clients, not the host. Will majorly slow the game down, but dumps a huge amount of networking info to the disk in the NetworkHumanReadablyShipSyncLog.txt file in the PlayerData folder. This gives a message for each ship that was changed or deleted and why that was done, as well as what planet it was on and who owned it. When syncs are doing funky things, this is a way to manually review it and find out why.<br />
** This required us putting in a LOT of extra code to handle log<br />
<br />
* The current sync cycle is now sent with the divergent data sets, hopefully leading to clients not deleting things they just fixed (because that was totally happening before. Logs are a magical thing.).<br />
<br />
* Discovered a major oversight in our sync code, where basically once something had been synced once it was then being synced every sync cycle forever after that.<br />
** This was a huge cause of lag for multiplayer, and made things disappear inappropriately, probably.<br />
** There are still other things wrong with the ship sync, though, that we can see in the new logs.<br />
<br />
* The sync code has been made more robust in general, now syncing the type of entities as well as what faction they belong to.<br />
** These are often incorrect, when there are catastrophic different uses of primary key IDs anyhow, so getting those right is a good thing.<br />
** It occurs to us that maybe this is overkill, since if these are wrong then probably the planet or at least the location would also be wrong? But... let's leave it in for now, and maybe make an option later for skipping it. It's not a lot of data to transmit or a lot of extra processing.<br />
<br />
* Fixed a couple of issues with reusing entities as different ship types, where it will now properly add or remove or reassign system types on them.<br />
<br />
* Fixed some issues with reusing entities during sync where they were not being added back to the central lookup of entities, leading to future syncs to fail on them forever.<br />
<br />
* Put in some logic to improve the number of loops before we remove something that isn't being synced properly, to make it based on the number of loop counts rather than the amount of time something has been alive (since things that have been alive for a while can get fully synced later).<br />
<br />
* Fixed some conflicts that could happen with entities in the central lookup on the client in multiplayer, if the order of registering and unregistering entities gets out of sync.<br />
<br />
* Intentionally desyncing the PKIDs of ships, wormholes, and fleets on clients compared to the host.<br />
** Trying to reuse entity IDs was often causing some notable problems, and they were rarely in sync as it was.<br />
** This forces a sync cycle for every new ship and fleet that is created, but makes conflicts on the client a lot less likely.<br />
** This may not be a good long-term solution, but a refactor to avoid the conflict space is potentially where we're at, honestly. That will take days, and add a lot of bugs temporarily, so it would be great to avoid it.<br />
<br />
* At the moment the game creates infinite extra fleets on the client, slowing it down progressively. This makes it effectively unplayable.<br />
** There are also about a thousand ships that it will routinely delete from the client, then re-add, then delete again. Also making things unplayable. Still looking into it, but this is likely to be a Monday thing, as this is not a simple matter.<br />
<br />
== Beta 2.502 Regression Fixes ==<br />
(Released September 11th, 2020)<br />
<br />
'''Note that this build is still in beta in order to let people have a chance to run into any more regressions that we may have introduced. So far none of the regressions have indicated any errors in older builds, which is a nice thing. Though in the process of making the prior beta build, we did fix a number of "useless extra data" things, so even if we don't find any new bugs that were older, these regressions were still worth it to ensure data accuracy. It is quite annoying in the short term, though, and we really appreciate the folks taking the time to test it out.'''<br />
<br />
* Add some new voice lines when the player is attacked by the Nanocaust<br />
<br />
* Hopefully Zenith Forcefield Generators will now return after being pushed<br />
** Thanks to GreatYng for reporting, and Puffin for reminding us of the fix<br />
<br />
* Fixed a bug from the last couple of builds where chat commands were failing in general.<br />
** Thanks to Magiik, MasterGeese, gigastar, and Richard333 for reporting.<br />
<br />
=== Fixes To Regressions From Prior Beta Build ===<br />
<br />
* Fixed a bug in the latest beta build that was causing new games to constantly error out with autosave data not being added properly.<br />
** This is one of those "externaldata is now more explicit" things, but this is an example of us choosing the wrong explicit option this time around.<br />
** Thanks to Puffin for reporting.<br />
<br />
* Fixed an exception that could happen when trying to generate notifications about AI reserves before their data was initialized. This was caused by the last beta, but is better to have it handled this new way (so, yay error, this time).<br />
<br />
* When there are errors in generating a galaxy, it now no longer lets you into the galaxy to play (since that leads to many random errors after the real one with the map not generating).<br />
** Random things might include lots of planets belonging to no one, among other things.<br />
<br />
* SeedStartingEntities_LaterEverythingElse during mapgen now has a lot of new exceptions it can throw if various data is missing that it is supposed to have.<br />
** Mostly these are related to the AI and its subfactions (hunter, warden, and PG), but there's also one for if risk analyzer data is missing.<br />
** Prior to the last beta, it seemed to have been just using blank data, although it's impossible to be sure. And in the last beta, it was throwing an exception.<br />
** We then tested all of the factions in the game and the first two DLC, and the only three types that threw exceptions in this area were the AI subfactions (hunter, warden, and PG).<br />
*** We could use more robust testing of the game starting with various factions and them having various settings, though, to make sure that it's all going across properly (this is just in single player, not even multiplayer).<br />
** Thanks to Puffin and jradishurr for reporting.<br />
<br />
* Fixed four typos in the last beta that were not properly having the "related AI and subfactions" properly reach for one another, which led to missing or misapplied settings on game start.<br />
** This then left the Praetorian Guard still not working properly, because they have no custom fields in the lobby and thus were never having a reason to initialize. That probably was not a problem, but to keep things consistent and safe we are now initializing it when the general "AIDifficulty" field is processed.<br />
** For the record, prior to the most recent beta this means there were not actually any errors, but now we do have protection in place in case such an error pops up in the future. But for the time being, these errors were just in the most recent beta, which is gratifying to know.<br />
<br />
* Fixed a couple of logic errors with risk analyzers in the most recent beta that was causing their notification to show up wrong as well as also firing them immediately on game start.<br />
** They now should work properly again, and if the notification is going to be wrong, it will be more informative in its wrongness.<br />
** Also fixed the fact that this could happen when AI Risk Analyzers were not even enabled as a faction.<br />
** Thanks to Puffin for reporting.<br />
<br />
== Beta 2.501 First Raft Of Multiplayer Fixes ==<br />
(Released September 10th, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG because of how much we changed with the "ExternalData Accidental Creation Avoidance" section. There may be legitimately new bugs that we introduced from that, or there may be old bugs that now simply show themselves with error messages. Either way, we don't want to inflict that on everyone, so please use the beta branch to help us test this one out.'''<br />
<br />
* There is a '''list of known issues with multiplayer''' here: https://wiki.arcengames.com/index.php?title=Category:AI_War_2:_All_About_Multiplayer#Selected_Short_Term_Todo_List<br />
** It's debatable how playable the alpha is at the moment, given the issue with the client ships deleting themselves rather than syncing, and given some of the (essentially) client-side memory leaks. Those two things will be my main priority tomorrow, unless something else more pressing comes up (like fixes to things broken by the ExternalData stuff).<br />
<br />
* A new button has been added on the main menu above the forum link that links directly to the AI War 2 discord channel.<br />
** Thanks to Metrekec for suggesting.<br />
<br />
=== Better Default Screen Resolutions! ===<br />
<br />
* Fixed a bug where the fullscreen resolution was still being saved into newsettings.dat rather than graphicssettings.graphics.<br />
** This meant that the fullscreen resolution was being sent over cloud sync, when really that should not be, since that is a machine-specific setting.<br />
** This may wipe out your prior values for the fullscreen resolution, requiring you to set it again.<br />
** Thanks to jrad for reporting.<br />
<br />
* At long last, added a startup feature that folks have been wanting for a while: better default screen resolution, for a better first impression as people start the game for the first time.<br />
** Previously, this particular game was just having a default of opening in windowed mode and 1024x768px, since that will fit on most monitors.<br />
** One of the reasons for this is that opening directly in fullscreen mode can cause bugs, particularly when settings are copied from one machine to another. But we are using fullscreen windowed mode, which reduces the chance of fullscreen bugs, and we also have our graphics settings not set to cloud sync for the last year or so.<br />
** With that said, now the game will automatically (first time opening it on this or future versions on any given computer) set itself to be fullscreen mode with your desktop resolution.<br />
*** It also will set your windowed mode defaults to be your desktop resolution minus 80px width and 100px height. So if you do flip it back to windowed mode, it should be at a size that feels sensible for your machine.<br />
** If you are using a very high-DPI monitor on an underpowered machine (for instance how Chris is testing with a late 2013 MacBook Pro 15" that is below minimum specs for the game), then you may want to lower the fullscreen resolution to something that machine can handle more gracefully (for instance, with ship graphics off and only running at 720p, that below-specs machine runs the game great).<br />
** Note: if you are already in fullscreen mode, then unity just reports what your current fullscreen resolution is. So it will save itself to that, and then set your windowed mode resolutions to be a bit smaller than the current fullscreen mode. Normally this game opens for the first time in windowed mode until this logic kicks in, so this only applies if you already have a current fullscreen setting active.<br />
<br />
=== Multiplayer Fixes From First Alpha ===<br />
<br />
* If there is a null result from FindArcenSteamClientConnectionByConnectionID in OnMessage on a Steam host, it now will write a more detailed and informative message as to why.<br />
** Additionally, in general OnMessage on the Steam server and client is now far more instrumented if those wind up with issues.<br />
** This won't actually solve any problems, but for the case where there was a client disconnect on connect, this should tell us what is going on more.<br />
** Thanks to StarKelp for reporting.<br />
<br />
* The numerical order of the detailed networking sync logs is now better regardless of OS file sorting, as it gives leading zeroes where needed.<br />
<br />
* While in the lobby, or while players are still connecting, the game no longer tries to run the general sync-correction code. This was an oversight in general, and was leading to various errors that would keep popping up until the host saved in-game and clients disconnected and reconnected.<br />
** This was the chief cause of the ""Fixed attempt to read more faction data than we had factions" error on the client.<br />
** Sync was already being handled as well as it needed to be in the lobby in particular: all it needs to do is make sure that your UIs are consistent, which it does. The actual underlying data about incomplete factions and such that can't be seen yet are really quite irrelevant at that point, and so it actually skips a lot of that data, which was incompatible with the full main-game-style sync. As soon as you start a game from the lobby, it already doing a much more robust generation and transmission of the data.<br />
** After loading into the game from the lobby, however, it seems that that initial sync is not as complete as we had hoped, so that's another area for us to now investigate.<br />
** Thanks to StarKelp and his play group for reporting.<br />
<br />
* Fixed a bug in deserializing player accounts, which was something that was leading to the immediately-after-lobby sync being broken.<br />
<br />
* Fixed a harmless extra blank fleetID that was being sent as part of the PeriodicWorldExtrasSync, which made them look inconsistent but did not cause other problems.<br />
<br />
* Fixed a larger bug that was actually preventing deserialization of divergent ships from working properly if the ship did not already exist on the client.<br />
** We had fixed this the other day, but made a mistake in the fix and had to do it over. Now it works!<br />
<br />
* There are still some more issues with syncing divergent ships that have external data on them, and we're not sure why yet.<br />
** The deserialization code for external data now has extra error handling in general, so that we can be more informed if something like that happens during sync or a load off of disk.<br />
<br />
* On the ArcenSerializationTester, added AppendIfActive() and AppendLineIfActive(), which are basically like Append and AppendLine().<br />
** These return a ArcenSerializationTesterWriter so that they can be chained into concisely readable calls like other parts of the code.<br />
** We want to be able to write more complex data in for informational purposes without it being the full WriteHeaderStringIfActive(), and without having to do string concatenations that hit the GC.<br />
<br />
* Several pieces of new logging are now in place to help us more easily identify problems syncing unit data, and external data in general.<br />
** We were seeing some mighty funky stuff on ExternalData syncs failing in multiplayer, and are trying to understand what is happening and why.<br />
<br />
* A WHOLE lot of extra error handling and instrumentation has been put in place around ships and externaldata in general.<br />
** Basically if something goes wrong, we don't want it to do so semi-silently. The various problems that most people were seeing in the first multiplayer alpha version were really downstream issues from the real errors, which were largely silent.<br />
<br />
* Found and fixed a part of the externaldata serialization that could be null in some cases, requiring us to instantiate it even on a partial sync.<br />
** This is something that we had already guessed we would have to do, based on us doing the same thing with ships themselves last version, but the silent errors happening here took us several hours to figure out what was going on. It's fixed now, but there will be more cases of this, probably.<br />
** With this fixed, the divergent ships no longer throw any errors. However, there are still some major differences between the client and the host that need to be looked at.<br />
<br />
=== ExternalData Accidental Creation Avoidance ===<br />
<br />
* Put in several fixes to potentially remove ScourgePerUnitExternalData from accidentally being created on any unit that was part of a fireteam.<br />
<br />
* This is going to break code mods temporarily.<br />
** GetCollectionByPatternIndex() on externaldata now takes a new ExternalDataRetrieval enum, which can either be CreateIfNotFound or ReturnNullIfNotFound.<br />
** The default used to always be CreateIfNotFound, which was nonobvious and was causing things like scourge data to appear on non-scouge units. But very likely it was also causing all sorts of other data to be erroneously initialized. This wouldn't have broken anything, but was certainly bloating savegames prior to this version.<br />
** For reference, all of the methods for getting these are expected to follow this sort of pattern: GetScourgePerUnitDataExt( this GameEntity_Squad ParentObject, ExternalDataRetrieval RetrievalRules )<br />
*** In the main game and first two expansions, this led us to having to correct 112 locations in 26 files. That in turn required another 705 secondary fixes.<br />
**** This may seem excessive, but being able to verify that we are correctly initializing data only when needed is a worthwhile goal, and it makes code clarity so much greater.<br />
*** There are a variety of places that this may make a difference based on our changes thus far (aside from whatever bugs we have introduced):<br />
**** Reinforcement spawning may be more correct now. There was previously some logic that may never have been hit if it was originally pointed at a non-sentinels faction, but now it will hit it.<br />
**** AI sentinels data will no longer be put on every faction during the post-victory achievement check. That was likely causing some problems (which someone had put a mantis report about post-victory slowdown and exceptions, so it's possibly related).<br />
**** When checking faction intensity in general, a whole host of wrong data collections are no longer created on random factions.<br />
**** Several things about astro trains can no longer cause accidental data on wrong factions.<br />
**** If astro trains that should be spawning AI waves or adding to the AI budget are pointed at a wrong faction, the data no longer goes into the void but instead an actual error pops up.<br />
**** Several hacks will now show exceptions rather than throwing their data into the void if they are pointed at wrong factions.<br />
**** There are a wide variety of places where the AI difficulty or AIP of an AI were referenced, and which might now throw a nullref exception. If any of those DO, then that is actually a good thing, because in the past those have silently been returning 0 for both rather than using real numbers. If neither of those cause any errors, then that's even better because we know our other code has been correct already. Fingers crossed for more of the latter than the former.<br />
**** Any time any fireteam was disbanded, all of its units were assigned blank scourge external per-unit data. Fixed. Oh, actually every time it looped over the units in a fireteam. Fixed that, too.<br />
**** ExoData is no longer added to every last faction in the game (notifications checks were causing that).<br />
**** It's possible that some tooltips or notifications might throw exceptiosn now, particularly if you load a savegame and mouseover them before unpausing. If these throw exceptions, then basically this is a case where it would have been gibberish data previously, so it's still useful.<br />
**** Various pieces of code like "don't run the nanocaust info if it's not set up" will now work as their programmers likely originally intended.<br />
** This probably introduced a number of new bugs from typos, along with whatever bugs it uncovered, so this is why we're heading back into the beta branch temporarily.<br />
<br />
== Version 2.500 Multiplayer Alpha Begins Now! ==<br />
(Released September 9th, 2020)<br />
<br />
* Removed some extra code that was accidentally included that was preventing the new findp command from being able to cycle through planets properly if there were multiple matches.<br />
** Thanks to cml for reporting.<br />
<br />
* PlayerAccounts are now also passed to cheats/commands (not to be confused with gamecommands), so that now if there are multiple people in charge of a single faction, commands that are sent can affect just one of the players if needed.<br />
** This is now used for the findp command, which lets two players share control of a single faction without the findp of one player affecting the other.<br />
<br />
=== Multiplayer Readiness In The UI ===<br />
<br />
* The multiplayer button on the main menu now has a small bright "Now in public alpha!" tag on it, to make sure no one misses that.<br />
<br />
* In the multiplayer section of the main menu, a new "Alpha Testers: Please Read!" button has been added.<br />
** This has a tooltip that says:<br />
*** Click to open a web browser that explains the current state of the multiplayer alpha (that changes almost by the day), as well as questions for testers (also get frequently updated), a history of recent improvements to multiplayer categorized by date, and a list of work items that are upcoming.<br />
*** Most important of all: if you are running into problems, please take the time to report them to us, rather than assuming someone else will report it. That is absolutely the most helpful thing we can ask for.<br />
** And its link goes here: https://wiki.arcengames.com/index.php?title=AI_War_2:Multiplayer_Alpha_And_Beta#What_Does_Multiplayer_Alpha_Mean.3F<br />
<br />
* At the top of the networking section of the personal settings menu, there used to be an option called "Enable Multiplayer Alpha"<br />
** This had warnings about how multiplayer alpha was not ready, but that you could click this to enable it anyway.<br />
** This option has, happily, been removed!<br />
** Previously, if that option was not enabled, then clicking the Multiplayer button on the main menu would show a popup with a message from Chris explaining the current state of multiplayer and projected timelines.<br />
*** That message has been removed, and clicking the multiplayer menu now just opens it, again, happily.<br />
<br />
=== Included Mod: Civilian Industries Pre-Multiplayer Finalizations ===<br />
<br />
* Final optimizations for Multiplayer, touching up loose ends.<br />
<br />
* Many nerfs in regards to AI Raids.<br />
** A 20-40%, based on intensity, reduction to AI Raid strength.<br />
** A roughly 100% longer warning before they fire.<br />
** They now only spawn a singular wormhole per planet.<br />
<br />
* Large scale Trade optimization<br />
** The Grand Station will now output a larger amount of cargo ships on demand.<br />
** Many more Cargo Ships can accept trade routes every second.<br />
** Trade Stations will no longer be built on planets that construction ships couldn't safely reach from the Grand Station's planet.<br />
** They are now much smarter about stockpiling resources for local militia use before exporting them.<br />
<br />
* Additionally, a large number of undocumented bugfixes that were lost in the surge of all these multiplayer-based updates.<br />
** The most notable fix is a fix to the Exception that could pop up when mousing over the Raid notification.<br />
<br />
=== Multiplayer Sync V1.0 ===<br />
<br />
* Added AddBytesWithFormatAndColor() and AddBytesWithFormat() for writing bytes nicely to an ArcenDoubleCharacterBuffer.<br />
** This cuts down on our repeat code for easy formatting of things that might be in bytes, KB, or MB.<br />
<br />
* There is now some basic sync stats that will show in the escape menu during multiplayer, and then more detailed sync stats that can be turned on at will.<br />
<br />
* New setting in the network section of personal settings: Show Network Sync Details In Escape Menu<br />
** Only applies when you are in multiplayer, and has different outputs on the host versus clients. Gives statistics on how much the game has had to correct in terms of divergent data between the client and the host.<br />
** Note: The PKIDs and squads are actually checked for divergences, and those are shown in more detail on the client than the host. All the other things are sent in a periodic overwriting fashion, without checking for divergences, as the bandwidth used (which you can see with this setting on) is less disruptive than the CPU cycles required to do divergence checks.<br />
<br />
* The width of the columns in the escape menu are now a little wider.<br />
<br />
==== Fixes Based Off Testing Initial Implementation ====<br />
<br />
* Fixed a bug where the client in multiplayer was incorrectly calling a host-style method when trying to tell the host about divergences in squad sync.<br />
<br />
* Fixed a bug in multiplayer sync where the squad sync stage would never complete or advance beyond the first 20th of the squads, instead just doing those ones over and over again.<br />
<br />
* Fixed a minor bug in multiplayer where the client was telling the server about mismatches even when there were none (just sending an empty list to them).<br />
<br />
* Fixed a one-line bug in multiplayer sync that hilariously just caused all of the ships on the client to be deleted within a few seconds of playing.<br />
<br />
* Put in extra debugging for Client_AcceptDivergenceDataFromHost(), since it was having some exceptions happen.<br />
** In general at the moment, actual divergent ship data is coming across slightly garbled.<br />
<br />
* Temporarily disabled the planet and world-extras sync steps in the multiplayer sync code, as those both were throwing errors on the client side.<br />
** With those disabled, we can see that the ship sync, fleet sync, and "ultra frequent" sync all seem to be not only working great, but also not sending too much data and not slowing the game simulation down.<br />
** The garbled divergent ship data is a bummer and does mess with things, but in general it just speaks to our need for better instrumentation in that area, and is not entirely unexpected.<br />
<br />
* A new setting has been added to the networking section of personal settings: Log All Decoded Network Sync Data To Disk<br />
** Will majorly slow the game down, but dumps decoded sync messages to the disk in files inside the PlayerData/NetworkSyncMessages folder. This only covers sync-style data, but with this logging enabled on both the client and host, this is a great way to see why serialization is failing, if it is. <br />
** Enable with care! Since this data is being actively decoded as it is written, it is far larger (and in plain text) than the actual data being sent across the network. A typical ratio might be 40MB of decoded data for 500kb of actual network traffic. You can have a few GB of data on your disk after just a few minutes of letting the game run in this fashion.<br />
<br />
* Using this hefty new tool and some extra instrumentation, we were able to locate and fix the problem with the sending of divergent ship data from the host to the client.<br />
** We were simply omitting the primarykeyID for entities that were different, not deleted. Things like that are easy to miss but almost impossible to find without a logging mechanism like this. Manual code review just leads you to look right past it, especially if you've been staring at it for days.<br />
<br />
* Did a bit of an overhaul on how some of the network sync data is logged, so that we can do a folder-at-a-time comparison to find differences where any may exist.<br />
<br />
* Server_SendBatchOfSyncsBasedOnCurrentSyncStage() now has extra debugging going on in itself, because we're experiencing some sort of errors in there on the host after a certain amount of time in multiplayer, now.<br />
** Thus narrowed the problem down to Server_SendPeriodicFactionSyncDataThatJustOverrides(), and so instrumented that a lot more thoroughly... except actually the problem was in Server_SendBatchOfDivergentSquadsToFix(), we just read it wrong. So that also got extra instrumentation.<br />
*** And that was, in turn, just a simple typo on one line. Logging and instrumentation makes the impossible and time-consuming very fast and easy -- after the initial setup time cost. Very much worth it.<br />
<br />
* Found ourselves back with another error in Client_AcceptDivergenceDataFromHost-DivergencesSection. But we can't quite use the logging as it currently exists to easily diff these on a folder level.<br />
** In order to make that possible, we are switching away from using a central LogIndexThisSession Int64 for all message types being sent to StartNetworkSyncDataMessageLoggingIfNeeded, and instead are having an individual index for each FilenameBase string.<br />
*** This puts things slightly out of chronological order when we're talking global messaging, but that's because the client and server can be talking back and forth and have some different ordering between message types. We need the message types to always match up, and now they will.<br />
<br />
* Discovered that we were not properly sending the TypeData of the ships in the divergent ship fixes messages from the host. This was then causing nonsensical errors later in the deserialization of those messages.<br />
** Another great example of something we would not have found, potentially at all, without the new instrumentation.<br />
<br />
* Discovered a harmless logging artifact that we introduced into the last few versions where the header for fireteam data was behind its id on one machine, but in front of it on the other.<br />
<br />
* Thanks to the logging, also discovered an inconsistency in how fleet data was being updated, which was causing those to choke and die on the client side.<br />
<br />
* Went ahead and re-enabled the world-extras and planet syncing, since those go wrong so quickly but we now have logging on for them.<br />
** That immediately errored, but that is just fine for our purposes. Can you tell logging makes us happy?<br />
** This quickly revealed that there was something funky and inconsistent with how we were reading the planet's type. That has been fixed to be consistent.<br />
** That then revealed something a lot more complicated was wrong with how the external data patterns were being read in general, most notably on the world but definitely not limited to that.<br />
*** We improved the logging and instrumentation on the external data pattern serialization in general, and this then solved the issue on the world and the larger issue as a whole that would have come back to bite us in many other areas later.<br />
*** Then put in some more logging related to MDCExoDataExt, since it seemed to have an inconsistency. We now are marking when ExternalData is complete in the log, to make that mistake harder to make.<br />
** Then found and fixed yet more inconsistencies in how we were syncing squads.<br />
*** Also we then stopped syncing some stuff that was set to "only save on the network" (and not to disk) for squads, but it was data that really really should not have been synced because it was working fields from other threads.<br />
** And then also fixed a random extra float that we were sending after "world extras" sync. It's the sort of thing you only see in a log, as it was invisible in the code.<br />
<br />
* We are no longer syncing the IncomingShots on entities except during the initial world sync, because in general we are not syncing shots.<br />
** This is going to take some refactoring for targeting, possibly, but then again existing code will very possibly just adapt to it. <br />
*** "Catastrophic" or "planet switch" styles of sync fixes are probably not frequent enough during combat for it to be too very wrong, but either way things will fix themselves within a rolling 3-4 second window. It's interesting, because its constant attempts to heal itself in various places, while "in battle" with attrition is reminiscent of a scene with Wolverine in X-Men 3. That's an amusing thing to realize about one's code. (Let the record show that the devs really don't like X-Men 3, but that one scene was visually neat).<br />
<br />
* Fixed some potential nullref exceptions in CalculateSpeed() on ships, which really at this point mainly would happen when ships or fleets or speedgroups or some combo of that were being updated at the same time as they had something going on in the background threads.<br />
** Basically there's a whole new nest of cross-threading errors that we can run into, but there's not much we can do about them except to harden individual methods as they come up with problems, and in general also add extra instrumentation to methods if we think they have the potential to be a problem again (this one does).<br />
** This is kind of an unavoidable element of the loose way that we handle threading, which is needed in order to get the maximum speed out of the simulation and all the various threads that are involved. The client side of network sync is now a new source of these issues, but it's not remotely the first of them. We'll probably be swatting this sort of thing down throughout the alpha and beta of multiplayer. And then SirLimbo will somehow find a way to run into exceptions that no one else sees for the next two years. ;)<br />
<br />
* At this point we can confirm, based on our detailed logging, that multiplayer is able to successfully run for a solid four or five minutes of gametime (at 5x sim speed) and come out with consistent results the entire time.<br />
** This leads to about 2600 network log files for the sync messages, which are about 100MB per computer, and this substantially slows down the game from running at an unencumbered pace (the disk writes are heavy).<br />
** Of course, as soon as we turned off the logging, we ran into some sort of new gameplay thing which caused issues in the ship sync code. So there are still some goblins in there, probably related to certain types of data that are not on every ship.<br />
<br />
* Added a new setting to the network section of personal settings: Log Decoded Network Ship Sync Data To Disk<br />
** Same as the 'Log All Decoded Network Sync Data To Disk' setting, but only writes data for actual divergent ship fixes. Since that is one of the more-likely-to-break areas of sync, but only something like 1/15th of the actual data being passed around, being able to isolate it to this is helpful.<br />
<br />
* Fixed an issue where the current galaxy map display mode, and the current planet index you were viewing, would be reset by the sync data on clients in multiplayer.<br />
** It now takes in that sync data only for non-local player accounts. Clicking to another planet only to have your view bumped back a second or two later was MILDLY frustrating, heh. And also slightly hilarious.<br />
<br />
* Discovered and fixed an issue where if a partial sync was sent from the host to the client about a ship that the client had no knowledge of, then the client would try to read it as if it was an off-disk sync and thus read things incorrectly and fail.<br />
** This will probably be elsewhere in the code as well, so we will potentially need to review a lot of other data structures.<br />
<br />
== Beta 2.134 Searching For Planets ==<br />
(Released September 7th, 2020)<br />
<br />
'''This one is still on the beta branch on Steam and GOG, since we have continued making lots of substantial changes to the central serialization logic for the game in service of the multiplayer sync code. We're now done with what would constitute V1 of the MP sync code, so we can come out of the beta branch tomorrow so long as no one runs into any problems with single player on this build. As for multiplayer itself, we have a fair bit of testing to do to make sure that the MP sync code is doing its job and not exploding RAM usage on the clients or harming performance, etc. Once that's verified and all the bugs we find in testing the MP sync code are fixed, then we're officially into an alpha status with multiplayer. Given that the V1 of our sync code turned out to be far more thorough than we originally planned, the multiplayer alpha period should hopefully be shorter than it would have been.'''<br />
<br />
* Extragalactic war ships are no longer classed as 'small' when hovering the Planets Under Attack notification<br />
** Thanks to crawlers for the bug report<br />
<br />
* The Dyson Sphere produces a small number of drones, as well as its usual ships. Those few drones no longer leave the sphere's planet<br />
** Thanks to GreatYng for reporting<br />
<br />
* Update the time estimates for releasing multiplayer and DLC2<br />
** Thanks to ParadoxSong for reminding<br />
<br />
* There's now a Journal entry for when the AI can send extragalactic war units, so they won't come as a surprise<br />
** Suggested by zeusalmighty<br />
<br />
* Fix a bug where the Helping Hands 2 quickstart was broken<br />
** Thanks to Spook for reporting<br />
<br />
* QoL tweak for repair. Any ships on a planet where you outnumber the enemies 10 to 1, or the enemies have less that .2 strength are eligible to be repaired immediately.<br />
** The previous rule was 'Any ships on a planet without any enemies' which could be frustrating if you were trying to hunt down a few cloaked ships.<br />
** Thanks to crawlers and Isiel for suggesting<br />
<br />
* Some minor tutorial tweaks<br />
** Thanks to MasterGeese for reporting<br />
<br />
* The extragalactic war spawning notification message now uses 'a' and 'an' appropriately<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Update the Description for the snake map to mention that it's very hard<br />
** Prompted by a discussion on the forums<br />
<br />
* When you have the galaxy setting for Adjacent Planets Watched, it now takes that as the baseline and is increased by things like Economic Command Stations and Spy Cradles.<br />
** So if you have "Watch 1 adjacent planet" then a military command station will watch 1, but an economic will watch 2<br />
** Thanks to ParadoxSong for suggestion<br />
<br />
* Small update for MoreStartingOptions by AraudB:<br />
** Inordinate had 10 plasma turrets rather than 2. Fixed the number of stations in the mod description too.<br />
<br />
* Removed a blank "Fleet Experience" section from the tips window.<br />
** Thanks to Isiel for reporting it.<br />
<br />
* Several different spots that could throw errors if fleet membership was null now no longer do.<br />
<br />
* DoEntityStepLogic_Ship now has better debug logging.<br />
<br />
=== Multiplayer: Sync Correction V0.90 ===<br />
<br />
* Added a new SerializationCommandType, which has three values:<br />
** NormalFullType, Network_ContinuousPersistentSync, and Network_DuringDetailedNetworkSyncStage.<br />
** This is now used on Factions in order to differentiate the three major types of serialization that we might be doing.<br />
<br />
* The ExternalData on factions is no longer synced as part of the "every frame" IsForNetworkContinuousPersistentSync.<br />
** And actually a bunch of other stuff on factions is now limited out so that it's not over-saturating certain data while it IS still sending other things every frame auth.<br />
** This is also of relevance because it means that any faction externaldata that is not fully optimized to not thrash the GC will inherently do less thrashing of the GC. So that makes mods a little more safe in general in multiplayer.<br />
<br />
* Fixed several parts of the faction object to be efficient and not thrash the GC in the way that we were doing for the ExternalData last build:<br />
** TechHistoryEvent, HackingEvent.<br />
<br />
* FromServerToClient_SendAllOtherSyncDataThatJustOverrides has been renamed to FromServerToClient_SendUltraFrequentSyncDataThatJustOverrides, because it no longer is "all the other data." It's just the most common stuff.<br />
** Added new new messages for time-sliced sending of the following: FromServerToClient_PeriodicFactionSyncDataThatJustOverrides, FromServerToClient_PeriodicFleetSyncDataThatJustOverrides, FromServerToClient_PeriodicPlanetSyncDataThatJustOverrides, and FromServerToClient_PeriodicWorldSyncDataThatJustOverrides.<br />
<br />
* The full-faction-data sync even has been implemented on the client and the host, and now includes speed groups (which previously we felt like were too heavy to send on the ultrafrequent channel -- which was correct).<br />
** This also means that we needed to make the SpeedGroups be nice to the GC on deserialization, so that's done.<br />
** Also fixed several oversights that would have led to hard-to-diagnose endless inflation of array contents for various faction items. Yow. These sorts of things will be hard to find any other way than manual code review, and can be in mods or the main game and can cause massive slowdowns with no central way to diagnose it. These will be "fun" to find in the future.<br />
*** Essentially lists like FactionIndicesIAmAlliedWith were being added to each frame without ever being cleared before the new set of data was put in. This would only happen during multiplayer, and only on the client, but would start causing all sorts of problems.<br />
<br />
* Planets and planetfactions and their externaldata have now gotten the same treatment that factions did.<br />
** Here again there were a couple of infinitely-expanding lists that are now fixed.<br />
<br />
* Whew, okay, fleets and their memberships have also been updated to the new style.<br />
** This... is going to be very problematic, the way it currently exists. This first checkin of the fleet memberships in particular is going to be very problematic indeed, for a whole lot of reasons, but it's a good start for refactoring.<br />
** Essentially, fleets are so bloody complicated the way that they exist right now (in terms of data structure under the hood) that they can't work cleanly in multiplayer without a bit of refactoring. The positive news is that we can make potentially even single-player slightly more efficient with this refactor, but it's going to require redoing drones and a few other things along those lines.<br />
** Edit: the below solves our issue for the time being, although we may still make some changes in this area in the future to make things easier. We're no longer FORCED to, though, which is nice.<br />
<br />
* Came up with what is hopefully a clever use of our existing sync infrastructure to handle the cascading wrong data that can happen from the current fleet structure. This was something that has us stumped for a bit, because doing the most efficient sync style for fleet memberships could lead to units that were in the wrong membership after that.<br />
** The simple solution is the fact that we do know when we are hitting such a case, and so we can just tell all those units to kill themselves on the client. They will then naturally and fully re-sync from the host within 2-3 seconds.<br />
** This is the sort of thing that we want to minimize, of course, but the worst case is having something be permanently wrong in a MP game and us not being able to fix it. Later logic can always do something to sync these back quicker, or to minimize the number of times these are being hit if it is frequent, etc, etc.<br />
** For now we're just monitoring (in the UI) how often it happens, and we can make decisions based off of that... as people choose to share that data about their sessions with us. We may implement some sort of automated data reporting that people can opt into if things seem problematic, or if we think we're not getting reports on things like this but it does seem to be a problem for people.<br />
** At any rate, priority one is making it work properly in the long term of a game even if there is a snafu for a few seconds on a client, and priority two is minimizing or erasing the snafus.<br />
<br />
* Various central world data is now synced from the host to clients every few seconds/<br />
** Among other things that were more intentional, this actually lets clients know the status of other clients pretty rapidly (aka, seeing that someone else is disconnected or connected).<br />
** This should have all the central items of relevance nicely synced, although we are skipping the "world history" and "journal history." For those, if they are really needed, we may just introduce a new sync stage to time-slice the processing of those. But frankly they are not likely to get out of sync.<br />
<br />
* At this point it will be time for us to test our sync code, which is utterly untested at the moment. But the design and implementation of V1, except for actually testing it, is complete.<br />
<br />
=== "Find Planet" Command ===<br />
<br />
* Added a new extension in our central ArcenStrings which lets us do a case-insensitive Contains() call (for purposes of searches, etc).<br />
** This is useful for a variety of purposees, and lets us do partial comparisons (not just Equals()) calls) without having to cast to lowercase.<br />
<br />
* Implemented a new [https://wiki.arcengames.com/index.php?title=AI_War_2:Cheats#Debugging command], "findp", which lets you search for planets via the chat command:<br />
** Formatting is like this: "cmd:findp,gear" (minus the quotes).<br />
*** This example would search for the text "gear," and would bring up results "Geary" and "Gearworld" and "geaRson" if all three of those existed in one galaxy.<br />
** It tells you how many results there are, and if there is more than one result, then repeat entering of the same command (just press up and enter) will cycle you through them. It tells you that it will cycle you through them if there are more than one.<br />
** If you are on the planet view, it switches you to the planet view of that other planet. If you are on the galaxy map view, it centers the galaxy map on that planet.<br />
** Thanks to cml for the initial implementation of this as a mod.<br />
<br />
* Added a new "Quick Tip" item, which shows up randomly on the starting screen as well as in that section in the tips section: Searching For Planets By Name<br />
** During the game, if you hit enter/return to bring up the chat window, and then type 'cmd:findp,yoursearchhere', you can search for planets by name. If you type part of the name of a planet, then you can hit up and enter to issue the command repeatedly and cycle through multiple hits if there are any.<br />
<br />
== Beta 2.133 Hotfixes ==<br />
(Released September 4th, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG, since there were a number of problems with the prior build that prevented adequate testing. Once we have confirmation of more people able to play this new version without incident, we can move back out of the beta branch.'''<br />
<br />
* Fix typo in Full Badger tooltip<br />
** Thanks to Breach for reporting<br />
<br />
* Nanocaust now uses a darker border colour<br />
** I forget who mentioned that this looks much better<br />
<br />
* The Nanocaust might now play a bit of defense<br />
<br />
* Improve the way a player's Overall Power Level is calculated<br />
** A player can now have a high enough Overall Power Level to trigger Extragalactic War Units without allies if they are on difficulty >= 7<br />
<br />
* Dark Spire ship line hacks no longer destroy the VG<br />
** Thanks to Sol for reporting.<br />
<br />
* In Steam, the default launch style is now OpenGL, rather than Vulkan.<br />
** As noted, this is the preferred launch style, and more stable.<br />
** Thanks to TechSY730 for suggesting.<br />
<br />
=== Fixes Relating To Prior Beta ===<br />
<br />
* Fixed several areas where trying to check a non-existing setting (potentially because it was from a mod or expansion you don't have installed) was causing issues.<br />
** This is a problem dating back months to when we changed how lookups to missing settings worked, but we're only now seeming to hit it in the most recent betas.<br />
** Thanks to Badger and others for reporting.<br />
<br />
* A variety of extra debugging info has been put into some of the high-level world serialization areas for our logs when problems happen.<br />
** Also put in a bunch more into fleets and fleet memberships for debugging purposes.<br />
<br />
* Identified two fields from fleet memberships that were not properly translated over into the new format in the last beta build, causing all new savegames in that beta to fail to load.<br />
** Now that this is fixed, the broken savegames all seem to load just fine, which is always nice when that happens.<br />
** Thanks to StarKelp, Sol, and ArnaudB for reporting.<br />
<br />
* The "Civilian Industries" mod by StarKelp has been updated to function in the new code framework we introduced last build.<br />
** All of the mods we distribute with the game are again working at the moment, to our knowledge, now. Code-style mods from other sources (forums, etc) may not be updated yet to compatibility with this latest set of builds.<br />
** Please note that we broke compatibility on purpose (not a typical thing), to add multiplayer functionality to mods and make sure that no mods would cause unpleasant spikes in memory usage on client machines in multiplayer.<br />
<br />
== Beta 2.132 Exterior Leviathan ==<br />
(Released September 3rd, 2020)<br />
<br />
'''This one is on the beta branch on Steam and GOG, because we made so many changes to some fundamentals of how the game works. These are driving at improvements for multiplayer, for the partial syncs to be able to happen, but they break code-style mods for the game (including Civilian Industries as included in this version), and it's possible that they temporarily are breaking something else since we've changed several thousand lines of code in a few dozen files and may have made an error in any one of a number of places. Some bits of multiplayer sync are a bit more hefty than we'd been thinking they might be for V1 of that, but then again we're getting more of it done upfront rather than later. We'll be able to start actually testing the sync maybe tomorrow, unless a bunch of other things are broken by our changes.'''<br />
<br />
* Dyson Spheres now must kill all the guard posts on a planet before they can kill a reconquest command station. This should prevent a buildup of guard posts. <br />
** Thanks to TechSY730 and Khankar for reporting<br />
<br />
* Fix some bugs with Usurpers owned by praetorians or other AI subfactions<br />
** Reported by GreatYng<br />
<br />
* Try harder to make sure waves against minor factions have ships<br />
** Reported by GreatYng<br />
<br />
* Fixed some minor typos<br />
** Reported by GreatYng<br />
<br />
=== Multiplayer: Sync Correction V0.75 ===<br />
<br />
* New setting in the network tab of personal settings: Network Logging Includes Sync Checks<br />
** During gameplay there are messages sent by the network as frequently as several every 100ms, and these are one of the largest sources of data usage. This lets you see the timing and payload size of those messages, if you think that potentially they are what is slowing things down in a networked environment.<br />
<br />
* Stripped out a lot of old code that was related to an old style of sync (aimed at desync detection), and started building in the new sync framework (aimed at detecting micro desyncs and correcting those).<br />
** Decided to move this to a new AIWar2NetworkSync static class in its own file, as after just getting about a third of the way through this logic, it was clear that it was pretty sizeable and overwhelming the rest of the networking code's readability.<br />
<br />
* Added in the logic for the server keeping a list of ships that the various clients have told it are divergent.<br />
** The server could be getting overlapping reports from several clients, but we need only one copy of this, because we're going to err on the side of caution and tell every client about each bit of sync data that needs fixing.<br />
** We could always change this in the future if there seems to be a bandwidth benefit to this, but it would probably just mean extra processing on the host for more unique sends per-client. At the moment we judge that to be the resource that is more scarce.<br />
<br />
* The logic for removing ships on a client that were not part of the last sync cycle, but also not new during that cycle, has been put in place.<br />
** The idea here is that these ships probably died on the server, and the client didn't know for some reason.<br />
<br />
* The logic for having the server do send check data for 1/20th of its ships (or stacks or whatever, as the case may be), but no more than 9000 per 100ms, is now in place.<br />
** This is the meat of the desync detection code, and it is based around only a very few factors:<br />
*** Health lost, shields lost, extra ships contained within (of ANY fashion), current planet, and current location.<br />
*** We are generally making the assumption that if all of those things match between the client and the host, then the ship is probably in sync.<br />
**** In the case of certain faction ships that do things like gather resources or whatnot, that will obviously be very incorrect, but it is correct for most combat ships.<br />
**** For those cases where faction-specific data is potentially going to be wrong, it would be prohibitively expensive to add a bunch of checks based on that extra faction data, so we will build in separate tools for forcing sync of these non-combat factors.<br />
**** Frankly, other things like fireteam history, which would be missing on the clients, could be synced via other methods later on if we really want to. Though that's generally only used for debugging in most cases, so seems not to be worth doing.<br />
<br />
* The logic for clients checking for mismatches with their local data compared to the server is now in, and it sends back the requests to the server to have divergent units corrected.<br />
<br />
* On PlanetFactions, there is now FactionIndex and PlanetIndex directly in order to make it easier to quickly find those in case they have been reassigned.<br />
** Additionally, their Faction and Planet member variables are now exposed as get-only properties to keep unexpected things from happening there.<br />
<br />
* The way that squads deserialize has been updated substantially to allow for several levels of partial deserialization for various sync scenarios.<br />
** The sync fix code allows for normal-level same-planet sync fixes (which should hopefully look very nice with things sliding visually into new positions if positions differ).<br />
** The sync fix code then also allows for normal-level different-planet sync fixes, which instantly disappears the old spot and puts it somewhere new.<br />
** And finally, the sync fix code allows for catestrophic-level sync fixes, where the two entities aren't even the same (not matching faction or type), and it destroys the old one instantly and as invisibily as possible, and then puts in the new one where it should be.<br />
*** This last category is for basically when the primary key ID generators are out of sync between the host and one or more clients. These will be hit with some regularity, but they should not be hit over and over for the same unit.<br />
<br />
* The deserialization logic for "fleet memberships" has been split in such a way that we can now sync just some of the data into them (for network purposes).<br />
** We are not using this yet, but will once we get into the fleet sync phase of the sync cycle (outlined below).<br />
<br />
* CalculateContentsCount() on squads now takes a required parameter IsForNetworkSyncCheck.<br />
** If that is true, then it ignores any data that is not on the squad (but is usually on the fleet or the "fleet membership" areas.<br />
** This is things like drones or transported ships, and city sockets. These will be something we sync at the fleet level.<br />
<br />
* Network_CurrentSyncCycleNonSer has been moved off of the World_AIW2 object and into the AIWar2NetworkSync class.<br />
** Same with the OnServer_SquadsNeedingSyncFixes dictionary.<br />
<br />
* The server now cycles through a series of "sync stages," where it will sync different things other than just squads.<br />
** This is useful for us to be able to time-slice syncing of data of different sorts... for instance fleets and fleet memberships data.<br />
** We actually are now going to use this for separating out the squad sync checks and the divergent squad fixes, too, since time-slicing that is good for smooth gameplay as well as also making sure that multiple clients with partially bad sync cause as few excess sends as possible (that's a ms timing thing).<br />
*** The code for syncing the squads that were divergent is now in, as noted above.<br />
<br />
* The data for factions, and for some of the Primary Key info, is now synchronized from the host to all of the clients every authorized network batch.<br />
** On average this is probably anywhere from 10kb to maybe 40kb, at most. It's easier just to keep this in sync.<br />
** At the moment, for ExternalData on factions and squads, there is a huge amount of inefficiency on the clients in that it is completely recreating objects every network sync right now. We are looking into various refactoring options.<br />
<br />
* At the moment we are explicitly not syncing SpeedGroups, since those are complicated and may tend to diverge.<br />
** We are probably going to wind up refactoring these to be by faction, or something along those lines. In fact, there are several major refactors coming, and one of those may be that a lot of the PKIDs may become faction-specific in general.<br />
<br />
* Turns out that adding the NetworkSyncStage as a concept was a really good idea, because we not only need to sync squads and fleets, but also planets and some data off the world, too.<br />
** The faction sync is happening once every sync frame, but it's possible we might back off the frequency of some of that if it becomes too harsh. Mainly for ExternalData stuff. But for now we'll see how it does.<br />
<br />
* Planet has now had its data split out like squads and fleet memberships and factions and some other classes to have its own DeserializedIntoSelf() method.<br />
** Also PlanetFaction. Whew, wow. For this it doesn't sync the entities during the partial sync, of course, unlike during disk or main network sync.<br />
<br />
==== "ExternalData" Updates That Affect Mods ====<br />
<br />
* The ExternalData framework has gotten a few updates to allow for us to do partial-syncs like we now do with squads and such, versus always just creating something new.<br />
** Any mods that use ExternalData will need to be updated to use the new pattern, although it's not a huge change.<br />
<br />
* FireteamRequiredTarget has been updated to have a DeserializeNewFrom and DeserializedIntoSelf, to ensure that what we are doing is intentional.<br />
** Since this is a class, not a struct, it's highly efficient for us to be able to write to an existing class rather than always replacing it, even in single-player.<br />
<br />
* The following "external data" has been updated to be dramatically more efficient with syncs during multiplayer, employing a variety of strategies that we're using in the main game stuff:<br />
** WormholeInvasionDataExternal (this one is basic and simple)<br />
** AI_PlannedWave_Data (this one is complex in that it has a list of sub-objects and shows how to handle that properly. It even gets rid of theoretical extras on the client machines)<br />
** DoomData (this is really old style in terms of the data, and is not used actively, but does show a way to handle the multi-part sub-data well).<br />
** ExternalData_AIFactionCommon (this one is ridiculously complicated and used for a couple of factions)<br />
*** ExtragalacticBudget and AIPChange as a part of this, and are good simple examples. These don't even have the new bool passed to their sub-objects, because both the DeserializeNewFrom and DeserializedIntoSelf() methods can both validly be used as part of one during-game sync (depends on relative list length, see code).<br />
*** StoredAIPurchaseCostByBudgetForSpecificUnits is a good example of where it's better to just use a bit of extra GC (especially with the new time-sliced GC unity now has) instead of doing extra CPU processing to be a hair more efficient with that memory.<br />
*** Fireteams themselves have changed from having a constuctor for deserialization to having a DeserializeNewFrom method that makes it a bit more explicit what is happening. We also pulled out the id deserialization so that we could reuse Fireteam objects as much as possible if they are being updated.<br />
** DysonExternalData and DysonAntagonizerExternalData (another two examples of the simplest possible cases for updating a modder might have)<br />
** MacrophageGlobalData, MacrophagePerTeliumExternalData, MacrophagePerSporeExternalData, and MacrophagePerHarvesterExternalData, which are also very simple examples.<br />
** RiskAnalyzerData is even simpler, with no sub-objects to modify.<br />
** AIReservesDataExt is seemingly simple, but is dodging accidentally creating two sparse lookups internally on each sync.<br />
** AstroTrainsGlobalExternalData, AstroTrainsPerDepotExternalData, and AstroTrainsPerTrainExternalData are all pretty straightforward, although we saved ourselves a lookup load on AstroTrainsPerDepotData.<br />
** AutosaveDataExt, even though it's not really even needed on the clients at all. Since it has some sub-data that is in a list, and in string format, we're just not bothering to send that to clients at all during syncs since it is a waste of bandwidth.<br />
** DarkSpireData, which has some complexities with the sub objects DarkSpirePerPlanet. It has special notes in the code for any similar cases with a sparse lookup and sub-objects.<br />
** Two "DZ" items for DLC2, which was wildly complicated to convert compared to most things. It involved sub objects DZResourceConversion, and DZUpgrade, among other nested objects. Mostly it was a good example of just following the existing principles on down, but there is one ConversionBag that was tricky enough that we're just clearing and refilling it in a somewhat GC-wasteful way rather than going into the extra complexity and perhaps incorrectness of doing it another way.<br />
** AntiMinorFactionWaveDataExt, ExoDataExt, and MDCExoDataExt, which thankfully were all trivial examples of the common case.<br />
** ExternalData_GroupTargetSorting, which has nothing formal to save or send.<br />
** InstigatorPerUnitDataExternal and InstigatorDataExternal, which again the simple common case.<br />
** SpawnAnimationData and DespawnAnimationData were very old and probably not used, but simple to upgrade.<br />
** MarauderOutpostRaiderSpawnData is again the simple common case.<br />
** MercenaryUnitExternalData and MercenaryGlobalExternalData, which had some more notable complexity. MercenaryBeaconState upgraded with WorkingHasBeenUpdatedThisDeserializationCycle to handle its situation. MercSpawnRequest just does it the inefficient way since these rarely exist, and only exist for a short period when they do. SingleMercenaryGroupState is a strange bit of data, and gets handled in a novel way. Thankfully MercenaryUnitData was a trivial case.<br />
** ExternalData_FactionCommon is old and strange, but was not too hard to update.<br />
** ExternalData_MinorFactionCommon was super old in its styling, but already was efficient enough.<br />
** NanocaustMgrData, NanocaustPerUnitDataExt, and LastSpawnTimestamp are all extremely simple. The old FrenzyFleet stuff is still kinda-sorta there, but never has data since it is legacy, so that shouldn't cause any GC churn.<br />
** FallenSpireGlobalExternalData and FallenSpirePerUnitExternalData had a few quirks, but mostly were the common case with some minor array clearing and preservation.<br />
** One "NP" item from DLC2 required pretty minimal updates to work with this, hooray.<br />
** ScourgeGlobalExternalData and ScourgePerUnitExternalData were both the common case with a tiny bit of list/dict management.<br />
** Two "ZA" items from DLC2 are mostly the common case but with some collection management added in.<br />
** Two "ZM" items from DLC2 are also mostly the common case with a bit of collection management.<br />
** HRFDataExt and MarauderDataExt both were also mostly the common case with a bit of list management. There is a question mark about the regiments aimed at planets, on this and a few other locations, but they are at worst going to be inappropriately blanked out over and over again on clients in MP, which we can fix later.<br />
<br />
* In general, any of the usages of IArcenExternalDataPatternImplementation in mods should be updated to follow the new examples in the main code. The changes are not severe.<br />
** The most important changes are the ones above, relating to SerializeExternalData() and DeserializeExternalData() taking an extra parameter, and then each handling a graceful DeserializedIntoSelf() sub-method (and choosing if there's some data not to sync across during gameplay if required). But beyond that, there are some more changes:<br />
** RelatedParentTypeName has been removed, as it was never used. Same with GetShouldInitializeOn.<br />
*** During InitializeData, the object ParentObject is being cast into an appropriate-type Parent object for general usage, (aka GameEntity_Squad, Faction, whatever) that people can then later use. If the type is wrong, it will just come across as null, and we have it complaining if that's the case. You can do the same or omit that part if you don't care.<br />
<br />
=== Third Off-By-Default Mod: More Starting Options By ArnaudB ===<br />
<br />
* The More Starting Options mod by ArnaudB is now included with the game by default (with permission), but disabled.<br />
** Requires The Spire Rises expansion (DLC1).<br />
** Pick between seven starting fleets and twenty starting battlestations for your custom games. These choices are balanced for regular play and are acceptable to use for achievements.<br />
** The eight starting fleets will offer you a more varied combination of ships so you may explore more varied combinations of technologies and playstyles than those incentivised by the default options.<br />
** The twenty starting battlestations will let you play and test every of the many turrets brought by The Spire Arise DLC, which are otherwise completely absent from the default starting options. You’ll find multiple combinations for both offensive and defensive playstyles, balanced for your enjoyment and giving you hints as to what synergies you could make with a few turrets or ships.<br />
** This mod is off by default as to avoid paralyzing the player by offering too many choices. <br />
** You can activate this as a new player unsatisfied with the default options, or as a veteran wishing to vary your experience of the game.<br />
<br />
=== Mod: Civilian Industries Updates ===<br />
<br />
* Civilian Industries 0.6.4<br />
** Full update notes may be found on the forums: https://forums.arcengames.com/ai-war-ii-modding/civilian-industries/msg222774/#msg222774<br />
*** A large number of code optimizations, directly mostly at performance and multiplayer readiness.<br />
*** An overall nerf to Mobile Ship counts, but a simplified formula will allow easier future modification.<br />
*** A rework to the Barracks. Now scales with Mark Level, Command Tech, and can even let you get more Protectors at mark 7.<br />
*** Buffs to many Protectors. Balance for them is still being worked on.<br />
*** Resources renamed across the board, and structures now state what technology works for what resource.<br />
*** A notification will now show when a Raid is about to fire against your civilians, thanks to Chris' recent changes on the notifications front.<br />
<br />
== Version 2.130 Redux: Dutch Cities and Softer Eyeballs ==<br />
(Released August 31st, 2020)<br />
<br />
'''We accidentally forgot to increment the version number in game. So this would have been 2.131, but is just called 2.130 in the game. Sorry about that, this is perhaps a first?'''<br />
<br />
* New planet naming style added, with over 4000 names in it: Cities (Dutch)!<br />
** Most Dutch cities, villages, and hamlets shorter than 10 characters; also includes many local spelling variations. Created by GreatYng.<br />
** Thanks to GreatYng for creating!<br />
<br />
* Added a new xml tag, external_invulnerability_unit_required_count, which works with external_invulnerability_unit_type or external_invulnerability_unit_tag.<br />
** This basically lets us say that a unit of whatever sort is still protected by others (such as guard posts), but only if there are more than the number specified.<br />
** The default number is 0, which means the previous behavior of "any guard posts present make this invulnerable."<br />
** For AI Eyes, the number is now 3, which means that if there are not at least 4 guard posts remaining on a planet, you can go kill the eye.<br />
*** This is pretty huge, because you can now kill just part of the planet and then kill the eye before going to kill everything else.<br />
** If we need to make further adjustments to the Eyes based on the relative ratios of strength of them versus enemies, we can do that in the future, but for now this is a solid start.<br />
** Thanks to Lord Of Nothing and CRCGamer for reporting.<br />
<br />
* Further balance adjustment: all AI Eyes are no longer Mark 7 at minimum. They are now Mark 5 at minimum, and if their planet would have a higher mark (6 or 7) then they will instead have those higher marks.<br />
** This should help to make a bit more variance with them, and eyes to be a bit less of a pain in general.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed HRF Nucleophilic Defenders as well as other defender types not being loadable into transports. Additionally they now count as Frigates and benefit from their hull/shield/damage settings.<br />
** Thanks to Darkshade for reporting and -NR- SirLimbo for fixing.<br />
<br />
* Fixed a couple of issues relating to getMostCommonPlanetForRegiment() with fire teams, which were likely leading to who knows what other errors.<br />
** The PlanetsForRegiment Dictionary was declared as static, and so all of the regiments were trying to use the same dictionary at once, leading to exceptions as well as probably wrong results. Exactly how much chaos this could have caused is unclear, but with some of the LRP threads stalling out this is certainly not going to help (fingers crossed it was the whole thing).<br />
** Now if getMostCommonPlanetForRegiment() is called again on the same regiment before it finishes, it will throw the error "BUG: called getMostCommonPlanetForRegiment() again for a fireteam regiment before the last call finished. Will break both calls." Hopefully we don't have people getting this, but if we do we need to know about it to fix that. In that case, the workingPlanetsForRegiment dictionary can't work as a member variable at all.<br />
** Additionally, if there's an exception in getMostCommonPlanetForRegiment() it will now throw an exception but then exit more gracefully, letting whatever calling code keep doing its thing.<br />
** Thanks to CRCGamer and TechSY730 for reporting.<br />
<br />
* A few versions back, we made some changes to how the icons are rendered on the galaxy map, including planet icons. We made them keep their orientation better, but one of the things that was an unfortunate side effect of this is that the colliders on the lines between planets were often taking precedence over the actual planet or the ships at the planet. That is now fixed.<br />
** Thanks to TechSY730 and CRCGamer for reporting.<br />
<br />
* Heavily reworked how Journal_TooMuchAIP calculates both how many planets you have paid AIP for, as well as how many planets are neutered. It was triggering the journal entry far too early, previously.<br />
** Please see the code or here for details: https://bugtracker.arcengames.com/view.php?id=23609<br />
** Thanks to Sigma7 for reporting, and Badger for helping figure out what was wrong.<br />
<br />
* Fixed old wording on the AI Eyes that still said "when there are enough fleets present on this planet" to instead read "when it is sufficiently outnumbered on this planet."<br />
<br />
== Version 2.130 Civilian Industries ==<br />
(Released August 29th, 2020)<br />
<br />
* For determining what your performance is like, the game now uses only one second of data instead of ten seconds.<br />
** This makes the sim speed average a lot more responsive and natural-feeling.<br />
<br />
* The "suppress upgrade prompt" setting and keybind now both work on fleet upgrades and not just science tab upgrades.<br />
** There is some extra info in the tooltips and popups to reflect this, as well.<br />
** Thanks to Fritz1776 for suggesting.<br />
<br />
=== Second Off-By-Default Mod: Civilian Industries By StarKelp ===<br />
<br />
* The Civilian Industries mod by StarKelp is now included with the game by default (with permission), but disabled.<br />
** This lets people simply enable the mod by clicking a button in the settings menu, rather than having to find and download the mod from elsewhere.<br />
** StarKelp has been a volunteer contributor to the main codebase off and on for a while, and this mod contains both code and xml.<br />
** Full description of the mod is included in the tooltips in the game, but also here:<br />
*** Every empire is only as strong as the people within.<br />
**** Protect your people, and they will help your empire flourish.<br />
**** From collecting and processing various resource around the galaxy to bolster the economy, to taking up arms on their own to aid your survival, you'll find their help invaluable in the long term.<br />
**** As they flourish, so do you.<br />
*** Adds in the Civilian Industry faction, a potent defensive faction that can be allied to either a player, or a faction team.<br />
**** They will expand alongside their respective ally, and produce a large number of defensive forces to aid their team.<br />
**** They gain a new resource type per planet they expand to, and will work diligently to spread these resources throughout their empire.<br />
*** When allied to the player; you will find your command station and battlestations have access to a few new structures that you can invest in to greatly incresae the power of your civilian economy.<br />
*** Please check Galaxy Settings for many tweaks in regards to how they behave.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fixed a bug in GetIsWithinRangeOf() that could happen in the selection logic (and probably other places) if a background thread marked a unit as deleted as it was doing the range check.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* It is now possible that your logs will wind up having the message "BUG: overriding speed limit for group X to [a negative number below -1]. Overflow? Setting to -1 instead."<br />
** If this is frequent, it may slow down your game, but the stack traces will let us know where we are going wrong and causing this to happen.<br />
** We fixed one area where MAYBE this could be caused, but probably that was not possible in the place we fixed it. Most likely the problem is in something that is calling GameCommand_CreateSpeedGroup with a command.RelatedIntegers[0] that is greater than the 32767.<br />
*** With that in mind, anything that is larger than that being passed into that method is now automatically corrected down to 32766. This may lead to some turbo speed groups, not sure, but at least they won't be erroring... and that IS what the calling code is asking for, so maybe it's intentional?<br />
** At the same time, in some other places in the code where it was checking to apply the speed only if it was "not -1", it is now checking to apply the speed limit if it is "greater than 0." This seems more like the correct intent, and hopefully won't break anything.<br />
** And beyond that, prior to serialization, any speed groups with an OverrideSpeedLimit less than -1 will automatically just set their value to -1 silently and thus avoid popup errors that could be really annoying in savegames for folks. This has been an issue on and off since July 24th, apparently.<br />
** Thanks to Lord Of Nothing (twice over), TechSY730, GreatYng, and Apthorpe for reporting.<br />
<br />
* Add a new time_must_have_been_on_planet_before_transforming_if_outnumbered_or_outnumbering, for use with transform_when_outnumbered and transform_when_outnumbering.<br />
** This defaults to 0 seconds, which has been the behavior in the past.<br />
** But now for all of the ships (mostly AI Eyes, but also some guardians) that use transform_when_outnumbering, it now has a value of 2.<br />
** For those that use transform_when_outnumbered, it has a much higher value of 30, to keep them from downgrading their alertedness too easily.<br />
** The AI eyes will still switch between alerted and unalerted status every so often in a general battle, since their alerted status increases the balance of battle in their favor so much, but now it won't be a constant thing and ships can continue targeting them in a reasonable fashion.<br />
** Thanks to whakomatic, Ovalcircle, MasterGeese, Gdrk, and GreatYng for reporting.<br />
<br />
* Additionally, previously anything that was transforming via one of those two methods was having its health and shields and cloaking points all reset to full.<br />
** Now, however, when transformed via these two cases ONLY, it keeps the health and shields and cloaking point losses after transformation.<br />
** This makes it so that battles with AI eyes are actually something you can win, even as they cycle back and forth between statuses. And in general this just makes sense, and is important on the dire guardians that use this same sort of mechanic, too.<br />
** Thanks to whakomatic, Ovalcircle, MasterGeese, Gdrk, and GreatYng for reporting.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* GameCommandTypes are now serialized by index rather than name, which chops off the vast bulk of size from most GameCommands, leading to even snappier networking.<br />
** Honestly this is a very small boost in most cases, but this also took like two minutes to add.<br />
<br />
* The network traffic logs have all been updated to be able to actually report how many bytes were read in for each message that the host or clients receives. Before it was saying ?? because we were checking prior to doing the reading.<br />
** Note that depending on the networking platform in use, there is sometimes extra buffer data that was read from the socket, but if it wasn't part of the game, we just ignore all that. This is also ignoring packet header sizes, so we're just talking payloads here (but that's consistent with the send records, too.<br />
<br />
* In the escape menu, on clients and the host, it now has a new Multiplayer Stats section when you are in multiplayer mode only.<br />
** At the moment, this shows how many messages have been sent or received in total, and how many bytes/kb/mb have been sent.<br />
*** These all apply to the current session only. So if you are the host, it is the stats since you loaded up the server and people started connecting. If clients come and go, it's including all of that. If you're the client, it's the amount since the last time you connected; if you disconnect and then come back, it starts over.<br />
** This is pretty important information in terms of figuring out just how much data is actually being sent back and forth, and how it changes during gameplay, so that we can react to any unexpected spikes if there are any.<br />
<br />
== Version 2.129 No Shrooms For Ships==<br />
(Released August 28th, 2020)<br />
<br />
* Nanocaust now prioritize holding planets adjacent to their homeworld<br />
** Thanks to crawlers for reporting<br />
<br />
* The nanocaust units now prefer to spawn a bit further from their centers; it looked kinda weird when a giant Nanocaust ship would spawn right on top of a nanobot center.<br />
<br />
* Added a lot of extra instrumentation to the deserialization and serialization of factions, since there seems to be some sort of error in there with savegames from specific versions.<br />
** Essentially with this sort of thing on, we can now manually look through the deserialization log and see if we notice where field data stops making sense. It was obvious that it was getting something like "I am hostile to 20 thousand factions," which is nonsense data, but it was not clear where the data was going wrong prior to that.<br />
** From this, we could then see that most of the data reads in the player faction seemed reasonable, but the faction right after them was immediately messed up. This is after a lengthy code review turned up nothing wrong, so it's always possible that it's some sort of edge case that has been around for longer than we thought.<br />
** Added in code to make it so that if an exception is thrown while deserializing a faction, we will now repeat that error better and stop doing further deserialization attempts. It turns out that was what was happening, and a more careful reading of the log could have saved about an hour and a half of work (oh well, things in the future will be easier to debug).<br />
** Thanks to Lord Of Nothing for a very challenging save that led to these changes.<br />
<br />
* Fixed an issue with some savegames that had hacked dyson or dark spire ships, where the HackToGrantShipLine_DontDestroyTarget hack had been removed and split into several versions a few versions back.<br />
** We now have added HackToGrantShipLine_DontDestroyTarget back in, in a deprecated fashion, so that old savegames with this data in it can load.<br />
** Thanks to Lord Of Nothing for the save that let us find this.<br />
<br />
* Fixed a bug in the prior build where the "flair" overlays for ships in the main view were either black (some machines) or a rotating color set of insanity (others).<br />
** One line was accidentally omitted in the new build of the shader that we made.<br />
** We also updated some calling code to the shader in a way that is harmless but not actually needed for this fix.<br />
** Thanks to Strategic Sage, Isiel, CRCGamer, and TechSY730 for reporting.<br />
<br />
* The "Icons Disappear When Camera Lower Than" setting in the main camera window has been updated as follows to have this note<br />
** Note: this setting does nothing (icons always draw) if you have 'Skip Drawing Ship Models' turned on in the Performance section.<br />
** (Also, this is how it actually now works).<br />
<br />
* If a player is already on a planet viewing that planet, and a further command was sent to view that planet again (as if they were not already there), then funky stuff happened in various places, including the wormholes getting half-initialized and not drawing properly in scale.<br />
** To solve this, it simply doesn't do anything if you try to re-open your view to the existing planet you are already on.<br />
** Thanks to StarKelp for reporting.<br />
<br />
== Version 2.128 Don't Lie About Distant Future Waves, AI ==<br />
(Released August 27th, 2020)<br />
<br />
* Fix a bug where the scourge would sometimes suicide into multiple layers of defensive planets in the (foolish) hope of hitting the weak target on the other side.<br />
** This is an intelligence improvement for all factions using fireteams (Hunter, Warden, Nanocaust, Scourge, etc etc).<br />
** Thanks to Crawlers for reporting<br />
<br />
* Add some defensive code to the Fallen Spire.<br />
<br />
* Put in extra logging for the SpeedGroup serialization and deserialization, to figure out where there are occasional exceptions being logged.<br />
** Thanks to TechSY730 for reporting.<br />
<br />
* Sniper Energy Wave on the Dark Spire Eidolon has been renamed to just be Energy Wave, since this is not an infinite-range weapon.<br />
** Thanks to crawlers for reporting.<br />
<br />
* DoForKnownWavesAgainstHumanHomeworlds in WaveUtils has been renamed to DoForKnownWavesAgainstHumanWorlds, which is what is accurate.<br />
<br />
* A whole bunch of extra array indexing calls into QueuedWaves have been made more efficient in the AI HandleWavesForAI() method.<br />
<br />
=== Interface Improvements ===<br />
<br />
* The planet's tooltip has been updated to show the owner on the same line as the planet name, but positioned way over to the right.<br />
** This keeps things pretty condensed, but avoids some clashes of words where it seemed to be saying something like "Permanently Watched Owner:" as one phrase.<br />
<br />
* Previously, there was a chat message going out as soon as a wave was queued, but before it would become visible to the player in the actual interface (based on their chosen galaxy map settings for how much warning to get).<br />
** Now it only shows the actual chat message from the AI as the wave is being revealed to players.<br />
** This also fixes an issue where it was for some reason actually giving the wrong planet name that it was going to attack in some cases, since the announcement came before it finished changing its mind about the real target it wanted to hit.<br />
*** This latter one may have been more common in multiplayer, but it's hard to be sure. At any rate, it just tells you real information now.<br />
<br />
* The second chat message that goes out (with the audio taunt) when waves are launched now also happens when they are revealed, and no longer duplicates when in multiplayer mode.<br />
<br />
=== Mod Compatibility Improvements ===<br />
<br />
* There is a new DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() method that gets called on each faction each frame, and which takes in a note which says if it is the first faction of its type this frame or not.<br />
** This lets us move notifications for factions into their own files, which makes notifications modding-compatible.<br />
** There are some other supporting methods that have been added to handle this, but understanding them is not required for using this,.<br />
** It is worth noting that ALL of the existing DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() calls do happen in a loop prior to the new DoPerSecondNonSimNotificationUpdates_OnBackgroundNonSimThread_NonBlocking() being called.<br />
** As an interesting side effect, this actually makes it so that notifications will now work for people in spectator mode in multiplayer for the first time.<br />
** The nanocaust data has been moved out of the human file as an example of how to do the others.<br />
*** Same for antagonized dyson spheres, and the dark spire. It would be great to get the other factions moved over to their own files for the sake of cleanliness, but functionally there will be no difference for our things in the main game and expansions now.<br />
** Thanks to StarKelp for requesting the ability to add notifications in mods.<br />
<br />
* Added a new method DoPerSecondLogic_Stage0Clearing_OnMainThreadAndPartOfSim_OncePerFactionTypeEvenForFactionsNotInGame().<br />
** This is called on the GetDefaultImplementationForLobbyOrClearingOnly() from the faction TYPES, which means it happens even for the factions not in a game. Great and easy place to clean up, and we know it happens only once per cycle per faction type, and we also know that it happens even if a faction is not in the current campaign.<br />
** This is useful for factions that had some data in a prior campaign, but the player loaded a new savegame and they are not in this one.<br />
** All of the various data from these that was previously in the Human class and in DoPerSecondLogic_Stage1Clearing_OnMainThreadAndPartOfSim() has been moved to the new stage0 for each of the specific class types, which again is more mod-friendly and should prevent the issue of certain mods being unable to clean themselves up between campaign loads.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* When the host is waiting on a client that is behind, it now shows a message saying which clients are behind and being waited on.<br />
<br />
==== Bugfixing ====<br />
<br />
* The galaxy map spacebox background is no longer serialized into savegames. Instead it is deterministically calculated based on the map seed.<br />
** This makes very little difference for single player, although you will notice that reloading the game or going back and forth to the map, or hitting regenerate map on the lobby no longer changes the space background.<br />
** But for multiplayer, this keeps things consistent between all players.<br />
** For existing savegames, you will notice that the spaceboxes become something new and stay that.<br />
<br />
* It turns out that the planet spaceboxes were not being serialized at all in savegames before, but their rotations were.<br />
** This was leading to very different planet background views in multiplayer, to a very distracting degree.<br />
** This has been made deterministic, and we no longer store even the rotations in savegames.<br />
** For single player there is no real change except that the savegames are a tiny bit smaller.<br />
** For existing savegames, you will notice that the spaceboxes become something new and stay that.<br />
<br />
* Fixed inconsistent sorting between runs of the game (and between differnt clients) for rows in the following tables:<br />
** AIGuardPostAndCommandPlacerTable, FleetDesignTemplateTable, AIShipGroupCategoryTable, and SpaceboxDefinitionTable.<br />
** These led to various MP inconsistencies, including the spaceboxes still being divergent on planets despite the math lining up.<br />
<br />
* Fixed an issue where the home planets of other players in multiplayer games just looked like normal planets instead of homeworlds.<br />
<br />
* There were a bunch of cases where human factions were still named wrong during multiplayer (and differently on the host and client), saying the wrong player's name or Unknown Player in various cases. Fixed all of those.<br />
** Additionally, in the case of multiple players owning a faction, if they did not choose an empire name, it now says all of their names together (but no more than three) as the faction name.<br />
** If there are more than three players controlling a single faction, that gets too wordy, so it just says "and X more".<br />
** When loading the single player games of other players, you will now see their chosen account names (from in AI War 2, not Steam or whatever) instead of your personal profile name.<br />
<br />
==== Seeing Where Other Players (Or Spectators) Are Looking ====<br />
<br />
* The way that the gimbal icons decide which diffuse color to use is now more efficient on the GPU (this is minor, but hey).<br />
<br />
* It is now possible to have a secondary diffuse color for the flair (really used for selection circles now), which is multiplied by the main "other diffuse color" of the icon.<br />
** This lets us do things like change the opacity or color of the selection ring around a ship or planet.<br />
<br />
* When you are viewing a planet, the game's way of showing the selection circle around it is the same as it always has been.<br />
** However, when someone else in multiplayer is viewing a planet other than the one you are viewing, it now shows a dimmer and more-transparent selection circle to show you that someone else is looking there.<br />
** If someone else is looking at the same planet you are looking at, then it will show the normal bright selection circle in a faint green rather than white.<br />
** This is something that is deceptively important, because we need to make sure that we know which planets are "tier 1" planets on clients and the host, which lets us verify that ViewedByPlayerAccounts_DuringGame is being set properly on all machines (it is). This keeps the game in the sync, which we can now tell is working properly.<br />
** But also this is just a helpful indicator for players to help with coordination. ("Check out this planet I am looking at in the northeast" is so much easier to say than trying to direct them to a name).<br />
<br />
* As an added help, in the galaxy map view when you hover over a planet, it tells you which other players are viewing a planet. This may be players in exclusive control of a faction, or one of several player players controlling a faction, or just a spectator, so it shows you their name as it would appear in chat.<br />
** For games with more than two players, this is fairly important for purposes of clarity. In a two player game it's easier to just infer what is going on.<br />
<br />
* When a client is disconnected, other clients and the host can still see what planet that client WAS looking at, and that planet still counts as a Tier 1 planet for processing, but hovering over it will show the name of the player with (Disconnected) behind it on the host.<br />
** Presently clients cannot see the status of other clients.<br />
<br />
==== Disconnection And Re-connection Verified ====<br />
<br />
* We can now verify that after a client disconnects in a disorderly way, the host notices a bit later and then continues on without them (they can choose to pause or not).<br />
** We can FURTHER verify that the client can reconnect to that running game with only a few-seconds interruption to other players who are still going. Even if the client had crashed and had to restart the game or their computer, they are able to get right back in there.<br />
** The original AI War did not remotely have any of these capabilities, but this works on all three networking platforms.<br />
<br />
== 2.127 Cranky AI Exceptions ==<br />
(Released August 26th, 2020)<br />
<br />
'''This was originally released as a beta on the 26th, but then changed to a main branch release on the morning of the 27th.'''<br />
<br />
* The Dark Spire now responds properly to being hacked by being cranky<br />
** Thanks to crawlers for the bug report<br />
<br />
* Fix a bug where the AI was incorrectly combining some Hostile To All factions when spawning extragalactic war units.<br />
** This was leading to more extragalactic war units than one would want.<br />
<br />
=== Exception Fixes ===<br />
<br />
* Added new debugging instrumentation into ImportIntoDynamicTable_XMLDirectory, so that we can find errors that may happen in there from time to time on some machines.<br />
** Also put in some code that should make it load faster for mods and expansions that don't have certain folders.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* Also expanded the debugging instrumentation on ReadXmlFileIntoBatchProcessingLists, same reason.<br />
** Ditto DoForXmlFolders.<br />
** And finally, ditto ActuallyImportAllOfTheBatchedRows.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* ArcenXMLElement.GetNewFor has had its debugging instrumentation greatly expanded, and also has been split into one version that expects a data table, and a new GetNewForNonTable variant that does not expect a table.<br />
** The idea here is to catch various forms of errors early.<br />
** This in turn caused a cascade of other changes to other methods needing variants of each other along these same lines, and having better instrumentation.<br />
** Thanks to Ovalcircle for the report of something mysterious in this area on his system.<br />
<br />
* Fixed another rare race condition that could happen with the vis code, this time in SetFormationPositionFromSquad.<br />
** Thanks to NRSirLimbo for reporting.<br />
<br />
* If for whatever reason the game was not able to proeprly write your settings data, it was still overwriting your settings file previously. It will no longer do that.<br />
** Additionally, a lot of extra instrumentation has been put into GameSettting.SerializeGraphicsTo and GameSettting.SerializeTo, so that we will know better what is wrong if it is trying to save improperly. These should also be more resistant to saving incorrectly in the first place.<br />
** Thanks to Isiel for reporting.<br />
<br />
* If a savegame has somehow been made that has a blank savegame in it, then it will try to load it with the info of the current version of the game, with a warning in the log that this may fail very badly.<br />
** Thanks to Isiel for reporting, and providing a save that was probably made while the game was in an invalid state.<br />
<br />
* Fixed a case where trying to load certain saves could fail silently as far as the interface was concerned. Now it actually shows you a proper error message.<br />
** And then fixed a whole bunch of cases where certain code paths on almost-certainly-broken saves would return very genric and unhelpful errors when you tried to load them.<br />
** This doesn't really help us actually load the savegames in question, but tells us more about what is wrong with them.<br />
** Thanks to Isiel for reporting, and providing a save that was probably made while the game was in an invalid state.<br />
<br />
* Suppressed a harmless popup that could happen in ReactToShotHittingSquad during cross-thread race conditions. Now it just fixes the data and moves on.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
== Beta 2.126 Dark Spire, Eyes, and Fixes ==<br />
(Released August 22nd, 2020)<br />
<br />
'''To play this version, please be sure to choose the current_beta branch on Steam. The central game loop changes we made in the prior version did not blow up, but a few other things did, so we're glad we went the beta route. If for some reason this beta has problems but the prior one worked for you, we have temporarily made the most_recent_stable_beta active and pointing to 2.124. But this version should actually be more stable (knock on wood). We'll be back out of beta by mid-week the week of the 23rd.'''<br />
<br />
* Fix a bug with DS Conquest VGs and the new hack<br />
** Thanks to gigastar for reporting<br />
<br />
* Fix a bug with the Full Metal notification<br />
** Thanks to a screenshot from Oval for making me aware of this<br />
<br />
* The AI should now attempt to play voice lines for Exogalactic Strikeforces, and when you spot the Nanocaust.<br />
<br />
* The DS is no longer allowed to spawn Loci on planets with Dark Spire Wards<br />
** Thanks to crawlers for reporting<br />
<br />
* Make the Dark Spire more aggressive about spawning Loci<br />
** Thanks to crawlers for suggesting<br />
<br />
* The player can now choose the starting armory for player-allied scourge<br />
** Thanks to crawlers for suggesting<br />
<br />
* Improve the hovertext for some scourge units just a bit.<br />
<br />
* Fix a bug where new games in the beta weren't starting correctly<br />
** Thanks to Keith and Tynendir for reporting<br />
<br />
* Capturing an AI homeworld no longer generates AIP. This only applies to games creates on 2.125 or above.<br />
** Thanks to GreatYng for suggesting<br />
<br />
* AI Eyes now trigger based on whether you have more Strength on a planet, not off the number of fleets<br />
** This is not necessarily the final state for Eyes, but having them trigger off of 'number of fleets' didn't make any sense anymore. This is a functional stopgap until someone has a better idea<br />
** Thanks to a number of people for discussing, including Flypaste, Asteroid, Democracy, GreatYng and others<br />
<br />
* Fixed typo in multiplayer message.<br />
** Thanks to fwiffoforce for reporting.<br />
<br />
== Beta 2.124 HRF Pacekeeping ==<br />
(Released August 18th, 2020)<br />
<br />
'''To play this version, please be sure to choose the current_beta branch on Steam. If this isn't blowing up in major ways, we'll move it back to the main branch within a few days. If it is blowing up a lot, then it may be into next week before we come back from beta. We changed too many fundamental things with the game loop to just release this with no beta, even though we were careful.'''<br />
<br />
* Minor rework to minor faction hacks. Its now more expensive (in line with the previous hacks). The description no longer mentions an AI response. The DS and Dyson units are now upgradable, but not very much. These are intended to be 'cool little tidbits' but nothing to really swing the game<br />
** Thanks to GreatYng and Lord of Nothing for bug reports and comments<br />
<br />
* Add a 'Full Metal' indicator in the metal bar<br />
** Thanks to Nyarlathotep. Iä! Shub-Niggurath!<br />
<br />
* The hovertext prompt that describes when swapping ship lines will scrap your units has been modified to describe the current behaviour correctly ("Your ships are scrapped if they are loaded, or the flagships are on different planets"). <br />
** Thanks to StrategicSage and Ubifan for reporting<br />
<br />
=== HRF Changes ===<br />
<br />
* The HRF ships now have some unique names.<br />
<br />
* The HRF now create a structure at game start time that you can hack for a new ship line (using the backported DLC2 tech) and for 1K science<br />
<br />
* Fix a longstanding bug where the Human Resistance Fighters would only say their 'defeat' voice lines, not their 'victory' voice lines.<br />
** Thanks to Nyarlathotep. Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn.<br />
<br />
* The HRF should now pack a bigger punch when they arrive, but they are a bit less likely to show up.<br />
<br />
=== Bugfixes And Tweaks ===<br />
<br />
* Some minor improvements to the ability of vulnerable Vengeance Generators to be killed<br />
** Hopefully this helps. Thanks to Lord of Nothing for reporting, and Puffin for suggesting the improvements<br />
<br />
* Better enforce the 'can't repair ImmuneToRepairs' unit interactions. Still a bit weird.<br />
** Thanks to MasterGeese for reporting<br />
<br />
* SerializeByInternalName and SerializeByIndex both now accept FieldName as an optional parameter so that we can see what is happening within them from a serialization logging standpoint.<br />
<br />
* A bunch of extra serialization logging has been added into the world and the faction configuration objects, to make finding errors there easier.<br />
** However, it turns out that there were no public errors on this, just an error in a working copy on one developer machine that had a save from between two updates from that same developer.<br />
<br />
=== Milestone: Multiplayer Pacekeeping Functional ===<br />
<br />
* In the event of a campaign switching which player is the host (this probably means one player manually emailing the game to another), the game now tries to do a better job of handling that.<br />
** In the end this should work fine, but we haven't bothered testing this yet as this is probably kind of an edge case compared to most other things we're working on right now.<br />
<br />
* All of the "frame number" information for sim frames is now just serialized on the network and never to disk.<br />
** This information is really only useful within a single run of a campaign (aka after loading it off disk and playing until you exit to the main menu or the OS).<br />
** Even if you go just back to the main menu and load back into the game directly after, there's no reason not to start those numbers off fresh again.<br />
** We've thus switched to a number format for serializing these that will "only" allow for 160 hours of continuous realtime play in a given campaign, without exits to the main menu. This is the definition of excessive, and could always be changed in the future if it was needed.<br />
<br />
* A variety of variables that really are only for the network, and serialized but not to disk, now have the prefix Network_ so that we can tell those apart with ease.<br />
<br />
* In multiplayer, the basics of "host waiting for clients to catch up" is now in place. This prevents the strange lag that clients were seeing, which was happening because they were back in time.<br />
** However, also in multiplayer, unlike the original AI War, it will not definitely wait around for players who are missing. If those players are not connected, then you can unpause and play without them until they arrive. Only once they are present do you have to wait for them to sync up.<br />
*** If this latter choice turns out to be problematic for some reason, we can always add a toggle for that or change it. But it seems friendly. Chris remembers nights where 1 person out of 4 player game couldn't make it, so just keeping on playing without them would have been so nice versus having to go in and change the status of their account before playing.<br />
<br />
* Various of our "simulation profile" variables that were set a loooong time ago in a different way for multiplayer and single player were making multi-player feel sluggish. We've tightened up this some in order to feel better under a pretty general set of networking conditions.<br />
** We may need to revisit this in the future (during alpha or beta) to make these things that people can configure if they are in a situation of, for instance, high packet loss or extremely high or low pings, to get the best possible experience at any given time.<br />
<br />
* Various other changes have been made in order to make the client send over commands to the host as soon as possible, and then to make sure that the host causes those commadns to be executed on the FIRST simulation frame of the next batch, not the last frame of that next batch.<br />
** All in all, the game now stays in time sync, across Valve's server relays and back, and things are snappy and responsive on both the client and the host. There are moments of delay that cause a brief "waiting" message to flash up for maybe a quarter of a second every so often, but it's really a minor thing and is something that we can improve with tuning in the future.<br />
** The overall functionality is there to the point that if background threads and floating point math were not knocking things out of sync, this would be a perfectly playable alpha. As it stands, it's quite playable for a few minutes at a time, at least on Chris's two test machines, without things becoming noticeably off.<br />
** It's also worth noting that the simulation speed on the host shows up as being something like 80% right after starting the game, which is misleading because it had one very long frame where it was waiting on the client to connect and sync up. That will be fixed in the future, but it self-resolves the visual artifact within something like 20 seconds of starting, anyhow.<br />
<br />
== Version 2.122 Empire Names ==<br />
(Released August 17th, 2020)<br />
<br />
* *Makeshift Drones now once again self-destruct when attacking instead of only self-attritioning slowly.<br />
** Thanks to NR SirLimbo for fixing.<br />
<br />
* The lobby now once again allows for you to zoom in and pan around, since some maps can be larger than you can comfortably see on a single screen.<br />
** However, every time you generate a new map, it will default to showing you the entire map completely zoomed out.<br />
** It also no longer EVER allows edge-panning in the lobby, as just general usage of the lobby will wind up with you accidentally panning the lobby around if that is in place.<br />
** Thanks to CRCGamer for confirming our suspicion that we'd need to do this.<br />
<br />
* Fixed ANOTHER bug with the lines being offset from the planets in the galaxy map, this time when you were zoomed in. The more zoomed in you were, the more off they got.<br />
** This bug was caused by our latest fix to the lines being off when you were zoomed out. Now it should work at all zoom levels. This was an annoying one, to be sure, but we're glad to have it finally lining up all the time.<br />
<br />
* Fix a bug where player-allied scourge weren't building properly<br />
<br />
=== Multiplayer Progress ===<br />
<br />
* Added a new Human Empire Name setting on player factions:<br />
** If left blank, will be the name of the first player controlling this faction. If you want your empire to have a different name than your personal name, you can do that here. If multiple players are sharing a faction, then they can give it a name that represents their shared interest in it.<br />
** This can be edited during the game (like player colors can be), or in the lobby.<br />
<br />
* When a new player joins as a client to a game, it now creates a slot for them and puts them in charge of it instead of them defaulting to spectator mode.<br />
** It assigns their colors properly, and all of that sort of thing, too.<br />
<br />
* Player accounts beyond the first are now removable, which lets players go back into spectator mode, or (later) control a single faction via multiple players helping.<br />
** This makes the default case (everybody has their own faction) set itself up by default, but then lets players back things out into the less-usual cases (shared factions, spectator mode, etc).<br />
<br />
* Players beyond the first are now auto-assigned a starting planet somewhat at random, letting them choose something on their own later.<br />
** A whole lot of logic that was very not-MP-safe is now MP-safe.<br />
<br />
* When loading a savegame or quickstart into the lobby, or loading the last settings for the lobby, it strips out all human players beyond the first.<br />
** This is consistent with it then recreating player accounts as those come in, too.<br />
<br />
== Version 2.121 Savegame Hotfix ==<br />
(Released August 17th, 2020)<br />
<br />
* Fixed a deserialization bug in the prior version that made any games saved with a dyson sphere in them not able to be loaded if they were saved in the prior version.<br />
** The nature of the issue was such that those savegames will now load without issue, thankfully.<br />
** Thanks to Lord Of Nothing, CRCGamer, fatcat__25, GreatYng, Djri123, Djri123, mekolab, and goz for reporting.<br />
<br />
== Version 2.120 Improved Lobby Map Experience ==<br />
(Released August 14th, 2020)<br />
<br />
* Fix a bug where sometimes the AI's ships wouldn't be allowed to retreat<br />
** Thanks to Sigma7 for reporting<br />
<br />
* Hopefully fixed a problem where sometimes allied scourge could kill AI Command Stations immediately after a game load<br />
** Thanks to GreatYng and ZeusAlmighty for reporting<br />
<br />
* Fix a typo with the Spire and Marauder Beacons<br />
** Thanks to Apthorpe and Ovalcircle for reporting<br />
<br />
* Fix a bug where hovering the Hacking resource bar entry would give a negative number during the superterminal hack<br />
** Thanks to GreatYng for reporting<br />
<br />
* Improve the Hacking Resource bar hovertext for the case where you have multiple hackers. Note it still doesn't show hacks against planets.<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* The MDC hovertext no longer mentions Exos<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Exogalactic Strikeforce speed updates:<br />
** Previously, Exos had travelled at 1800 speed (as of a few patches ago. Before that they didn't have a consistent speed).<br />
** Now Exos travel at "Average speed of their units + 20%" or "800", whichever is higher. This should feel less like they are speed-racing to your homeworld. For speed-context, 800 is the speed of a Parasite.<br />
*** Thanks to GreatYng and Lord of Nothing for discussion<br />
<br />
* Fix a typo in the hovertext for larger numbers of planets <br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Remove a mention of Fleet Exp in a tooltip<br />
** Thanks to Lord of Nothing for reporting.<br />
<br />
* Take safest path through galaxy now uses the modifier key alt, while take shortest path now uses the hotkey ctrl.<br />
** The prior hotkeys of X any Y conflicted with other functions and changed your unit stances or sidebar status, etc.<br />
** Thanks to Sigma7 for reporting.<br />
<br />
=== Ability To Reset Camera View To Default ===<br />
<br />
* New hotkey in the camera section: Reset Camera Rotation And Tilt<br />
** Default ctrl+R.<br />
** Press this button combo to reset the camera's rotation and tilt to the default values.<br />
** Thanks to dv, Ovalcircle, Bobtree, and many others for requesting.<br />
<br />
=== DLC2 Backports ===<br />
<br />
* The Dyson Sphere Golem can now be hacked like an ARS for one of a small selection of Dyson ships. You only can use this hack once.<br />
<br />
* The Dark Spire Vengeance Generators can now be hacked like an ARS as well<br />
<br />
* This is a backport of a DLC2 feature that allows for a minor faction to have a structure which can be hacked like an ARS for unique ships. This is usable by modders with only some XML. <br />
<br />
* Approximate usage: in the minor faction GameEntity XML, for the ARS-equivalent, set the following<br />
** Assign it the HackForShipType tag<br />
** Make it eligible for the HackToGrantShipLine_DontDestroyTarget or HackToGrantShipLine hacks<br />
** Then add the following additional fields<br />
*** grants_stuff_to_be_added_to_player_fleets="true" <br />
*** grants_stuff_to_be_added_to_player_fleets_strikecraft_options="X" <br />
*** grants_stuff_to_be_added_to_player_fleets_frigate_options="Y" <br />
<br />
* Then for the ships you want to have available, set one of these<br />
** <fleet_membership name="AddedToFleet_MinorFaction" ship_cap_group="Strike" weight="100" min="30" max="35" faction="factionName"/> <br />
** <fleet_membership name="AddedToFleet_MinorFaction" ship_cap_group="Frigate" weight="100" min="1" max="1" faction="factionName"/><br />
*** Note the FactionName in the fleet_membership must match the name of the faction (I believe it checks the TracingName for the faction, which is set in C#)<br />
<br />
=== Dark Spire Improvements ===<br />
<br />
* There's now a preliminary Journal Entry for the Dark Spire when you first see them.<br />
<br />
* There's now a Journal Entry for when the Dark Spire enter conquest mode (ie from the Fallen Spire campaign).<br />
** This explains what Conquest Mode is, and it's much harder to miss.<br />
<br />
* The tooltip for the Locus now prints different text in Conquest Mode.<br />
<br />
* Thanks to crawlers for the bug report that prompted these enhancements<br />
<br />
=== Galaxy Map And Camera Display Work, Lobby Map Overhaul ===<br />
<br />
* The galaxy object now has a a FindSpatialCenterOfGalaxyInGalaxyCoordinates() method, which lets us find the center point of the galaxy based on however the planets were seeded.<br />
** Also added FindSpatialBoundariesOfGalaxyInGalaxyCoordinates() to let us find the overall bounds easily.<br />
** But actually we're going to not bother using this, turns out.<br />
<br />
* We were also working on a CenterGalaxyOnAllPlanets() method, but we've abandoned that for a different approach. The code is mostly complete and left in for now so that we can revisit it if we find a use for it.<br />
<br />
* The old-style cameras have been disabled for a long time (years) in xml, but we've now removed them from the code as well.<br />
<br />
* Added extensions GetWorldSpaceBottomLeftCorner and GetWorldSpaceTopRightCorner for UI RectTransforms.<br />
** The chat window in the right hand side of the lobby in multiplayer now uses this and a world space to camera transform to calculate its ScreenSpaceLeft, which lets us, regardless of your screen resolution, DPI, aspect ratio, or custom settings in this game itself, figure out where the UI ends and avoid underlappig it.<br />
** Same thing with a ScreenSpaceRight on the map tab left sidebar.<br />
** Same with ScreenSpaceTop on the footer controls, and ScreenSpaceBottom on the header controls.<br />
<br />
* For the galaxy map camera, the zoom now lets you go out farther in the lobby, and even farther in the multi-player lobby, so that it can always fit the map entirely in the main view screen.<br />
** Tested this with the game at 900px wide, 1800px wide, and 2560 pixels wide. In all cases we now come out with a consistent result.<br />
<br />
* Fixed up a bit of logic for the dynamic zoom for resolutions smaller than 1200px x 900px.<br />
<br />
* In the lobby, the galaxy map camera no longer responds to mouse or keyboard input at all. This is an overhaul that has been requested for years and years.<br />
** Now the lobby always has the map as zoomed out as it can.<br />
** It is also centered in whatever the available space is (depending on if the right-hand sidebar is there or not, that may or may not be centered on the actual screen).<br />
** This is extraordinarily useful, in that it lets you cycle through maps with ease, and there is typically not too much detail that you need to see in them like you would during an actual game.<br />
<br />
* The math for how much the galaxy camera should be able to zoom out has been entirely re-coded from scratch, and is now vastly more efficient as well as something we can actually follow.<br />
** Instead of taking something like a thousand loops to get a kinda-bad answer, it now takes typically under 60 loops (often under 20) to get a highly accurate answer.<br />
<br />
* In the galaxy map display calculations, and number of strange magic numbers were removed, now that we have the proper math in here. Wow this was unexpectedly hard.<br />
<br />
* At very long distance zooms, the planets were STILL being visually offset from their lines that they were above, it turns out.<br />
** This had to do with how we were offsetting the icons in order to avoid z-fighting, and how that was getting magnified by us scaling up the planets at further zoom distances.<br />
** The fix for this might introduced some z fighting, but probably will not because of the way that we are rendering these as "cutout" style transparency, and with GPU instancing determining the order of draw.<br />
<br />
* In the lobby, the planet you own is no longer ringed in white selection, as the in-game "planet you are on" is done. Now it just shows the planet color, plain and simple.<br />
<br />
* In the lobby, if you have the setting "always show planet names" on, it still won't do that, because that will make the fixed-size galaxy map potentially impossible to read.<br />
<br />
* The galaxy map in general shows planet names that are un-owned as being far less blinding white in their text.<br />
<br />
* In the lobby, it no longer shows the first owning player name under the name of the planet.<br />
<br />
* The visual scale of the actual planet spheres in the lobby is now about a two thirds what it previously was, but the text is almost as large as it was before. If the text is too small, we can adjust it up.<br />
<br />
* In the lobby, hovering over a galaxy map link no longer highlights the two planets adjacent to it, since that is visually confusing in that context only.<br />
<br />
* Added ShowTooltipNarrow() and ShowTooltipWide() to the IPresentationLayer and IBattlefieldHandler, so that we can trigger tooltips super-directly from deeper-in code.<br />
<br />
* In the lobby, hovering over planets now makes it show a tooltip at the mouse cursor that says the name of the planet (since that might be obscured by being very near the top of the screen, now), but also some other information.<br />
** It says how many wormholes there are, and gives a comment if that will be extra hard to defend.<br />
** It also shows the name of any human players who are going to have that as their starting planet, in their appropriate colors based on their faction color.<br />
** There was some funky stuff in the hover logic for the galaxy map that made this super difficult.<br />
<br />
* Fixed a funky bug relating to tooltips that were showing the same text as before, but had themselves cleared and then wouldn't keep showing the text anymore until it was given different text.<br />
** The first time this ever manifested was in giving tooltips on the lobby galaxy map, but it's an old old bug.<br />
<br />
* Fixed an issue in the lobby where it was not showing the names of planets automatically for planets owned by players other than yourself.<br />
<br />
* The map types list in the lobby has always been kind of randomly organized, which was annoying. More recently, it has been in a different order every time you start the game.<br />
** Now it is in the order Realistic, Simple, and then all the others alphabetically.<br />
<br />
* Fixed a bug when loading directly into the game and not visiting the lobby where it did not set the dynamic zoom properly in the last few internal builds.<br />
<br />
* Also fixed a boneheaded typo in the very most recent internal versions that was making the height of the dynamic zoom calculation slightly off.<br />
** There is still something a bit off with the squares map type and how it displays in the lobby (it is offset upwards and also shown too small), but all the other map types work and so this seems to be some sort of data issue with that map type and not a problem with our central algorithm.<br />
<br />
== Version 2.117 Ion Cannons And Melee Units ==<br />
(Released August 11th, 2020)<br />
<br />
=== Balance Work ===<br />
<br />
* Ion Cannon Shots can now:<br />
** Damage both the personal shields and hull of a target in one shot (including killing it outright).<br />
** Kill multiple ships in the same stack in one shot.<br />
** Thanks to GreatYng for pointing out the oddity of Ion Cannons not being able to do these things.<br />
<br />
* AOE shots can now hit any enemy bubble shield overlapping the explosion, rather than only being able to hit the shield if the generator (or something it's protecting) were physically within the explosion.<br />
** Thanks to NRSirLimbo for reporting and RocketAssistedPuffin for the save.<br />
<br />
* Crippled units (i.e. player flagships) can now pass through enemy bubble shields and traverse wormholes covered by them, to avoid being stranded in hostile territory.<br />
** Thanks to tadrinth for reporting and RocketAssistedPuffin for the save.<br />
<br />
* Melee units in attack-move mode will now go after units within a limited range (equivalent to a weapon with range=Normal1), so you have a middle-ground between "only attack your direct target or things actually touching you" and "pursue anything on the planet".<br />
** Also, even when not in attack-move mode, player melee units without orders (and not in hold-fire mode) now automatically move to attack nearby targets. If all such targets die or move away, the melee unit goes back to where it was.<br />
** Thanks to OzoneGrif, wm46, RocketAssistedPuffin, and Ubifan for the suggestions and saves leading to this change.<br />
<br />
* Fixed a bug where deathgrip tackle drones had a gun that could shoot immobile targets, greatly confusing their logic. That gun now has the only_targets_mobile_units flag.<br />
** Also fixed a bug where tackle-drone-launchers could give their spawned drones a direct attack order to go after an immobile unit.<br />
** Thanks to tadrinth and RocketAssistedPuffin for the reports leading to these discoveries.<br />
<br />
=== Bugfixes ===<br />
<br />
* Scourge: fix a bug where player-allied scourge were building tons of Builders but no Fortresses (they were mistakenly thinking they were minor faction allied)<br />
** A number of people on discord noticed the lack of Fortresses<br />
<br />
* Potentially fix a bug where Regenerator Golems were regenerating things while crippled<br />
** Thanks to crawlers for reporting.<br />
<br />
* AI Reserves now will create anti-player zombies.<br />
<br />
* Take another stab at 'adjacent planets watched'. Sigh.<br />
<br />
* Fixed an issue where on computers without GOG Galaxy installed, they would get a harmless-but-annoying error message at game startup.<br />
** Thanks to Badger for reporting.<br />
<br />
* Minor tweak to target list planning; use a case insensitive comparison for zombification.<br />
<br />
* The 'total units' count should now include stacks.<br />
<br />
* The AI "Great-Turrets" are now simply called "Turrets" again, as at this point balance-wise the player turrets and AI turrets are similar.<br />
** Thanks to GreatYng and RocketAssistedPuffin for bringing this to our attention.<br />
<br />
* Exogalactic War Units now use a better spawn-in message than before<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Fix a problem with the Custodian description text<br />
** Thanks to GreatYng for reporting<br />
<br />
* The semicolon was previously not supported by our chat log format (our "condensed ascii"), but now is.<br />
** Thanks to Badger and Sigma7 for reporting.<br />
<br />
=== Multiplayer And Lobby Work ===<br />
<br />
* Heartbeat messages from the client to the server and vice-versa are now omitted from all of the networking logs. They were making things far too cluttered for us to be able to see real information when we had network logging of various detail levels turned on.<br />
<br />
* Some excessive logging on GOG and Steam with regard to their send result statuses has been removed, as again this was clogging up our network logs.<br />
<br />
* The clients now have a secondary FromClientToServer_SignalDoneButHasNoCommands that they can send in place of the FromClientToServer_SendMyNextCommandBatch when they don't have any commands to send (which is most of the time, statistically).<br />
<br />
* GameSpecificNetworking now has a DoPerFrameLogic() method, which lets us efficiently set some per-game settings like we do for the arcen debugging stuff.<br />
<br />
* New setting in the Network section of the settings menu: Network Logging Includes Frame Auths.<br />
** In the lobby and during gameplay, there are messages sent by the network every 100ms or so to keep themselves in sync, and if you have them included they will tend to crowd out the rest of the messages that are sent. So by default these are disabled.<br />
<br />
* New setting in the Network section of the settings menu: Network Logging Includes Command Batches.<br />
** In the lobby and during gameplay, there are messages sent by the network as frequently as every 100ms, but more often some sporadic multiple of that. This is how factions tell everyone what they want their ships to do, and how human players say the same. There's very little that we can say about this in a meaninful way in the networking log level, and again this will tend to crowd out the other messages that happen. So by default these are disabled, but bear in mind that most things that players actually cause to happen are being caused through these batch messages.<br />
<br />
* Found and fixed a general issue where the player accounts were not properly being cleared (and fully resetting the player account IDs) during all cases where a game is loaded into the lobby. At a bare minimum, it was affecting the "open a custom game with my last settings."<br />
** That would have eventually led to out of bounds exceptions, over time, and in general was cluttering up some areas important for multiplayer, but it had not had a negative impact on anyone so far.<br />
<br />
* Fixed a bug that was causing all sorts of craziness on clients in multiplayer in the lobby, with them not getting their galaxies full cleared.<br />
** This was leading to things not being properly in sync between the client and host, like planet names or locations, and things like extra planets or planets in old locations, or noninteractive planets at a whole other scale visually from the real planets. It was quite messy! All of that is now corrected, thankfully.<br />
<br />
* In the lobby, when you change the number of human factions, it now regenerates the map immediately. For other factions it does not bother, never has, because there's nothing different to see at this point in the galaxy.<br />
<br />
* The WorldSetup objects now have a readonly SetupTypeName on themselves, so that we can tell what they are.<br />
** ChangedSinceLastMapGenCall on this same object is now a property, which lets us throw out debugging messages when it is being triggered for whatever reason.<br />
** Something has been causing extra calls to be sent through the map generation pipeline in a redundant fashion that makes everything slower than it needs to be.<br />
<br />
* Removed the ability to send a WorldSetup object via GameCommand, as that is actually highly antithetical to the way we edit that data as of the last year and a half or so.<br />
** We specifically try never to adjust the entire thing, because several players at once could be editing different parts of it and we want those bits to all merge at once.<br />
** Got rid of the SetupOnly_ChangeSetup GameCommand, which was set to use this sort of thing.<br />
** Got rid of the LobbyWorking_HasBeenChangedAndShouldTransmitChanges() method on WorldSetup, which was being used by a loop in the footer to keep clients up to date.<br />
*** The problem with this is that this was far older code, back from perhaps 2017, and it was using an older and more sledgehammer-y approach to try to keep clients and the host in sync. When the lobby was redone in 2019, this became obsolete but was still hanging around and so caused some nontrivial chaos.<br />
** LobbyWorking_HasBeenChanged() has also been removed, as it seemed duplicative and was no longer in use perhaps?<br />
*** Oh goodness, this was actually how we were ever updating the long-term stored version of the game (as opposed to the lobby working copy). This was not a good way to do it, but it was not quite as antiquated as we thought.<br />
<br />
* Fixed a rare nullref exception that could happen in the ships sidebar if you were not properly on an actual planet.<br />
<br />
* Fixed an issue from the last few months (probably) where if you had an error during map generation, it would still try to dump you into the world and then give you tons of other errors. It should have been stopping you and making you fix whatever was wrong.<br />
** This is most common when there are not enough planets for all the factions you have chosen, or a few other rare cases. One such case is just discovered internally, and that's you having a planet starting index that is higher than the number of planets currently in the world.<br />
<br />
* Helper_AssignHumanHomeworld() and the AI variant are now Helper_TryAssignHumanHomeworld() and an AI variant.<br />
** It was already quite possible for these to fail if the player had selected something invalid, such as previously having clicked a planet with an index above 40 and then choosing a map size of 40 planets.<br />
<br />
* The game now auto-assigns humans a planet that is valid if they don't have a valid option, and it does so in a multiplayer-compatible fashion.<br />
** Previously this tried to do the assignment, but did not do so in a way that worked, and even if it had worked it would have only worked for one player.<br />
** This also includes a new sub-gamecommand, StartingIndex_FromAutoAssignInMapgen, which efficiently lets the UI know what is happening without triggering an extra map generation cycle or accidentally overriding a distinct change made by the player.<br />
<br />
* The lobby is now substantially more responsive even in single player, although it seems to be having some extra calls that we are still hunting down.<br />
<br />
* Fixed an annoying issue that was causing an extra regeneration of the map to happen when you first went into the lobby in single player or as the host, leading to the lobby load time being half a second or so longer than it should have been.<br />
<br />
* Fixed an issue where if one person in the lobby adjusted the following fields, it would not be reflected for the other players in the GUI (but would in the map itself):<br />
** Planet naming style.<br />
** Map type.<br />
** All of the other map sidebar controls were showing things properly and also able to be controlled from any client or the host.<br />
*** Do bear in mind that if you manually enter a map seed, it won't appear for the other players until you hit "Regenerate Map," but given that does not actually affect the map until that button is pressed, this should not be overly surprising.<br />
** All of the faction controls and their sub-controls have been workign properly from the start, and still seem to be.<br />
** Same thing with the galaxy option controls (all of them), which is pretty exciting.<br />
<br />
* The "Campaign Name" is something that is only for savegame management, and thus is only relevant on the host side. The clients now see "Will be set by host" as the text in that box, and cannot change it.<br />
<br />
* The "Start Game" button is also something that we are limiting to be host-only, for a variety of reasons. The biggest is that they need to set a campaign name, but that's entirely host-side.<br />
** Clients clicking this button now get a message that asks them to wait for the host to do it.<br />
** Actually, for the sake of ease of use, the "Reset To Defaults" button and this one are just hidden on clients in multiplayer. Clicking Reset to Defaults on a client results in an error for a lot of good reasons based on how it is trying to accomplish that.<br />
<br />
* All of the lobby controls now seem to work properly for both the host and client. There are still some things in chat that are messed up, and we're missing controls for making clients not always be spectators, but we can also get into the game.<br />
<br />
* Fixed the harmless but annoying "StartingIndexChanges: factionIndex 1 passed when faction count was 0" error message that would happen on clients after a host gave orders to start.<br />
<br />
* The campaign name and its textbox is now just plain invisible for clients in a multiplayer game, again to avoid confusion.<br />
<br />
* The right-hand sidebar in the lobby in multiplayer is now split into two scrolling parts.<br />
** The top part has information about the connected players and the factions that they are a part of, and never auto-scrolls around.<br />
** The bottom one has the actual chat messages, and auto-scrolls to the bottom when new messages come in.<br />
** The fonts of both are a bit smaller, from size 12 down to 10.<br />
<br />
* From past changes, we can now verify that the proper name shows up for clients on the host, instead of it just saying "Player 2" for them.<br />
** However, text messages from the client in the lobby show up with the color of the client but the name of the host?<br />
<br />
* Hitting enter while in the chat textbox in the lobby now actually sends the chat properly, as already worked in the main game.<br />
<br />
* In the multiplayer lobby, the top panel now shows the status of the various PlayerAccounts that are in a game. Specifically it shows any who are connected or disconnected, or which ones are you, etc.<br />
** It also shows players that have an account in this game at the moment, but who are absent.<br />
<br />
* Fixed a bug where player accounts were being created with the name of the host, not the connecting client, which was confusing all sorts of things.<br />
<br />
* The preferred colors from the player profile on each local machine is now sent over and applied to their player account for later reference. This was also causing endless new player accounts to be created, since there was never a match to the connecting client.<br />
** A variety of pieces of code had to be updated to support this.<br />
** Apart from them selecting a color for their faction, this gives them a chosen color in text chat.<br />
<br />
* Added a new OnEndEdit() event for text input boxes, which lets us trigger things when a player clicks out of a textbox.<br />
** This now happens for the map seed in the galaxy map, same as with hitting enter, as both now trigger an immediate regeneration of the map (without you having to hit regenerate map manually).<br />
<br />
* Faction colors for player factions now come from the network data rather than just the local data, which is important for multiplayer.<br />
<br />
* Fixed the bugs with lobby chat messages not appearing properly on the client and host in various ways.<br />
<br />
== Version 2.116 GOG Networking Done ==<br />
(Released August 6th, 2020)<br />
<br />
* Fix a bug where the 'Watch Extra Hops Worth Of Planets' code was being applied incorrectly<br />
** Thanks to Tynendir for reporting.<br />
<br />
* Fixed a bug where Macrophage Spores don't move to new planets when loading a second save game.<br />
** Thanks to GreatYng for reporting, and StarKelp for fixing.<br />
<br />
=== Milestone: GOG Galaxy Networking Integration Complete! ===<br />
<br />
* The Arcen GOG Wrapper has been majorly updated to get your GOG Galaxy Friends list and the status of them so that you can play multiplayer with them if you want to.<br />
<br />
* When you are in the GOG networking mode, it now shows the list of your friends, just like it does for Steam.<br />
** Basically all of the functionality is identical here, in terms of how it shows those who are online, offline, and in-game, and lets you filter between them, etc.<br />
** The one difference is that in Steam we show the "in this same game" status as a light green (like Steam does), and in the GOG version we show that status in a purple color (to match their color theme).<br />
<br />
* The host computer now is able to open up a lobby for friends when it says "open server."<br />
** This works with all the various NAT punchthrough that GOG Galaxy supports, which we are not entirely clear on the details of. This may be as robust as Steam, or slightly less so, but we honestly have no idea. We'll be interested to hear from you! But either way, it's out of our hands at that point, so it's just information gathering.<br />
** The host is also now properly destroying the lobby when it shuts down, so that others won't try to connect to it and not see it.<br />
<br />
* When clicking the Join menu in GOG, the client now sees lists of their friends with four categories instead of just three.<br />
** Friends who are in-game but not in a lobby right now are showed in a dull light purple. Friends who are in game and have an open lobby show up with a bright purple status.<br />
** You can also cycle through all friends, open lobbies, friends in this game, and online friends.<br />
<br />
* In the listing of connections, for GOG it now shows a button that says "closed" instead of "connect" next to each friend who does not have an open lobby.<br />
** With Steam, someone could be in offline status but still let you connect to them. With GOG, we have to have a lobby ID to connect to, so there's no way to hide that and still even attempt a connection to someone.<br />
<br />
* GOG clients are now able to search for lobbies and correlate those to their friends list, which under the hood is a several-step process.<br />
** We are filtering out any potential rogue lobbies created by bad actors, and correlating them specifically to those owned by your friends.<br />
** It's possible that a friend might jump from the status of being offline (prior to opening the lobby) to showing up as someone you can connect to (when they open the lobby), actually, so potentially this actually does allow for the same sort of quasi-stealth game connections that people can do using Steam.<br />
** That said, since lobbies have to be advertised (to your friends) and we can't have a client just blindly try connecting by userID like in Steam, if you open a lobby and your other friends are actively in GOG looking to join a game of AI War 2, they would see that. Not a big thing, probably, but it's something we've noticed about the nature of these two differing systems.<br />
** You may find yourself having to hit refresh a few times on the client side in GOG, as there is a few seconds of lag before the lobby that the host creates shows up. It seems to be under 4 seconds at the most in current tests.<br />
<br />
* GOG clients can now actually initiate connections to a host lobby. And it works!<br />
** The client is aware of getting into the lobby, although it takes a few seconds.<br />
** The client also does gracefully tell them that they are leaving the lobby, and the GOG servers and the host are both finding out about that properly.<br />
<br />
* The GOG Galaxy networking client is absolutely fully implemented, now!<br />
** A huge amount of the actual send/read logic was able to be pretty much identical to Steam, which was not super far off from what we did with LiteNetLib.<br />
** Pro tip: if any other developer is ever wondering about SendP2P messages on the GOG network, those can take any size, not just stuff under 1200 bytes. It handles all of the fragmentation and recombination extremely well, and just as fast as Steam or other services.<br />
** The initial connection process to a lobby with GOG is a bit slower from North Carolina in the US than what we are seeing to Steam, ranging from 4-6 seconds on the first creation of a lobby on the run of a game to 2 seconds for ones after that. But once the connection is established and brokered, it's easily as responsive for us as Steam.<br />
** For us, this is routing through the internet and some firewalls, so the NAT punchthrough or relay servers or whatever it is in this case seem to be doing their job. We certainly did not mess with any ports.<br />
** Because of the nature of how data is read in from the buffers in GOG, we actually were able to get slightly more efficiency and speed with how we manage the heap compared to Steam or LiteNetLib. It's probably not usually a huge advantage, but it is something that we appreciate the efficiency of.<br />
** Essentially all three of the networking options have their own pros and cons a bit, but are all extremely good. That's a real relief to see, and to see them all working.<br />
** At this point it is now down to making the game networking actually work properly to have the game run, and that's a networking-framework-agnostic process.<br />
*** In a lot of respects it feels like after a large move of house, where all our stuff is now out of the old house and into the new house, but we still have a lot of unpacking and arranging to do. It still feels excellent to be done with the movers and have everything in one location now.<br />
<br />
=== More Multiplayer Work ===<br />
<br />
* Removed some old and unused code that is from the Valley Without Wind versions of multiplayer, checking for disconnections due to inactivity. We are handling that at a lower level, now.<br />
<br />
* Got rid of some old code that was mainly in the older version of our engine pre-Raptor, which was checking for "pthread exceptions" that was never something that could happen in the newer engine that we've replaced it with.<br />
<br />
* The game now has some self-checking code in there for giving us some actual feedback when it decides that it can't run the simulation or show visuals for more than 3 seconds at a time.<br />
** This is a pretty rare case, but it was the "too many changes and the client machine goes to black screen and unresponsive" issue.<br />
** This may have fixed the issue, although there also seemed to be another issue that was related to this.<br />
<br />
* Took out some other unused and old data.<br />
<br />
* The "UseSeed" command in the lobby no longer triggers the gamesettings to be saved. That was not useful, and slowed it down for no good reason.<br />
** It turns out that this was blanking out the settings data in a strange way a lot of the time, and causing the black and white view of the game after you reloaded. It also was apparently directly the cause (somehow) of the infinite black screen on the client after this was triggered.<br />
<br />
* Put in a lot of extra error handling for the steamworks networking in particular in case it has internal exceptions while trying to send something.<br />
<br />
* The cumulative effect of a lot of these changes has basically fixed a ton of issues in the lobby, including:<br />
** Clients not being able to use certain buttons or dropdowns.<br />
** Certain dropdowns not showing the right values to clients.<br />
** The client and the host getting a different view of things after certain buttons or dropdowns were used.<br />
** For a while there I was thinking that I was maybe going to need to make some of the controls for the lobby host-only, but now that's definitely not the case!<br />
<br />
== Version 2.115 Imperial Summons ==<br />
(Released August 4th, 2020)<br />
<br />
* You can now have multiple copies of the Devourer and Zenith Trader in a game<br />
** There's no technical reason for this limitation, and we're encouraging Zenith stuff because of the coming Onslaught<br />
<br />
* Quickstarts are sorted alphabetically again, instead of when the quickstart was created<br />
** Thanks to ArnaudB for the bug report<br />
<br />
* Add some defensive code to the Dyson Sphere<br />
** Thanks to GreatYng for reporting.<br />
<br />
* Fixed a cross-threading nullref exception that could happen during unit unselection (probably due to it dying).<br />
** Thanks to GreatYng for reporting.<br />
<br />
=== Imperial Fleet Summoning Changes ===<br />
<br />
* The AI now generates some weaker bonus exos against miscellaneous player targets (energy producers, MDCs, GCAs, etc), just to keep things exciting.<br />
* Fix a bug where Exos were trickling into their targets instead of moving as groups.<br />
* Start the Exos the moment you finish the hack, instead of some random time < 30 seconds from when the transceiver finishes.<br />
** Blame MasterGeese for these changes<br />
<br />
=== Multiplayer And General Lobby Work ===<br />
<br />
* The "partial map generation" code for giving a preview in the lobby now does even less work, bringing our mapgen times down to 200ms or so on average.<br />
** Because of this, we've also moved the mapgen code during partial-map-generation onto the main thread, to keep things as fast as possible. The full map generation still happens on a dedicated background thread.<br />
<br />
* During the lobby, the way that we handle the execution frame loops is now entirely new, and basically skips over a lot of things that were artificially introducing lag.<br />
** This makes the lobby perform far better in general, and also makes the map generation times absolutely flyyyy compared to what they were before, on single or multiple player maps.<br />
<br />
* This is leading to a number of substantial bugs in the lobby, temporarily, but will make the lobby performance far superior in both singleplayer and multiplayer as we get those resolved.<br />
<br />
* The silent "generate partial map" or "generate full map" complete messages now tells you how long it took.<br />
<br />
* The way that mapgen works, it now has a couple of different contexts that it passes in, so that each one has its own random number generator that is not dependent on the others.<br />
** This lets us ensure that there is consistency between runs of the same code on different machines, and on the detailed version (for play) and the non-detailed version (for viewing in the lobby).<br />
** This is largely solving the issue that we just have started having in this latest round of internal builds with a difference in the final map and the original map.<br />
<br />
* Renamed the Generate() method on map generators to GenerateMapStructureOnly() to be more clear, and also make our code more eaily searchable.<br />
<br />
* Adding a planet to a galaxy no longer requires passing in a context object at all. It now generates its own internal random number generator for its initial variables based on the galaxy map seed, its index, and its original position.<br />
** One of the side effects of this is that now when you change which planet you want to be your starting planet, it will keep the name the same instead of shuffling them around.<br />
** This sort of name-stability has actually never been in this game before, and always was mildly annoying. But in multiplayer lobbies it was going to be even more annoying. "I'll take Adam." "Okay, sure." "Well, I clicked it and now it is called Brian, but that's the one I meant." "Wait, what?"<br />
<br />
* When you are loading a savegame or a quick start as a template into the lobby, it now immediately regenerates the map rather than using the old map, because it's highly likely that the new structure will be different in some fashion.<br />
** This then also solves the problem of clients being different from the host on first connect, probably; that was kind of a compound problem in general.<br />
<br />
* Fixed an order of operations issue that could lead to the occasional "No human players found to seed homeworlds for!" error in the lobby in general, but more recently in multiplayer more frequently.<br />
<br />
* Possibly fixed the issue with later player accounts in multiplayer being renamed incorrectly to "player 2" and such.<br />
** There is still a fair bit of duplicate data happening between data structures, and some lobby/startup code that is blatantly single-player-specific that we need to get sorted out.<br />
<br />
* Dramatically cut down the time it takes to generate planet random seeds, but still with keeping them consistent as you click around the galaxy, by pre-generating the random seeds as the first 300 calls to the "broad random" for the galaxy. Any seeds needed after that will be generated the slow-but-unique way. This means mainly things like nomad planets or other things that are late additions. When just adding a planet or two, it's not so slow as to be a problem.<br />
<br />
* Until now, if you loaded an existing savegame it would automatically put you in control of the first player account, even if your profile name did not match.<br />
** It now continues to do that when you are loading as a single player game, which is enormously helpful for testing and just in general, really. But in multiplayer, it now tells you a list of what the available profiles are, <br />
** In general, if you are loading something as a template, it now clears all the old player account data and loads in your own current name as the new first player account (and further players are already added properly as they connect).<br />
<br />
* Fixed up the way that planets are shown as colored in the lobby galaxy map, so that it will work well with multiplayer and also with the new faster single-player-generated stuff.<br />
<br />
* Improved the logic for it properly setting you to be viewing the new planet you've selected after you make a selection in the lobby. Another thing that did work, but with the revised logic had to be made to work all over again.<br />
** This concludes the fixes to all the known bugs that we are aware of that we've introduced into the lobby today.<br />
<br />
* Fixed another nullref that was happening only on the multiplayer custom games after today's changes.<br />
<br />
== Version 2.113 Dyson Growth ==<br />
(Released August 3rd, 2020)<br />
<br />
* Fix a null reference exception if the game wants to spawn a Relic but you own basically every explored planet<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fix a bug with Dyson Sphere units not marking up<br />
** Thanks to GreatYng for reporting<br />
<br />
* Fix a typo in a Battlestation description<br />
** Thanks to ovalcircle for reporting<br />
<br />
=== Multiplayer Work ===<br />
<br />
* Fixed one oversight that was causing the factions tab chat to not show its chat text properly, unlike map and options in the lobby.<br />
<br />
* As text messages come in inside the lobby, it now scrolls to the bottom of the chat window, as you would expect.<br />
<br />
* The maximum length of chat messages in the lobby is now 1000 characters.<br />
<br />
* GetLocalPlayerFaction() is now GetLocalPlayerFactionOrNull(), to support spectator players.<br />
** Additionally GetFirstPlayerFactionOrNull() has been added, and GetIsFriendlyToLocalFaction() and GetIsHostileToLocalFaction() have been updated to work based on that in order to extend support for spectators even further.<br />
<br />
* Planet visibility is no longer determined from your local faction (since for spectators that might be null, and for all humans it is identical anyhow). It now just uses GetFirstPlayerFactionOrNull(), since that's slightly more effient and supports spectators.<br />
<br />
* Huge areas of the AI have been updated to allow for spectators, generally giving them information that mirrors that of what the first player is seeing (objectives-wise and so on).<br />
** In other areas, it simply updates things to not erorr out when you hit hotkeys, etc.<br />
** Spectators also can't run "cmd" messages from chat; it will just show the text as if it were not a command.<br />
<br />
* GetLocalPlayerFaction() on the planet object has been removed, as that did some risky caching for multiplayer in general, and also was not really compatible with spectators.<br />
<br />
* Fixed a couple of errors where non-sim-but-background-fation-AI code was referring to the local player faction. It now refers to the first player faction.<br />
** Probably this would not have made much difference, unless the game switched hosts partway through or something like that.<br />
<br />
* The chat controls in the lobby now work, though there are some bugs in them still.<br />
<br />
* The correct name for each player faction now shows up for even for players who are in spectator mode.<br />
<br />
* Player factions in spectator mode now see in the lobby chat area that they are in spectator mode.<br />
<br />
* Both the lobby chat and main game chat now support more characters in their text -- basically anything that our "condensed" ascii format is allowed to display.<br />
<br />
== Version 2.112 Steam Networking Complete ==<br />
(Released July 31st, 2020)<br />
<br />
* The description of the Ensnarer Battlestation now explicitly mentions that it can use AI Great-Turrets<br />
** A number of people have reported this as a bug over the years, so hopefully that won't happen anymore<br />
<br />
* All of the Fallen Spire ships, including those in the Spire Railgun Shop optional mod, have had their health and shields doubled, but their firepower halved.<br />
** This should make battles with other mega-units last longer, which feels more appropriate, but keep their "damage over time" the same. <br />
** When these were going toe to toe with the AI Exogalactic War Front units, they seemed to disappear too quickly, making them feel weak. This should keep their effectiveness the same as before, but make the battles take about twice as long with those large ships, so that it doesn't feel like instant evaporation at least.<br />
** The one unit not adjusted is the Spire SuperDreadnought from the Spire Railgun Shop mod. That was already maxed out as a "kills everything and is basically invincible" sort of ship.<br />
** Thanks to a variety of players for weighing in on the feel of these units, and Badger for suggesting this adjustment.<br />
<br />
* Rather than having a slider for the number of planets in the galaxy map view, there is now a dropdown.<br />
** This prevents the intense "regenerate map spam" and lag that was inherent in using a slider, along with making it easier to choose a certain number of planets.<br />
** We have made it so that it only gives you multiples of 2 below 60, multiples of 5 below 100, and multiples of 10 above that. This makes it easier to quickly peruse the range.<br />
** Each entry has some commentary on what it will mean to the feel of the map if you are hovering over it in the dropdown with the number of planets expanded.<br />
** Actually, it wasn't even regenerating the map after you changed the number of planets, which was really confusing! You had to hit regenerate map. Now there is no confusion.<br />
** All of this is easier to use as a player in general, on top of being something that is easier to deal with in multiplayer for sync purposes, too.<br />
<br />
* Fixed a longstanding bug where dropdown selections that were open could persist when leaving the lobby or changing tabs within the lobby.<br />
** Thanks to MaverickPenkenn for reporting.<br />
<br />
=== Milestone: Steam Networking Integration Complete ===<br />
<br />
* Fixed an issue where multiplayer clients disconnecting from a host would try and fail to save the last settings from the lobby. Now it does not save the lobby settings from a session you are just a client of.<br />
<br />
* All of the networking frameworks have had their "send to anyone here and myself" code consolidated into the network authority, so when an interface is partially implemented it won't wind up stalling out waiting on the host.<br />
** Less code duplication is also always good, but it wasn't clear that this was a complete commonality until we got partway into the Steam framework implementation.<br />
<br />
* A new ArcenSteamClientConnection wrapper has been created to keep track of the Steam connection on servers.<br />
** This now properly is registered while the steam connection is alive, and all of the "waiting for player to connect" and "player disconnection" events now happen properly.<br />
** For some reason, we are not getting the "host has accepted you" callbacks on the client end, but that doesn't really matter. As we start actually having our challenge-response data sent via the higher-level networking code, that bit will become irrelevant as it establishes itself within part of one second anyway. It's just a curiosity, or potentially something that is only meant to trigger host-side. Frankly the documentation is sparse in points, both from the Facepunch C# wrapper and the Valve C++ baseline, so this might be working as intended.<br />
<br />
* Substantial progress on the Steam network transmission of data. Still not quite seeing it register yet, but we're getting close.<br />
<br />
* The full suite of network logging has been integrated into our steam networking wrapper, now.<br />
<br />
* When a Steam host shuts down the connection, the steam client computers now definitely notice and react to that. The inverse was already working from the start.<br />
<br />
* Figured out the missing information on how to get data from the facepunch steamworks wrapper (call Recieve() to trigger the other events), and are sticking with the derived classes methods rather than the interface method, since for relay connections it seems like the interface method is not fully implemented.<br />
** With this in place, we're now getting messages on the client machine, and they are properly decoded! The host for some reason still doesn't get messages back, but this is progress.<br />
<br />
* Fixed a bug in our connection status window code that was causing it to stop showing a timer on connection stages after the earliest ones.<br />
** With LiteNetLib, that all flashes past so fast we could not tell that was even happening. With Steam currently stalling out with the host not getting messages, it became apparent.<br />
<br />
* Previously it was possible for our socket mode to be off, and silently ignoring messages we were sending.<br />
** This was initially done to make it so that any lingering messages that would try to be sent after a disconnect would not cause visible errors, but in this case we've wound up with the socket state being off on the steam networking, despite it being active, and this thus resulting in client messages being composed but not actually sent. That was not obvious because of the lack of error messages.<br />
<br />
* Figured out a stupid mistake in our own code, indeed a single line of code, which was preventing the client from sending data properly back to the host.<br />
** Steam networking is now fully functional in terms of sending data back and forth. There is some sort of issue with the world data not getting across properly, but we have to now verify whether that's limited to Steam or also happens on LiteNetLib.<br />
<br />
* Added in a substantial amount of extra error tracking in our univeral and game-specific network message handlers.<br />
** This helps us to find out where errors actually are.<br />
** In the case of steam, right now we are getting some exceptions when the host tries to tell the client what their player profile number is.<br />
<br />
* Fixed a simple typo that was having us send a junk message via both frameworks to the client when they first connected.<br />
** In both cases, this led to the galaxy map not showing up properly on the very first world connect. But in the case of Steam networking, it also led to an exception because the byte array was too small.<br />
** This extra smallness is actually more accurate, and basically it was only not erroring with LiteNetLib because the buffer array was larger than needed because they are pooled.<br />
** This is an interesting difference between these two networking frameworks, but neither one is particularly "wrong. But it does make Steam slightly more sensitive to certain errors in a way that is useful, because it's an error in both cases that manifests in other places.<br />
** Anyhow, this seems to argue for us to internally use Steam as our main testing framework, additionally because that means we are round-tripping out through the internet and Valve's servers and back rather than having the speed of a LAN.<br />
** This also means that the Steam networking library is fully completely integrated, which is a very major milestone! Now it's all game logic, regardless of what is going on with the two networks.<br />
** Also worth noting that it's under 3 seconds to connect a client to the lobby in our test case, using the Steam relay servers, etc. On the LAN it is under one second, so that's pretty killer.<br />
<br />
=== More Multiplayer Work For All Frameworks ===<br />
<br />
* "Planet GalaxyMapVisuals in CenterGalaxyViewOnPlanet null!" will no longer happen. It was a thing relating to trying to center on a planet slightly too early, and the population of the galaxy map still having failed.<br />
** We are now bypassing that and using the raw internal transform offsets to calculate the correct camera position.<br />
<br />
* In response to the initial challenge from the host, the client no longer just sends their profile name. They now also send their list of installed and enabled expansions and mods.<br />
** The host then compares that list to its own installed and enabled expansions and mods. If there are differences, then it rejects the client connection and does a popup on the client and a chat message on the host side explaining why.<br />
** It also notes in there that both parties can enable or disable expansions or mods in the Game tab of the Settings menu to get things to match.<br />
** Please note that, yes, in some cases there will be mods that are enabled but which "wouldn't do any harm" because their functionality won't be triggered in the campaign in question. We don't have any way of knowing that, so we have to err on the side of caution.<br />
** When it comes to expansions, there are none that "wouldn't do any harm," because all of them add some ships and features to the game in general that all players need to have. For instance, the first expansion adds a bunch of new turret options that are available to choose from in any game you play with that expansion on.<br />
** At any rate, we've gone out of our way to make it easy for people to disable expansions and mods so that they can play with friends who don't have those same expansions or mods. The last thing we want is for the only solution to this sort of thing to be someone reaching for their wallet or having to faff about in the filesystem.<br />
<br />
* Low-level chat messages that are sent to everyone from the host are also now sent to the host themselves. Previously, they could not see messages of this sort, turns out.<br />
<br />
== Version 2.111 Initial Steam Connection ==<br />
(Released July 30th, 2020)<br />
<br />
* Fix a null reference exception in my new spire relic code<br />
** Thanks to Chuito12 for reporting<br />
<br />
* Nanocaust: Make the AI wait a bit longer before unleashing Exogalactic units on it. Remove some deprecated code<br />
** Also the exogalactic units won't hang around to kill the entire nanocaust, so there's a chance it can recover.<br />
<br />
=== Milestone: Initial Steam Networking Connection Between Client and Host ===<br />
<br />
* The Steam versions of the game now initialize relay access on startup, to make it so that the first connection using Valve's relay network will be extra fast.<br />
** If you wind up not playing any multiplayer, this is absolutely harmless. If suddenly it is flagging your firewall on game start on the Steam versions of the game, though, that might be why.<br />
<br />
* The basic connection through Steam's newer networking sockets connection is now in place, using their relay servers as recommended. This is the approach that absolutely bypasses NAT traversal and anything else of that sort, and in fact hides your IP address from anyone you are playing with. The claim is that their backbone is faster in most cases than the general internet one.<br />
** If need be, we can make a "Steam over IP" version that allows for their networking sockets stuff to run more directly over UDP, and only fall back to their relay servers if there is a problem. This would be a lot like LiteNetLib, except with much better NAT punchthrough making use of ICE and STUN and all those things.<br />
** For now we are sticking with Valve's recommended practices.<br />
** Beyond just getting the initial connection up, we don't have anything there yet, but on the server we can see the Steam username of the client who requested to connect and who forged the connection.<br />
<br />
== Version 2.110 AI Exogalactic War Front ==<br />
(Released July 29th, 2020)<br />
<br />
* Spire Relics now have additional text in their descriptions explaining either A. whether the relic is on route to a particular planet , or B. that this relic must build on this planet<br />
** Thanks to Lord of Nothing for suggesting<br />
<br />
* All of the units that were previously named "Galactic War [name]" are now just named "[name]"<br />
** However, in the tooltips for them, their faction should now say "AI Exogalactic War Front" in whatever the hunter fleet's color is, rather than saying the AI Hunter Fleet.<br />
** This lets us keep the shorter name, while making their sub-group and source a lot more clear.<br />
** This does need testing, so please let us know if it doesn't show up correctly somewhere. This is using a new xml feature called "override_faction_name", which lets us use a different faction name for some units in a faction, but without actually creating a new faction.<br />
** Thanks to Ovalcircle for leading the discussion that led to this.<br />
<br />
* Spending a ton of science will now increase a player faction's Overall Power Level very slightly.<br />
<br />
* Remove some inaccurate description text for the Rorqual Hejira<br />
** Thanks to GreatYng for reporting<br />
<br />
=== UI for Steam Networking ===<br />
<br />
* Added the new ArcenNetworkConnectionOption class, which we are using as a basis for things like lists of your Steam friends that you can connect to.<br />
** On the network authority, there is a new PotentialServerOptions, which is used to list out such things. This can be used for anything that we need to list a variety of to connect to, not just friends in Steam and GOG. This is in contrast to the "type in an IP" method that we use with LiteNetLib.<br />
<br />
* Started building out the Steam networking framework layer, currently based on the ISteamNetworking implementation that most games use.<br />
** We MAY opt to also start supporting the newer ISteamNetworkingSockets framework that Valve has rolled out more recently, but that would be an alternative networking framework in AI War 2 that you could choose between.<br />
** The fundamental premise of those two Steam networking setups is really different, and while the newer one would in some ways be easier for us to implement, it seems a lot less familiar to the average Steam player, involves IP addresses potentially, and is maybe less battle-tested, but who are we to say.<br />
<br />
* Previously it was still possible to have some exceptions happen silently in the Engine_Universal main loop, and they would log to disk but not show up in your face. Fixed.<br />
** It was also possible to get some silent errors when clicking buttons and other UI elements, turns out. This made the application just seem not to respond to the click, but now it properly shows the error if there was one.<br />
** Also it was possible for certain errors in the UI call stack to prevent the display of the error window.<br />
<br />
* When you try to connect to an IP address, or you change your active networking framework, the game settings now get saved immediately so that that is remembered even if you shut down the program right away.<br />
<br />
* There is now a screen that will be used for Steam and GOG connections, from the client side, and in Steam it now:<br />
** Shows a list of all your Steam friends, with ones that are in AI War 2 at the top, then ones that are online, and then the rest below that.<br />
** Lets you sort to just ones that are in AI War 2 or online.<br />
** Lets you refresh the list to check for updated statuses.<br />
** There is a connect button for each friend, but that is not functional yet. Just haven't gotten to that part yet.<br />
<br />
== Version 2.108 Galactic War Units And The Exostrike ==<br />
(Released July 28th, 2020)<br />
<br />
* Completely rework the way Exogalactic strikeforce leaders work, to allow per-AI-Type customization. No functional change right now, but intended to support some new AI types for DLC2<br />
<br />
* HandleHelperJournals() has been split out into a bunch of sub-methods, since they can error in rare cases and it would be nice to know where the error generally is.<br />
<br />
* Fixed an issue where we were not letting negative risk analyzer data be saved properly. Turns out that has a good reason to be negative at times.<br />
** Thanks to Badger for reporting.<br />
<br />
* Added a new UI feature that is a throwback to some of the functionality we had in various past games: the "center screen message"<br />
** This is basically a message that can show up near the top center of the screen, and stay there for a bit or for as long as needed.<br />
** It won't block the mouse, and it is over everything except modal popups and tooltips.<br />
** This isn't something we would want to use all THAT often, but for cases of things like "hey the server isn't responding, why is MP stalled," this is exactly the sort of UI functionality we need.<br />
<br />
* Fixed a harmless bug where, for the last few months since we've been doing multithreaded loading of camera xml files, the "PrivateVisExtensions" assembly would sometimes have annoying but unimportant errors appear on startup.<br />
** Essentially, it turns out that loading classes from a custom dll is not entirely threadsafe. Go figure. The fix for that is simple, and it doesn't slow things down, but now we know.<br />
** Thanks to GreatYng for the first report of this we'd had outside of ourselves running into it.<br />
<br />
* Fix a bug where macrophage achievements weren't triggering if you killed all the Telia<br />
** Thanks to GreatYng for reporting and StarKelp for the fix.<br />
<br />
* The in-game credits have been updated to include two more individuals who are key DLC2 testers.<br />
<br />
* Added new GetWasWorldStartedOnGameVersionOlderThan() and GetWasWorldStartedOnGameVersionAtLeastThisVersionOrNewer() to world, which let's people find out in a really efficient way if a world was started before some certain point.<br />
** We can't be accurate past a month or so ago, because we were not tracking the original savegame version back then. But it's useful for looking at saves older than the more recent ones and altering them if need be.<br />
** This is now used specifically to fix this macrophage disabled stuff only on older savegames than 2.108.<br />
<br />
* Fix a mispelling in the Mesopotamian planet names<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fix a typo, "reciever" to "receiver"<br />
** Thanks to Apthorpe for reporting<br />
<br />
=== UI Changes ===<br />
<br />
* In the Load Menu, campaigns are now sorted by 'most recent save game in that campaign' rather than alphabetically<br />
** Thanks to Puppet Master for the suggestion.<br />
<br />
* The default sort for the load menu is now by date.<br />
<br />
* Rename 'Exogalactic Strikeforce' to 'Exostrike' and 'Extragalactic War Units' to 'Galactic War Units' in UI. Having "ExoGalactic" and "ExtraGalactic" was a perennial source of confusion<br />
** Note that internally the code uses the old names for the moment<br />
** Thanks to a discord conversation involving relmz32, Oryutzen and NRSirLimbo<br />
<br />
=== Dyson Sphere Buffs ===<br />
<br />
* The Dyson Sphere's ships should now really level up after the hack<br />
** Thanks to GreatYng and zeusalmighty for the bug reports<br />
<br />
* Dyson Sphere hack descriptions now say "This hack will make the Dyson Sphere very unhappy with you for a while" to clarify the behaviour.<br />
** Thanks to Apthorpe for suggesting<br />
<br />
* The Dyson Sphere now gets additional income (ie it can build ships faster) that scales with AIP. As AIP goes up the Dyson and Antagonized Dyson get stronger<br />
<br />
=== Multiplayer Work ===<br />
<br />
* SendMessageToAllClients() has been split into two methods: SendMessageToAllClientsWhoAreFullyConnected() and SendMessageToAllClientsRegardlessOfConnectionStatus().<br />
** We really don't need heartbeats and frame auths and so on going to clients who are still connecting in.<br />
<br />
* Also added a GetCountOfClientsWhoAreFullyConnected() that lets us know if there are any clients who actually have gotten all the way in (and thus we should send world data)/<br />
** And added GetCountOfClientsNeedingWorldData() that lets us know we should make everybody wait for a bit until those people connect in. Otherwise everyone won't be on the same page.<br />
<br />
* Added a OnServer_IsAtPausedSpotWhereGameWorldCanBeSent() that lets us wait for a break in things happening (usually only 400ms or so at most) to then have a clean slate to send a world state to a connecting client without that state changing between them being sent the state and them getting it.<br />
** Along with this, if GetCountOfClientsNeedingWorldData() is more than zero, then it now pauses authorizing more simulation frames until the world is fully taken in by the new clients who are joining.<br />
<br />
* When a multiplayer game is stalled out for some reason, it now uses that central screen message to let you know what is happening, and if possible, why it is happening.<br />
** The game itself will have stopped having any action at this point, though you can still scroll around and look at things and give orders. But nothing is proceeding on the enemy side, so you don't have to worry about it being in your way.<br />
** When a client is first connecting into the lobby, it also uses this, to basically get the host and any other existing players to wait a moment before making more changes, etc.<br />
** On the host, this is already set up to give some context about the exchange under the hood that is happening with the new client.<br />
<br />
=== Multiplayer Transition To LiteNetLib ===<br />
<br />
* Okay then... we are switching network libraries when it comes to our non-Steam/non-GOG transport layer. Instead of FORGE Remastered, we'll be using LiteNetLib.<br />
** FORGE has grown a lot over the years, but the version we were using was from 2018...ish. We looked into updating our version of the code, but were not thrilled with how complicated it was going to be. Since we had working AI War 2 multiplayer on FORGE at least as recently as 2017 (in an alpha state), staying with the existing code made a certain amount of sense.<br />
** However, we started running into really long delays with something as simple as sending 10 bytes to say what our profile name was. This was taking upwards of 14-18 seconds between two machines sitting three inches apart and both within five feet of a powerful wifi router. We verified that the polling was happening hundreds of times per second, and that massive amounts of data was being sent via sockets. But in the internals of the old version of FORGE we have, it was taking it quite a very long time to assemble that into a full message, despite all the churn of hundreds and hundreds of data reads that were apparently all just empty headers and then noise. <br />
** Time for a new approach. It's worth noting that the current version of FORGE still lists all the most internal classes as "in development and lots of dire warnings," so that was another reason for switching up frameworks.<br />
** We chose LiteNetLib at this point, and within 40 minutes of dropping that in, we had the first successful connection between the machines on using this framework for the game. It was just a simple "hello client" message in basic unicode, but it arrived extremely instantly, as expected.<br />
** Next steps are going to be doing some cybernetic implants on LiteNetLib, rather like what we did on FORGE, to make sure that it integrates with AI War 2 properly and our network authority, and that it communicates as directly as possible with our own pre-formatted bitstreams. Most of that should be part of one day of work, at this point. We shall see. Then it's back to the actual larger "build out the multiplayer part of the game" work, but minus the lag that was tripping us up the last day or two.<br />
** It's also worth noting that, with this switch, we had to unfortunately also lose the awesome NAT punchthrough work that Doug Fields did for us with the FORGE interface back in 2018, but LiteNetLib has some of that of its own. And hopefully most people use Steam or GOG if they are behind firewalls of any complexity (since relay servers then become required, and that's where the free relay servers are).<br />
<br />
* NetPeer in LiteNet now inherits from ArcenNetworkClientConnection.<br />
** For now, we are using our own methods to generate the ConnectionIndex, rather than using the existing peer.Id. There may be some numeric conflicts, otherwise, but we can also change this later.<br />
** We also are initializing everything on the Arcen-integration side, keeping our own clientsOfServer list for quick access, and then calling the game-layer RespondToNewConnectionAcceptedByTransportLayer() that will kick things off.<br />
<br />
* PrepareMessageForSending() has become WriteLogOfSend().<br />
<br />
* Added a new SendToSpecificPeer() method onto LiteNet's NetManager. Not sure why that variant didn't seem to exist.<br />
<br />
* Wiring back up our LitNetSocket wrapper class:<br />
** SendMessageToHost_Inner() done.<br />
** SendMessageToAllClientsRegardlessOfConnectionStatus_Inner() done.<br />
** SendMessageToAllClientsWhoAreFullyConnected_Inner() done, using the new SendToSpecificPeer() method.<br />
** SendMessageToSpecificClient_Inner() done, using our own ConnectionIndices for now.<br />
<br />
* Booyah! Exclamatory phrases are not the norm in our patch notes, but this is an exciting moment. LitNetLib is sending messages, and doing so with speed and accuracy and a minimum of fuss. The username travels three inches in well under a second, as should be expected.<br />
** At first, I was getting some very strange data sent across, and I figured that this was going to be an endianness problem, but actually all of the .NET/Mono data is the same endianness from the look of things. Which makes sense, given that otherwise savegames would not work from computer to computer.<br />
** After spending the night with that rattling around in my brain, this morning I decided to definitely do some profiling of the data before I started messing with the #ifdefs.<br />
** First thing I noticed was that I'd chosen to use the RawData byte array, and immediately next thought was "I better check there's not a network header in there." Turns out, yes, there's a UserDataOffset. The first four bytes are not my data, and so of course it would give gibberish as if the endianness was wrong. Just starting my reads from the proper offset makes everything work instantly.<br />
** All of this is from a Mac to a Windows machine at the moment, but my I'll be testing three-way with my linux machine as well. Right now laptop is sitting closed under the Mac.<br />
<br />
* LiteNet logging now gets funneled to our own main logging pipeline.<br />
<br />
=== Continued Multiplayer Work ===<br />
<br />
* A fair bit of work has been done to make intentional disconnections from the client or server tell the other side more quickly.<br />
** This should help to avoid some disconnect-and-reconnect issues that are otherwise inevitable, and it just makes things feel more responsive.<br />
<br />
* Additionally, when you use the in-game controls to exit the program as a while, it now takes one extra half second to lets Steamworks and GOG actually do their exit logic properly, rather than rushing out the door.<br />
** This should hopefully help with any cases of the game still being thought to be running on Steam in particular after it closed.<br />
<br />
* When you exit the game, while it is doing its brief exiting stuff it now throws up a center-screen "exiting.." message.<br />
<br />
* Got rid of OnServer_WaitingOnConnectionIndices, as this was basically a duplicate of something we are doing better and more cleanly a new way, now.<br />
<br />
* UpdateDebugText() and all of its related variables have been removed.<br />
** This was the sort of thing that, in all of our prior games before Raptor and moving to 3D, you could hit F3 and get output information from. But it has never really been used in AI War 2 properly.<br />
<br />
* Got rid of WorldTransmissionMessageType, as it was needlessly complicated.<br />
** This was essentially us breaking the world transmission data into multiple parts and then sending those in parts. Historically there were two reasons for this:<br />
*** Back in AI War 1, we were using the Lidgren network library, and even though it was trying to work around the MTU (typicaly 1200 bytes) of various networks players might be on (or passing data through indirectly), it was often having bottlenecks and slowdowns with how it sent fragmented messages through the network card. Our theory at the time was that it was flooding the buffers of the NIC, rather than giving it data at a more reasonable pace. Network cards have grown enormously in the last 11 years, as have the OSes that control them, so that's not really a concern now. All of the newer network libraries that we would be using to send data should be able to handle 1MB of data without incident.<br />
*** Secondarily, for AI War 1 and for the A Valley Without Wind games, we were sending enough world data that you could see a noticeable wait time, and by handling this above the network transmission layer we could give you visual feedback on transmission progress (even though the whole act of that actually slowed it down). Eleven years later, we have networks that are vastly faster basically everywhere in the world, and the world savegames for AI War 2 are much more efficiently packed than AI War 1 was. So sending a file like this really is like a midsize image on any website you visit, now. Not really a progress bar sort of situation, especially if the progress bar itself causes slowdown.<br />
<br />
* ConnectionStage has moved from being just a UI-only element to being ClientConnectionStage as part of the ArcenNetworkAuthority, so that clients can better keep track of their connection status. Usually this is less than a second or so, anyhow, but we still need to keep track of it in case something goes wrong in particular.<br />
<br />
* The host now properly sends the world data to the client, for the first time in three years or so.<br />
** The client is having some trouble understanding it thus far, so now is a good time to build in error handling (it was just silently failing, until now).<br />
<br />
* Added a new SendLowLevelChatMessage() method on the network authority, which is used mainly for sending back and forth arbitrary messages from clients and the host to explain about the status of things. These can be echoed to all other clients or not, as the case warrants.<br />
<br />
* If the client fails to load a world sent by the host, then the host and any other clients all get sent a low-level chat message about that, the client gets kicked out (since they never made it fully in), and the client gets a nice error message on their screen and in the log.<br />
** This way we can solve whatever the problem is, and nobody is left sitting wondering why things are slow (when in fact they errored).<br />
<br />
* When you are loading a quick start, or loading a savegame as a template into the lobby, it now clears the chat log. This was definitely not information that needed to persist from a prior game to the new lobby!<br />
** These sorts of chat log messages, which are kept over the long term for the game (up to a limit), are no longer shown in the lobby at all.<br />
** Instead, we now are using LocalMomentaryDisplayLog, which is something that doesn't get sent with savegames, and which normally is just "stuff showing on your sidebar during the game for a little while."<br />
*** This is perfect for the lobby, and in the lobby we are just showing the last 100 of these, and not clearing them until you reach the game itself.<br />
*** These things are actually shown by timestamp, not by gamesecond (which isn't ticking yet), so that's just extra perfect for a lot of reasons.<br />
*** This also leads to privacy for people who were talking before someone new joined -- you only see messages that were sent after you were connecting -- although that's not hugely important in most cases.<br />
<br />
* Got rid of ArcenUI.Instance.CurrentNowUTC, since that was putting all of our lobby chat messages in the British time zone. We didn't use this anywhere else, and it was puzzling that we used it at all.<br />
<br />
* NatPunchEnabled is now true on the server and client for LiteNetLib. We'll see how well that works.<br />
<br />
* Added a new debug setting to the network section of the settings menu: Write Network World Serialization Logs<br />
** When sending a game world across the network to a client, write NetworkWorldSerialization.txt, and when getting one from a host write NetworkWorldDeserialization.txt -- both in the PlayerData folder (but on two different computers). The only real reason to turn this on is if a client is unable to join a host and gets an exception; this lets us do a diff of the two files and figure out what is different about what the host is trying to send and the client is trying to read.<br />
** Note these logs are often huge, sometimes hudreads of MB each. Compressing them into a zip or tarball and then uploading them somewhere we can download them to find out what is happening is a good idea. Hopefully as a player you will never need this, but this is basically a way for us to test the network world sync process, which otherwise can be incredibly opaque and take a lot of time to hunt down.<br />
<br />
* Used our new network world logging capabilities to fix an error in network world transfer where it needed to send the game version in a different format.<br />
** The client now looks at the game version very early on, and if it does not match it sends a message back to the host telling the host what the problem was.<br />
** Basically: If the client can't join because of a version mismatch, that gets shown and things happen properly.<br />
<br />
=== Milestone: World Sync Between Host And Client ===<br />
<br />
* Milestone! Initial transmission of the world data from the client to the host now works properly.<br />
<br />
* When a local player account is missing the following methods no longer throw errors:<br />
** SwitchViewToPlanet<br />
** OnClient_SendClientBatchToServer (actually still errors, because it's useful to have it do so).<br />
<br />
* PlayerAccount is now more strongly linked to the new ArcenNetworkClientConnection, and its connected status is now a method called OnServer_GetIsConnected().<br />
** There is some duplication of concepts here, but when you factor in the way that things like viewing of planets are synced in multiplayer, this is a worthwhile separation of concepts.<br />
<br />
* If two players with the same profile name try to connect to a game at the same time, it will now prevent the second one from joining and tell everyone why.<br />
** Bear in mind that these are AI War 2 profile names, not Steam or GOG or what have you. Everyone needs to have a unique AI War 2 profile name in the current game, but they can change up their names however they want and global uniqueness doesn't matter beyond the current game you are in.<br />
<br />
* In situations where a player 3 joins after player 2, and it's the first time player 3 has been in this particular world, player 2 now gets told by the host about player 3.<br />
** And of course all the more complicated permutations of this. It's the new FromServerToClient_SendNewPlayerProfile.<br />
** This is needed specifically so that all clients can know which planets are being viewed by other players, so that which planets are "tier 1" processing is honored and identical everywhere. Among other later needs.<br />
<br />
* Clients connecting to a host are now properly told what playeraccount they have been put in charge of.<br />
** This makes PlayerAccount.Local not null on their local machine, and lets them give orders and whatnot from their spot there.<br />
<br />
* Errors that happen during the main sim step will now be more visible in multiplayer contexts.<br />
<br />
=== Milestone: Initial Sharing Of Lobby Between Host And Client ===<br />
<br />
* Milestone: Clients are now able to load into the lobby, and they and the host both see most (but not all) changes that are made.<br />
** Clients are not yet assigned to any faction (making them just spectator-mode for now), and there are some specific bugs with certain data that isn't synced correctly just yet.<br />
<br />
* Map generation can no longer happen in the lobby except on the host.<br />
** We have no real way to be sure that map generation is deterministic between machines, so we need to do a world sync each time anyway.<br />
<br />
* When the map is regenerated on the host during a multiplayer lobby, it recreates all of the playeraccounts needed for each of the player connections that exist.<br />
<br />
* And when the map is regenerated on the host during a multiplayer lobby, it now re-syncs the entire world data to all of the clients so everyone is up to date.<br />
** This also solves the "authorized through frame number" issue, which was really just a smaller symptom of this larger issue.<br />
<br />
* Both the client and host are now verified able to add, remove, and edit factions and have that properly affect the world.<br />
<br />
* Window_ServerMultiplayerConnectionStatus has been removed, as we no longer use that. We've been using the new center-screen messages instead, or the chat sidebar, as needed.<br />
<br />
* In multiplayer games, the save button is now disabled and says: Cannot Save Game As Client<br />
** If you click it, it gives you this message: Unfortunately, only the host can save games in multiplayer. To save on bandwidth as well as on processing power between your machines, there is a LOT that is calculated only on the host machine. If you were to save a copy of the game on your client's end, loading it would lead to a lot of wrong and missing data.<br />
<br />
* Additionally, autosave is now something that does not happen on multiplayer clients. Just the host.<br />
<br />
* The header of the load quickstart and load saved game menus now make it clear if you are loading for multiplayer or single-player.<br />
** Also on these screens is a new "[Multiplayer Questions?]" bit of text up at the top that appears only on the multiplayer version, and which has some helpful mouseover text.<br />
<br />
* Rather than having an annoying explanatory popup to click through every time you open the various ways of hosting or joining a multiplayer game, it now puts that extra information under the "[Multiplayer Questions?]" section up at the top of those screens.<br />
<br />
* At the top of the lobby screen, it now says if you are joining as a client or a host to a multiplayer lobby, as well as having that same "[Multiplayer Questions?]" bit.<br />
** This includes the following new text in its mouseover text: Except for the host, all players are spectators by default. There is only one human player faction by default. Any number of players can share control of a single faction, or each player can have their own faction that they control on their own. You can mix and match as you like.<br />
<br />
* The connect by IP window has been completely reworked visually so that it matches the rest of the game and doesn't look like the old temporary style that we were using in 2017 (because that's what it was).<br />
** This also lets us put extra information on that screen to help anyone who might be confused.<br />
<br />
* The client connections status window is now patterned as a continuation of the connect by IP window, and it's nice and graceful and in the new style.<br />
<br />
== Version 2.106 Immortals and Unresponsiveness ==<br />
(Released July 23rd, 2020)<br />
<br />
=== Bugfixes ===<br />
<br />
* Put in field names for the risk analyzers saving, so if they have trouble serializing we can see which field it was.<br />
** Also then made it so that the total increase and net increase both are automatically clamped to 0 instead of a negative number so that they won't throw an exception when trying to save.<br />
** Thanks to GreatYng for reporting.<br />
<br />
* When stacks are split, they now have their "time on planet" and "time alive" set to be whatever the original stack was. Same with the amount of cloaking points they have lost, and the number of cloaking points they have left.<br />
** This prevents a variety of abilities from triggering, including the "invincible if only on this planet for x seconds."<br />
** We also made it so that dying to remains does not reset the "time have been alive or on this planet" counter, for similar reasons.<br />
** This keeps the vanguard hydra heads from being insanely impossible to kill, among other issues that are probably pretty much all in the player's favor to have resolved.<br />
** Thanks to crawlers for reporting.<br />
<br />
* Added some extra debugging information for the status of gamecommands that are queued, to see if there are clogs happening. At this point, we can't replicate any evidence of that, though we have some reports from multiple players of it. So maybe the problem either takes a bit to manifest, or is in a different area of the code than we expected.<br />
<br />
* AIP should no longer increase when things die to remains if you have the "ships of X type die to remains instead of dying entirely" galaxy map option on.<br />
** This is untested, but should work.<br />
** Thanks to crawlers for suggesting.<br />
<br />
* Found and fixed the core typo from a few builds back where remains that were being rebuilt were being set to have the cost of the rebuilder, not themselves. This was previously massively overcharging players for building most things, but then once we put on a band-aid to fix that, it started giving it to them for basically free.<br />
** Thanks to Lord Of Nothing for the report and save.<br />
<br />
* Fixed a bug from the last few versions that nobody seemed to notice, where the galaxy map was not centering on planets properly when you first went into the game after loading a savegame. This had to do with when we were calculating the position of the planet, and that not always being calculated before we tried to center on it.<br />
<br />
* Fixed a bug where it was possible that a client would send more commands to the host than it would tell the host about, and thus the host would not know to read the extra ones (or vice-versa). In single-player you are both the host and client, so it still applies.<br />
** This was happening because of multiple threads adding to the queues of commands at the same time that the queue was being drawn down.<br />
** This was actually something that probably could have happened since more or less forever, but it was substantially more likely in the last few versions because of some efficiency improvements we made.<br />
** Additionally, we have now switched to using a ConcurrentQueue for each of those collections, rather than a regular Queue. This should also help with potential contention.<br />
** There was also the possibility that we might not be able to get enough commands out of the list for some reason to then send more, and we are also now guarding against that.<br />
** Previously, this problem was manifesting as orders not being carried out when you gave them, sometimes or all the time. And things like "save my game" and "pause or unpause" not working anymore.<br />
** We were able to duplicate this in one savegame after some time, but no longer can. Given the intermittent nature of this sort of thing, we can't say for sure that it is solved -- but the logic of what was going on makes sense, and the fix we put in should hold that at bay. It's one of those "can't prove a negative" things, at the moment, so fingers crossed it just never shows up again.<br />
** The characteristics that we observed while this happens, if it happens to you and you want to see what you can tell us:<br />
*** In the escape menu, under the memory pooling performance, the number of raw commands were steadily climbing. One or two every few seconds. This should never happen in that way. Increases happen, but not a steady drain flow like that.<br />
*** In the escape menu, further down under the Commands Queued By Type, you may see some null warnings up at the top of that list, now. That wasn't there when we observed it, but it would be if it ever happened now.<br />
** Thanks to zeusalmighty, Puppet Master, Gdrk, and GreatYng for reporting and giving advice on how to reproduce it.<br />
<br />
=== Multiplayer Work ===<br />
<br />
* In our copy of FORGE networking, we've removed some useless extra code that was for the UniversalWindowsPlatform framework, which we won't be ever using.<br />
<br />
* In our copy of FORGE networking, we also got rid of a very useless set of "pending" messages on the UDPClient and UDPServer, which were ostensibly to help with reliable messaging, but in reality was just doing some useless event handling and invocation, and some useless cross-threading locks. It just put the things in the basket and took them back out, never checking the basket or doing anything with it. Thankfully, there is a second basket for reliable UDP inside the UDPPacketComposer, so this was just extra redundancy.<br />
<br />
* Added a new ArcenNetworkClientConnection abstract class, which we now store on ArcenNetworkAuthority in a ClientConnections list.<br />
** These are connections, not yet correlated to specific players. But it lets the network pipe connect up a specific connection with a specific player (or reject that connection if it's not okay).<br />
** Each individual networking framework (ArcenSocket descendent class) is actually responsible for keeping track of these connections and populating them.<br />
** But the actual network authority does the job of authenticating them into a given game and handling the challenge/response work, figuring out a match to a player slot in the game, etc.<br />
** With this in place, we can now get rid of GetNumberOfConnections(), because that's now moved out of the socket and into the network authority.<br />
** This is a substantial refactor, in that it will really make Steamworks and GOG a lot easier for us to work with as networking frameworks, faster.<br />
<br />
* NetworkingPlayer in FORGE now inherits from ArcenNetworkClientConnection, and is the first version of a networking framework using this new pattern.<br />
** On NetworkingPlayer, rather than having a public { get; private set; } for some of the immutable connection things, we now use them as public readonly. This is both more efficient in performance (slightly), but also prevents sync issues between this class and its new underlying abstract class.<br />
** This class gives the information it needs to the base class, and doesn't bother registering the host NetworkingPlayer as an underlying client connection at all, keeping things simple.<br />
<br />
* A bunch of stuff with the FORGE networking logging has been replaced with wrappers around our own logs, so that if there are internal exceptions those don't just go nowhere invisibly anymore.<br />
<br />
* Trimmed out a bunch more old FORGE code that has been commented out for years from the look of things.<br />
<br />
* RespondToNewConnectionAcceptedByTransportLayer() is definitively game code, not part of the actual networking transport layer, and it has been moved into the central codebase and away from any specific networking framework.<br />
** "Hello friend, you've connected: what's your profile name you want to play under?" Etc.<br />
<br />
* A fair bit of the "initial chatter" of clients connecting to a host and the host responding are now logged to the debug log no matter what.<br />
** There really is not that much that is said, and this will certainly help someone at some point who is having some sort of connection issue.<br />
<br />
* When clients are connected to the host, now the host not only shows the number of clients, but also sees their profile names that they have chosen to connect with.<br />
<br />
* A bunch of event-driven stuff on the FORGE networking has been made a bit more inline, improving performance a bit and also reducing certain areas of complexity.<br />
<br />
* The initial challenge-response work, and "what's your name" work, is all functional again. This is stuff that will be identical regardless of the network framework.<br />
** The host can now properly see the profile name of the client, and is poised to send the client back all the world information.<br />
<br />
== Version 2.105 Selection Hotfix ==<br />
(Released July 22nd, 2020)<br />
<br />
* The game still loads various xml files asynchronously, and loads icons and music and sound in that fashion, but it no longer tries to load the ships, shots, or wormholes in that way.<br />
** This was just too unreliable, because of some issues in the unity engine. It didn't affect all players, and not all the time -- but enough that it majorly affected the stability of the game for some folks, and that's too much.<br />
** This also removes the potential for the really long (15-30 second) lag time when you are first opening a new game or the lobby if things didn't load during the loading period.<br />
** Thanks to Ovalcircle for the most recent set of reports.<br />
<br />
* Previously, the game was using a standard List<> object for keeping track of selected ships, and that sometimes ran into inefficiencies and cross-threading issues.<br />
** In the prior build, we tried to fix some of those cross-threading issues, but wound up making things not actually deselect properly.<br />
** To fix all of the above, we've now switched to the much more flexible and robust ArcenLessLinkedList<> object, and adjust the code to handle this. This is both more efficient (not that efficiency is a major problem here), and does not fall victim to the various cross-threading woes that the old style could. <br />
** And, naturally, as part of that, this also resolves the frankly infuriating selection issues in the most recent build of the game. Sorry about that one!<br />
** Thanks to ctl0ve, CRCGamer, Chuito12, and Burner for reporting.<br />
<br />
* Previously, the tech menu only showed techs that would actually benefit a ship you have at present, or which you could capture.<br />
** This was very confusing to a lot of players, as they would not see the entire tech tree and thus think that something was missing or broken.<br />
** In some other cases, possibly due to changes in the recent past, you CAN build something (like a command station), but since you have not done so yet, it would not show up.<br />
** All of the techs now always show up, but the ones that are for ships that would not benefit you right now still show up as red and not researchable.<br />
** Additionally, the tech color shows up as white when it benefits ships you have, gray when it benefits ships that you don't have right now, and lighter gray when it benefits ships that you could capture.<br />
** Please note that since citadel upgrades don't benefit battlestations anymore, the citadel tech not showing from the start was working properly.<br />
** Thanks to Strategic Sage and CRCGamer for reporting the confusion.<br />
<br />
== Version 2.104 Negative Build Percentage Hotfix ==<br />
(Released July 21st, 2020)<br />
<br />
* Somehow or other, it became possible for some self-building ships to go very negative in their build percentage (instead of counting up to 100%, they would be way in the negative percentages of building process). <br />
** This seems to be a new bug in the last day or so, based likely around some changes that we made to improve the cross-thread reliability of the game. The problem is, upon manual code review of the areas that would be relevant, we just can't see anything that looks like a bug.<br />
** Ultimately what is happening is that the SelfBuildMetalRemaining is getting absolutely giant in value, far larger than the original metal cost of the ship that is constructing. This was probably an integer overflow from it going really negative first, and then wrapping back around, but it's hard to be sure.<br />
** We've put in some extra defensive code to make sure that if it goes negative at all, it marks itself as complete. We've also put in protections so that if you "owe more than it is worth" in general, that it will assume that there was an overflow and just go ahead and finish it now. These two changes should help to keep the problem from happening again, and fix the cases where it was already in progress.<br />
** While we were already at it, we put in a small general improvement that prevents you from being overcharged for the last tiny percentage of constructing a ship. If you had a bunch of engineers building, and each frame cycle they normally would do 1.1% of the construction of a ship, and charge you accordingly, then you might wind up in a case where you had only 0.2% remaining work to do, and yet got charged the full 1.1% rate. It is now careful to only charge you for what you would owe, so the 0.2% rate in this example.<br />
** Hopefully there are no other errors in any of the metal flows, with things like drones building, anything engineers would claim or repair, etc. The code looks clean, but then again the code for the self construction also looks clean. In the next couple of days, please let us know if you see anything else that seems amiss with how metal is being charged against you. So far we can't duplicate anything like that anymore, now.<br />
** Thanks to CRCGamer, deso, and Puppet Master for reporting.<br />
<br />
* Some code from yesterday dealing with cross-threading protections let us unfortunately sometimes wind up with runaway DoForSelected loops. This is now fixed, and it has several kinds of self-repair in place to prevent this from happening now.<br />
** Thanks to Gunner for reporting.<br />
<br />
=== Multiplayer Connection Work ===<br />
<br />
* Reworked the NetworkTrafficLog.txt multiplayer output to actually be a lot more informative.<br />
<br />
* GetNumberOfConnectsCurrentlyActive has been replaced with GetNumberOfConnections, which lets the network framework tell us a lot more about the general status of things happening.<br />
** Instead of just a generic number of players that exist, we can see how many are disconnected, how many if any are the host, how many are clients, etc, etc.<br />
<br />
* In the lobby, the host now sees how many connected clients there are, and if there are any disconnected ones, how many disconnected ones there are.<br />
** Previously it just showed one number that included the host and also disconnected clients all wrapped up into one.<br />
** It still isn't detecting disconnects properly in FORGE, but we'll get to that.<br />
<br />
* The host now only bothers sending heartbeat messages if it has at least one non-host client machine connected.<br />
<br />
* Removed some old "desync detected" code that was not fitting with the new plans for multiplayer.<br />
<br />
* Figured out some of why the client was not detecting itself as properly connected, and so was not getting messages from the host at all in the last few builds after the connection.<br />
<br />
* The way that gamecommands are queued and then given out to player simulations for both single-player and multiplayer is now more efficient.<br />
** We're using queues now instead of lists, and this gives us a lower chance of accidentally losing a command, as well (not that we know of that ever happening before).<br />
** This has several performance benefits even for single-player when there are a lot of commands going around.<br />
<br />
* Added a new FromServerToClient_AuthorizeThroughFrameNoCommands in addition to the FromServerToClient_SendNextBatchOfCommandsToExecute, to slightly save on space (1 byte per message) and make the logs clearer.<br />
<br />
* The network log no longer has a time delay built in where it logs only 100 items at a time. It just immediately dumps items to disk.<br />
** Realistically there is only substantial traffic every 100ms or so anyhow, and the delay in logging was incredibly confusing as a programmer working with it.<br />
<br />
* The network polling interval has been updated from 20 times per second to 100 times per second. In practice it will actually be variable, but the polling is extremely lightweight (the part that is on the main thread), and having absolutely minimal delays in getting and sending messages is what will keep things moving smoothly.<br />
<br />
* To make network logging even more efficient and clear, the old ArcenNetworkLogEntry is now ArcenNetworkSendLogEntry, and is now a struct instead of a class. This runs lightning fast and doesn't affect RAM usage.<br />
** We also now are then logging data that is gotten in (which we call TAKE) along with data that is sent (which we call SEND).<br />
** This way we can see the conversation between several machines all interleaved on a single machine's log, and thus figure out why they are saying what they do, and if messages are getting there, etc.<br />
** Surprisingly, the way we were logging things previously really didn't lend itself to that, so it was easy to go down rabbit holes of wrong information (thinking data did not get to a machine when in fact it did).<br />
<br />
* Furthering clarity on the networking side, we're now ignoring loopback messages-to-self on the host in our logs, which previously we were not doing.<br />
** This way we don't get drowned in a sea of stuff that "I'm telling myself in order to be the same as everyone else," and we can just see what is actually passing between machines.<br />
** The loopback stuff has been demonstrably working fine since more or less forever, unless we broke it today, since single-player relies on that.<br />
<br />
* Fun fact, after all these logging changes, we can now actually see how well parts of the networking are already doing.<br />
** As one client connects, the host is able keep talking to itself and/or others without breaking stride, letting the potential connection wait for the challenge and acceptance (not yet reimplemented) before it loops in the new client to the rest.<br />
*** This is a great example of how we can keep people from accidentally messing with the sessions of friends by trying to join during a game, etc. It's the sort of thing that only matters among friends, but it keeps it clean.<br />
** On top of that, we can see now that the reason for the host not noticing when a client disconnects is because it's ignoring the client that has not fully gone through the challenge-response process yet, and so the mystery of how it was "sending messages that failed but didn't flag the client as disconnected" is easily solved (answer: it wasn't sending messages to that particular client yet, because it is smart).<br />
** In general, by improving our logging quite a lot we can see what is actually happening and make sure all of this works properly. The vast majority of this is network-agnostic, which is doubly great. These particular logs will look substantially the same between FORGE and Steam and GOG.<br />
<br />
== Version 2.103 Hotfix ==<br />
(Released July 21st, 2020)<br />
<br />
* Fixed a bug from the prior version where the dark spire serialization fix was making any savegames with dark spire in them -- new or old -- not able to load.<br />
** Thanks to valinor000 and stanazolol69 for reporting.<br />
<br />
== Version 2.102 Digression For Quality ==<br />
(Released July 20th, 2020)<br />
<br />
* Using the "Increase Max Dyson Strength" hack will now also increase the Dyson's general mark level<br />
* Some minor buffs to the Dyson's income, mostly at higher levels<br />
** Thanks to a discussion started by zeusalmighty<br />
<br />
* When picking music (through the debug menu), the hovertext will now give you information on most of the tracks saying the original source<br />
<br />
* Improved the speed of some dictionary lookups by precalculating the ArcenAssetBundlePath CombinedPath.<br />
** This also required us to change their member variables into properties, and in return that meant that the general string fill methods needed to be adjusted to new FillBundle and FillPath methods for xml reading.<br />
** This doesn't affect as much code as it sounds like.<br />
** We also adjusted the various debug logging points to use the combinedpath, which is cleaner and easier to read, but not much faster since that almost never happens.<br />
<br />
* Fixed a bug that could happen with entity order serialization in rare circumstances if threads were fighting over putting items back in or taking them back out.<br />
** Since multiple threads do in fact often use orders, at once, this is one of the few collections prone to that.<br />
<br />
* Fixed a variety of exceptions that could happen based on cross-threading bad luck during the exit of the game either to the OS or to the main menu, all in the metal expenditures code.<br />
<br />
=== Ship Behavior Improvements ===<br />
<br />
* Fix two problems related to shields recovering from being bumped by Astro Trains <br />
** Human Home Forcefield Generators can now recover from being bumped.<br />
*** Thanks to Lord Of Nothing for the bug report<br />
** If a forcefield generator is bumped twice in short order, it will now do a better job of returning to its original location. This isn't perfect, but it's a pretty intense corner case<br />
*** Thanks to Puppet Master for the bug report<br />
<br />
* If there are only non-combatant enemies on a planet, ignore any requirement in the targeting code that particular targets need to be combatants. This prevents ships in FRD from discarding reasonable targets incorrectly. <br />
** Thanks to ParadoxSong for the bug report<br />
<br />
* Actually support Targeting tracing now; you need to set Targeting tracing and the Debug setting that lets you set the PrimaryKey for the unit you want to follow, and you'll get some actual logging. <br />
** Not for the faint of heart; intended only for developers who want to get their hands very dirty.<br />
<br />
=== Bugfixes ===<br />
<br />
* Fix a bug where the 'delete campaign' button wasn't giving the campaign name<br />
** Thanks to OvalCircle for reporting<br />
<br />
* Fixed a rare and harmless (but annoying) cross threading exception that could pop up with argument out of range exceptions in RenderShip.<br />
** Thanks to CRCGamer for reporting.<br />
<br />
* Fixed a rare nullref exception that could happen in DoRemovalChecks() on shots, mainly a cross-threading thing.<br />
** Thanks to Lord Of Nothing for reporting.<br />
<br />
* Fixed two possible spots in DoForSelected() where cross-threading issues could sneak in and cause an exception in rare cases.<br />
** Thanks to Lord Of Nothing for reporting.<br />
<br />
* Fixed an issue when loading savegames that have a missing planet naming scheme. It will now default to the default naming scheme if it can't find the one that the world was started with.<br />
** Thanks to Oryutzen for a save that demonstrated this.<br />
<br />
* Fix a bug where the imperial spire wasn't Watching previously explored planets for you.<br />
** Thanks to Lord of Nothing for reporting<br />
<br />
* Fixed an error in TextMeshPro where it would still give us "Unable to use Ellipsis character since it wasn't found in the current Font Asset" invisible errors that would fill up the debug log even if warnings were disabled.<br />
** This was, in very long play, a memory leak as well as a performance drain, and it was generally invisible.<br />
** The ellipsis character was typically something it was trying to find specifically for purposes of showing cut-off text, and some fonts just don't have that in them. So no wonder we couldn't actually find the ellipsis character used in our own text files.<br />
** Thanks to Puppet Master for providing the log file demonstrating all this.<br />
<br />
* Fixed an issue where the stationsRemainingBeforeDepot on astro trains could go arbitrarily negative, thus causing an error on save. It now stops at 0, and thus seems not to cause the issue anymore. But on the change that an astro train does have a data exception during save anymore, it will now log what field is having the problem and we can fix it.<br />
** Thanks to Lord Of Nothing for the report and save.<br />
<br />
* The game has been updated so that the debug logging that is DoNotShow now ONLY goes to the ArcenDebugLog.txt, and not to the unity Player.log. The unity Player.log is kept in memory in a very unfortunate fashion, and in long gameplay this will be extra RAM used that should not be. Probably also extra slowness.<br />
** We added a new DoNotShowButSendToUnityLogEvenOutsideEditor Verbosity option that lets us have the old behavior of going to both of those logs, but we are not using that anywhere at the present time.<br />
** All of this is going to make it even more important that we have both kinds of logs from players if they have an outright game crash, now. But generally speaking, if it's an exception popup but not an outright crash, the ArcenDebugLog.txt has always been enough and will continue to be. It's only when the game crashes all the way to the desktop that we need the Player.log, typically, and now we'll just still need the ArcenDebugLog.txt in addition to that. However, any ShowAsInfo or ShowAsError logs to the main ArcenDebugLog will still appear in the Player.log, so potentially even that won't be true.<br />
** For a developer using the unity editor, it still logs everything to the actual unity log because that's for short testing cases and super useful to see output in realtime.<br />
** At any rate, we are trying to strike a balance between getting the logs we need, easily on the part of players, but without having any accidental extra usage of memory on very long play sessions.<br />
<br />
* All of the dark spire per-unit data is now saved in a format where we can tell which field is having trouble if one does.<br />
** The dark spire data "lastTimeAttemptedLocus" was trying to save as an int16 and would overflow any time a game saved that was more than about 32000 seconds in. Fixed.<br />
** Thanks to RockyBst for reporting.<br />
<br />
==== Memory Leak Fix From 2.099 ====<br />
<br />
* New setting on the debug menu: Show Pool Counts In Escape Menu<br />
** Used for searching for memory leaks, particularly between loads of a savegame. If pool counts keep rising after each load, then something isn't getting put back in the pool properly and is instead persisting lost in memory.<br />
<br />
* ArcenGameObjectResourcePools must all now have a unique name, and they register themselves in a central place that identifies how many of them there are.<br />
** These pools also now keep track of how many objects they have ever produced from themselves, so that if we are leaking objects from them we can tell. And we can tell if we are leaking pools themselves.<br />
** After seeing all of these in the new debug menu option above, we can clearly see that none of these are leaking and they are all behaving just wonderfully. Hmm. But we have a leak somewhere, so let's expand this...<br />
<br />
* Created a new CountedPoolBase abstract class that sits under the ArcenGameObjectResourcePool, and takes its counting capabilities and puts them there so that we can also use them for some other pool types.<br />
** This is also now used on a new "Shot Instance Renderer Pool Of Pools" so that we can tell if we are leaking there. And now ships and squads, too.<br />
** Also this is now used on LoosePool, which is the underlying basis for ship, shot, and squad visualizers (different from instanced renderers) now.<br />
** Despite all this, no memory leak was found in any of these pools. They are all working wonderfully efficiently.<br />
<br />
* ExternalizedPool now inherits from CountedPoolBase.<br />
** Same for TimeBasedPoolBase (and thus TimeBasedPool itself).<br />
** And same for BasicPool.<br />
** And holy cow, there's some sort of memory leak with the time-based pools, looks like, based on this. That makes sense, as we recently reworked some of their functionality to fix a bug with them. Apparently we introduced a new bug at the same time.<br />
<br />
* Added a new setting to the debug menu: Show Details Of Time-Based Pools In Escape Menu<br />
** Used for searching for memory leaks or other bad behavior on a certain very high-turnover series of pooled objects. If pool counts keep rising, or other numbers seem off, then we know we have a memory leak or a performance problem.<br />
** Thanks to Puppet Master, RockyBst, Lord Of Nothing, and NRSirLimbo for reports that led to us finding this.<br />
<br />
* Fixed a MAJOR bug from version 2.099 that was leading to a memory leak in general, and performance problems as well (the longer you played the slower it would get).<br />
** Our entire "time based pool" logic was not actually properly processing because we forgot a single line of code, go figure.<br />
<br />
==== Slow Load Or CTD Fix ====<br />
<br />
* Since we started using the asynchronous loading of asset bundle items using unity (the last few weeks), there have been some intermittent problems with certain random items not loading in properly. This is some sort of funky bug in Unity, we're pretty positive.<br />
** We solved that problem a week or so ago by checking the async request's asset property, and if it was not invalid, forcing it to finish loading even though it was stuck.<br />
** On most machines, this was causing a really annoying lag of 10-25 seconds while Unity did whatever it was doing to finish that load. That was really annoying, but only happened the first time you loaded a savegame or quickstart or custom lobby after starting the program, and not every run of the program, and not on all machines.<br />
** More recently, we discovered that the very act of checking the async request's asset property would cause an unrecoverable error deep in unity and an immediate crash to the desktop.<br />
** Killing two birds with one stone, we're no longer checking the async request asset property at all -- thus avoiding the crash -- and instead just do a normal synchronous load when we detect a failed load. This leaves the one async request in limbo kind of forever, but that shouldn't be a problem; if it ever decides to complete, it will see that it was already completed and just do nothing.<br />
** In the meantime, not only should this avoid the crash, but it should also avoid that awful lag spike that happened for those for whom it didn't crash.<br />
** The downside is that on our dev computers we haven't been able to replicate the error at all today, so we can't verify that this 100% works. It should work, and you should see in the arcen debugging log slightly differently that says "PrototypeObject failed async load and so loaded synchronously for [some stuff] (this is not a problem, but is odd)"<br />
*** If you're one of the people who were frequently seeing either the crash, or seeing the older "PrototypeObject fixed and loaded late for [some stuff] (this is not a problem, but is odd)" message, then we'd love to have a confirmation of you seeing the new message and all being well.<br />
** Thanks to Sol and RocketAssistedPuffin for reporting.<br />
<br />
== Version 2.101 Connection Status: Confirmed ==<br />
(Released July 17th, 2020)<br />
<br />
* Carriage returns and newlines are now supported by the "condensed" string format. This will prevent tutorial messages from turning those characters into question marks when they are dumped to the chat log. Note that this will only affect chat log messages logged in this version and on, not past versions.<br />
** Thanks to ParadoxSong for reporting.<br />
<br />
* The left and right click functions of the metal display have been switched to be more natural.<br />
** Thanks to Waladil and Galian Gadris for suggesting.<br />
<br />
* The "Spire Railgun Shop" mod that comes packaged with the game has been updated to use the icons from their new locations, and will no longer error.<br />
<br />
* We've reworked our "Window_PopupScrollingColumnButtonList" a bit to add some new handy features for us.<br />
** In the factions selection window, when you are adding new factions, it now still lets you see factions that you can't add because there is only one per galaxy, but now it shows them in red, doesn't allow you to select them, and explains why in the tooltip.<br />
** In the debug menu in the escape menu in the main game, the change music submenu now shows the current selection in red (with the note that you can't change to it because it is already playing), and it shows all of the options sorted alphabetically except for the current track, which it shows as the first item.<br />
*** Also fixed a bug where the music you selected to play would not actually be the track that played; it was choosing a random other track.<br />
<br />
=== Scourge Updates ===<br />
<br />
* The hovertext for the Scourge "Strength" in the game lobby now tells you what the strength does (more scourge ships/structures, and faster).<br />
<br />
* Add a "Sandbox: Extra Strong Mode" for the scourge<br />
** This is not balanced for regular play, but is intended as a sandbox thing.<br />
** Thanks to Avenger1649 for suggesting<br />
<br />
* Fix a bug where the scourge were periodically suiciding Defensive Fireteams into player positions.<br />
** Thanks to ParadoxSong for the save.<br />
<br />
* On intensities >= 5, the scourge can create cloaked "blockade running builders" if the player has tried to blockade the scourge into a small region of the galaxy<br />
** Thanks to ParadoxSong for the suggestion<br />
<br />
* On intensities >= 6, the scourge is intended to sneak a builder off to another part of the galaxy at the beginning of the game, to make it much harder for the player to blockade them in. This was not working on some map types, including the X type.<br />
** Thanks to ParadoxSong for the save that exposed this problem.<br />
<br />
* These changes should make the scourge much harder to deal with in general, and on the X map type in particular.<br />
<br />
=== Initial Multiplayer Connection ===<br />
<br />
* AllowOtherPlayersToConnect was a setting on the World object in the past, and thus something that was getting saved into savegames and that dictated how a lot of things worked for player connections.<br />
** We've removed this concept, and instead are making it based on the menu choices you make on the main menu.<br />
** We now have a DesiredMultiplayerStatus on ArcenNetworkAuthority, which lets us recall if you wanted to be the client, a host, or just left alone in single player.<br />
<br />
* The basic shells of SteamSocket and GOGSocket have been added to the game. The in no way function yet, but this will allow for them to be built out in the future.<br />
<br />
* The SpecialNetworkType has been moved into ArcenUniversal, and is now copied onto ArcenSocket along with the InternalName of the row that created the socket.<br />
** There is now a list of AllPossibleSockets on the ArcenNetworkAuthority to allow it to swap between sockets as needed, and particularly by type.<br />
<br />
* When you open the multiplayer menu, if you have that enabled, it will now set a default network framework for you based on the status of your game at that time.<br />
** If you are logged into Steamworks, it will set steam as the default network.<br />
** If that didn't work or wasn't true, and you are logged into GOG Galaxy, it will use that as the default network.<br />
** If none of those worked, then it will pick the first "other" network type, which in this case would be Forged.<br />
<br />
* All of the options in the multiplayer menu for hosting a savegame, quickstart, or custom game now properly do those things identically to as if it was the single-player menu, but put you into host mode first.<br />
** The single-player menu puts you into single-player mode, and makes sure that your ArcenSocket is set to NullSocket.<br />
<br />
* When you try to go into one of the client or host multiplayer areas from the multiplayer menu, it now properly activates your most recent chosen network framework, or switches to the first available one that actually can function right now on your system and gives you explanations for why it did that.<br />
** Essentially there is a fair bit of under the hood plumbing now for the frameworks to register themselves with the network authority class and explain about their availability.<br />
<br />
* If you are looking to connect to another machine, then the "connect as client" tooltip now gives you information about what to expect based on your currently-selected framework.<br />
** Are we connecting by IP? How much of a hassle will that be? Is it going to be by selecting a friend on Steam or GOG? Etc.<br />
<br />
* For IP-address-based networking frameworks, either starting a host mode or client mode event now pops up with a message explaining what information you need to give to the client players or get from the host.<br />
** This is not really the preferred networking method unless you're having a LAN party, and the game makes that clear, but it also goes out of its way to address the most likely areas of potential confusion for people who are using these frameworks.<br />
<br />
* Fixed a few bugs, and added a bit more debug logging clarity, so that the host can once again properly open a socket and wait for connection.<br />
** This was working up until a week or so ago, and was simply messed up a bit when we reworked things to support multiple networking frameworks. There were lots of lonely hosts never getting any client requests ever since the game has been in public beta.<br />
<br />
* When you quit out of the multiplayer lobby back to the main menu, it now immediately disconnects you as a host or client, to avoid confusion of lingering connections.<br />
<br />
* When you are in the lobby in multiplayer, the chat sidebar/log now appears again. At the top it says if you are hosting multiplayer or a multiplayer client.<br />
<br />
==== Choosing A Networking Framework ====<br />
<br />
* The main menu has been updated so that the "network" button at the top of the multiplayer menu now updates its text to show the current network.<br />
<br />
* The network button at the top of the multiplayer menu on the main menu is now fully functional. It shows available network frameworks, and gives you explanations for each one, as well as showing unavailable ones in red with an explanation for why they are not available right now. It lets you select from available ones, which then get set as your current socket when you try to host or join a multiplayer game.<br />
<br />
==== What Is My IP Address If I Need It? ====<br />
<br />
* In the networking section of the settings menu, it now has helpful informational displays of your local IP addresses and your public IP address.<br />
** To get your public IP address, we have to make a public call to the url http://checkip.dyndns.org, so this may flag your software firewall to ask permission when you go to the networking tab now.<br />
** Our goal is of course for you to not have to use your direct IP addresses at all in this game, but if you're playing on a LAN then that would be one great example of when you'd want to use this.<br />
** At any rate, each IP address is stored in a textbox that you can copy-paste from, which is very handy when sharing with friends.<br />
** There are also lengthy explanations about what the public IP address is for, and under what circumstances to use it, as well as the local IP addresses, plus special notes for any IPV6 addresses that it detects.<br />
** Getting this data is time-consuming for your computer, so you will notice micro-lags every few seconds while you are on the networking tab, now. This is normal and should not impair your use of the functionality.<br />
<br />
==== Milestone: Successfully Connecting A Client To Host ====<br />
<br />
* The old interface for network connections by IP address is restored and works again. We'll have a different one for connecting via friends list on Steam and GOG, later, but this is the one that gets used for Forge and any other IP-based network frameworks.<br />
<br />
* Connections are now able to be established from one computer to another, for the first time since 2018!<br />
** We added the ability to see how many clients there are connected to a host in the lobby (including the host), so you can see the connection tick up.<br />
** Next up is them actually exchanging enough information to get the client into the lobby and have them see shared world info and be able to chat and all that. But this is milestone one!<br />
<br />
== Version 2.099 Last Rabbit Holes ==<br />
(Released July 15th, 2020)<br />
<br />
* There is now a galaxy setting to grant players Watch vision for 1, 2 or 3 hops from all command stations.<br />
** Thanks to uhamster9 for inspiring this addition.<br />
<br />
=== Fixes And Tweaks ===<br />
<br />
* Improved the way that time-based pools are incremented in time, so that we're never having accidental cases where we miss one.<br />
** Also made it so that they actually work as intended when the world is being cleared (running 16 seconds' worth of time at once). This then keeps the pools smaller if you repeatedly load savegames.<br />
<br />
* On the escape menu, under where it shows you the various numbers of objects in memory, it now shows you the number of galaxy planets and planet links activated and in existence.<br />
** This lets us tell when these have a memory leak, if there ever is one with them.<br />
<br />
* Additionally, galaxy map links are now pooled for the first time ever, as the discarding of them was previously a definite memory leak. Normally this just happened between saves and loads, but it was also possible to happen when nomad planets moved.<br />
<br />
* In addition to the existing time based pools, we now have a new ExternalizedPool.<br />
** This is now used for the galaxy map links, and actually we have stopped the galaxy map planets themselves from using the super-old IArcenGameObjectResourcePoolable and they also now use this.<br />
<br />
* The way that planets for the galaxy map are initialized, and the way that their positions are set, is completely overhauled.<br />
** This is more efficient and properly uses pooling (which never was working properly before, it turns out).<br />
** It also makes the position of planets automatically react to them having moved in the game sim, without having to do anything special.<br />
<br />
* The arcencolors asset bundle has been removed, with its contents simply rolled into arcenui. Ultimately this is a bit faster to load, and saves a bit of disk space and RAM also.<br />
** Also removed the aiw2squads bundle, and the examples bundle.<br />
*** The examples bundle simply has its example content still there, but not in a bundle (it's to help aspiring models modders).<br />
*** The squads bundle is old data that we've not used in forever, and so has just been cleared out. It wasn't huge, but wasn't worth being there.<br />
<br />
* Starting to load a savegame (including for a quickstart or the last settings for a lobby) now writes to the log when you start the process, and at the end of the process writes how long it took.<br />
<br />
* Added a new debug setting: "Write Detailed Savegame Timings"<br />
** When loading a savegame, including the 'last settings' for the lobby or the basis for a quick start, keep track of detailed timing data and write that into the normal debug log so that it's clear what is taking longer and shorter amounts of time.<br />
<br />
* It turns out that chasing "why savegames now take 16 seconds to load sometimes" was a snipe hunt. The serialization sizes logging, when enabled, actually was causing that amount of slowness. With that off, it loads in about 2 seconds.<br />
** The extra instrumentation that we added for the savegame timings is still nice, but ultimately was not a useful bit of time spent at the current moment.<br />
<br />
* Fixed an issue that could happen in the lobby in particular where it could not properly save your prior settings because the fleet ID or speed group ID was lass than zero.<br />
** This pretty much could only happen if you already had another error first.<br />
<br />
* Fixed an exception in SeedNormalEntities that could happen if you rapidly tried to regenerate maps in the lobby in just the wrong way.<br />
<br />
=== Under The Hood Improvements For Icon Modding And RAM Usage ===<br />
<br />
* The last of the icons from the ExternalIcons folder have been moved into the unity project that generates the asset bundles, simply to dispel any potential confusion about the fact that they can be edited directly and that have some change on the game without recompiling asset bundles. This was a frequent modder confusion.<br />
** That said, the ones that were in the Official_1 folder are now in a CentralIconBits, and can now be used in the UI for the first time if we ever want to. That means things like health bars and whatnot could in theory be used in the ui if someone wanted to, whereas before they could only be used on gamespace-level icons.<br />
<br />
* Cleaned out a variety of unused icons from the arcenui asset bundle, and in general tidied up some of our organization of working files versus final files.<br />
** Also standardized the naming of certain things.<br />
<br />
* Broke the "official icon dictionary" out into six dictionaries:<br />
** One is for the "central bits" like health bars and so on, and would be the same for all ships.<br />
** Two are for the overlays, like for saying what kind of starship or guard post something is. There can be more than one of these, and the fact that these are split out like this demonstrate the modding capabilities and how things can combine.<br />
** Three are for ship icons and their borders, and there can be more of these modded in as well. As with the overlays, not only does this demonstrate how such mods would work, but it also has the side benefit of slightly less VRAM usage in a few cases.<br />
<br />
* The way that GUI icons are discovered from the xml based on their gamespace-icon counterparts is completely revised, and is now based on extra information in the ExternalIconDictionary entries.<br />
** This is a lot more flexible, and allows us to load icons from multiple asset bundles and/or multiple files within the same bundle.<br />
<br />
* The naming for finding icons is now much more complicated, in the sense that they don't all come from a single dictionary called "Official."<br />
** So there were over 1100 places in the base game and expansions where we've had to modify to point to the new dictionaries. Any mods would also need to be updated to point to the new places, unless they want to start using their own icons (once we put together a tutorial for that).<br />
<br />
* The external sprite dictionaries have been updated to be able to properly load in in multiple threads.<br />
<br />
* The game is now able to load the xml files for external icons from any mod or expansion, in:<br />
** Expansions/[ExpansionName]/GameData/ExternalIcons/[thefile].xml<br />
** XMLMods/[ModName]/ExternalIcons/[thefile].xml<br />
** XMLMods_NonDistributed/[ModName]/ExternalIcons/[thefile].xml<br />
** It's worth noting that these are xml files that are generated by Texture Packer, not xml that we create.<br />
** These files are referred to in the "ExternalIconDictionaries" xml as something along the lines of xml_path="Official_CentralIconBits.xml"<br />
*** It will then search the main game's folder (/GameData/ExternalIcons/[thefile].xml), then all the expansion folders, then any activated mod folders for a file with that name that was specified.<br />
** This allows for mods to be self-contained when it comes to their icons, and it allows expansions to have their own icons that are not packaged with the main game (not that we have imminent plans to do that).<br />
<br />
* On the icons used in the game, we previously were not using any compression, which made them absolutely massive in size (80mb for the main dictionary).<br />
** This was done in order to preserve quality, but we're also using GIANT icons in order to allow for really super-high-res displays of the future, as well as square ones to allow for ideal mipmaps, etc. So the lack of compression was hugely overkill.<br />
** We're now using compressed textures, which turns what was 80mb into more like 8mb. This has a very direct impact on performance and VRAM usage, so particularly on low-spec machines they will likely run far better.<br />
<br />
* The game now automatically constructs custom "gimbal materials" for the in-gamespace icons, in as many combinations as are needed for the things that it has drawn for you so far.<br />
** The total number of materials always in the past was "one," but it was using a single large dictionary and a lot more VRAM -- and it had a finite amount of space for things. There was a solid chance we were going to run out of space in that one dictionary as part of implementing DLC2. But either way, mods were not possible. The new number right now is 8, looks like.<br />
** Now it may make a handful of materials, depending on how many mods you have installed that have custom icons, and several for the core game and expansions itself. But these are vastly smaller, and while this does increase the number of "draw calls," each material is still mostly instanced together (there are a few mesh differences depending on if there are health bars shown or whatever), but the overall load on the GPU pipeline is lower.<br />
** All of this is automatically handled by the game in as efficient a pattern as possible, and if you're curious how many combination materials it has created, you can see that in the escape menu at the bottom of the list of memory pooling info.<br />
<br />
* A new debug setting, "Log Gimbal Icon Material Creation", has been added:<br />
** When this is on, any 'gimbal icon' material creation events will be logged as to what was created and how long it took to do so.<br />
** Turns out that this uses an immeasurably small amount of time for each material (less than 1ms each), so that's awesome.<br />
<br />
=== Under The Hood Improvements For Mods With Code ===<br />
<br />
* The game is now able to load dlls from mods or expansions, rather than just from the central game folder.<br />
** This works just like the external icon files, and basically looks for the dll in the central game folder first (/GameData/ModdableLogicDLLs/[thefile].dll), and then looks at expansions and then installed mods if it can't find them.<br />
** The paths are:<br />
*** Expansions/[ExpansionName]/GameData/ModdableLogicDLLs/[thefile].dll<br />
** XMLMods/[ModName]/ModdableLogicDLLs/[thefile].dll<br />
** XMLMods_NonDistributed/[ModName]/ModdableLogicDLLs/[thefile].dll<br />
** We really don't have a need to do this with expansions, but the flexibility is nice.<br />
** With mods that are more than just xml, however, this finally lets a modder distribute just a single folder that has everything in it, and not have to worry about putting some things in central game folders.<br />
** This is only partially tested, but should work.<br />
<br />
* It's worth pointing out that expansions and mods already did (and still do) have the capability to load asset bundles (icons, music, sound effects, models, textures, shaders, etc) from their folders.<br />
** The structure for those is /GlobalBundles/ in the main folder for anything not platform-specific, /AssetBundles_Linux/, /AssetBundles_OSX/, or /AssetBundles_Win/ for the things that are.<br />
** Inside the folders for expansions it is: Expansions/[ExpansionName]/[OneOfTheAboveFolders]/<br />
** Inside the folders for mods it is: XMLMods/[ModName]/[OneOfTheAboveFolders]/ or XMLMods_NonDistributed/[ModName]/[OneOfTheAboveFolders]/<br />
** None of this is new, but it's worth mentioning for now.<br />
** This is only partially tested, but should work.<br />
<br />
=== Larger Gamespace Icons And Fixed Galaxy Map Line Offsets ===<br />
<br />
* We also now have a non-billboarding version of our shader for purposes of our icons on the galaxy map.<br />
** Our core shader does on-GPU (read: hyper efficient) billboarding to always fully face the camera. This is very useful in the main view where you are moving around the camera a lot but always want the icons to face you.<br />
** The downside, however, is that with a largely-straight-overhead camera like the galaxy map uses, this billboarding would cause there to be a perspective shift where the icons for planets would get offset from the lines leading between planets no matter what we did. It also caused them to move relative to the text that was next to them.<br />
*** This offsetting of the lines to the planets was one of the largest "visual papercut" issues that we've had for a really long time, and it is finally fixed!<br />
<br />
* The ship icon scale has been adjusted from a default of 1.5 to 2.2, and will affect all prior settings files.<br />
** It's description has also been updated for the personal settings tooltip: For the icons in the main display area (not the sidebar), how large should they draw? Default is 2.2. If you go too large, it can be hard to see things because they overlap too much. If you go too small, they can get extremely blurry because of flipping to a lower mipmap. The larger your screen DPI, the smaller you can go without losing clarity.<br />
<br />
== Prior Release Notes ==<br />
<br />
[[AI War 2: Building Multiplayer]]</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40535AI War 2:Zenith Onslaught Patch Notes2020-09-25T18:20:57Z<p>Democracy? Democracy!: /* Quickstarts */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
''' Nota Bene '''<br />
<br />
Please don't discuss anything you learn from this page with others unless Badger or Chris has publicly talked about those features already.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Fat Snake Map Type: This map type is like Snake, but can be multiple planets thick. Spiral Snake's real problem is that there's no way to bypass very strong enemy planets, so this will be easier and more varied.<br />
** With all the tunables on all the map types, there are > 100 unique combinations<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* We had time to do voice lines for DLC2 and in the process we also recorded voice lines for DLC1 since there wasn't time in that release.<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= Bug Reports =<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Investigate player-allied ZAs driving threat against player<br />
<br />
* Spire fleets being eaten by miners cause errors<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
* Add a notification when a Nomad is actively on a collision course. Notification should underscore the extreme AI response and the permaloss of player units that are unable to flee in time. Ideally, this would have a scary countdown timer (noted by Zeus)<br />
<br />
= Patch Notes =<br />
<br />
== 2.512 ==<br />
<br />
* Add a new variant of the Squares map type, where all the little clusters are also laid out in squares<br />
** This also includes some minor improvements to the LinkPlanetLists code, to try to make more interesting linkages<br />
<br />
* Add a new Fat Snake map type<br />
<br />
* Improve post-civil war ZA behaviour<br />
** The ZA has more time to retreat before being hostile to the AI, and is better at not triggering threat against the player in the process.<br />
** The ZAs who were at war will keep shooting at eachother as they retreat (so if you had 3 ZAs ganging up on one, as soon as the 1 is weak enough there will be a bloodbath)<br />
*** Thanks to a bug report from Ovalcircle<br />
<br />
== 2.509 ==<br />
<br />
=== Zenith Architrave Updates ===<br />
<br />
* ZA should regrow territory eaten by Miners<br />
** Pointed out to me by zeus<br />
<br />
* Quiet some leftover ZA debug logging<br />
** Thanks to Oval for reporting<br />
<br />
* ZA bonus civil war attacks (mini wormhole invasions by the ZA to make sure a civil war ends eventually) now only kick in after 15 minutes<br />
** Thanks to oval for pointing out that this previous code didn't actually wait the requested time, and zeus for suggesting increasing the time to 15 minutes<br />
<br />
* Weaken the ZA hacking response.<br />
** Thanks to zeus for suggesting<br />
<br />
* Tweak the ZA notitifaction a bit<br />
** Thanks to Puffin for suggesting<br />
<br />
=== Nomad Planet Updates ===<br />
<br />
* The AI's response to a nomad planet hack now also allows it to send ships after miscellaneous player targets (generally things like GCAs and economic command stations) to distract the player<br />
<br />
* The Nomad Planet crash response now scales based on the overall power level of the player(s) and their allies<br />
<br />
* You can now say whether you want the nomads to move Fast, Medium or Slow (this controls how often they move)<br />
<br />
* Nomads now must move a bit further<br />
<br />
== 2.507 ==<br />
<br />
* Continued improvements to how the DZ manage their ships in the early game<br />
<br />
* When killed, a Zenith Miner will leave behind wreckage, in the form of a slightly-better-than-usual metal generator.<br />
** This is intended to be a cool little tidbit but not to impact balance<br />
*** Thanks to a discussion with starkelp for this feature<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
(Released April 21st, 2020) <br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
*** Volatile Shock Frigate (Splash)<br />
**** Varient of the Volatile Tesla Frigate, it exchanges it's damage bonus against higher energy targets for a faster fire rate of 7 second reload.<br />
** Chain Lightning Frigate (splash)<br />
***Tesla Frigate without the volatile or energy multiplier. Default 15 second weapon fire reload but has the burstfire mechanic -- it can fire up to 3 times in quick succession before a long cooldown (30 seconds). Does bonus damage to stacks<br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units (the concentration mechanic could also replace these multipliers). <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses. (Badger notes: I don't think golems are the corpses of zenith, are they? Regardless, that theming isn't appropriate for the ZA or DZ, since these are living Zenith societies.)<br />
(Demo): Afaik, golems are indeed dead zenith. Humans are simply installing the equivalent of control cybernetics to reanimate them. I suppose it wouldn't be fitting if they're "dead" but they're still zenith, so I kinda thought it'd be appropriate that some new golems were added to the DLC centered around the Zenith.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Shockwave Golem: A Golem equiped with a tesla style weapon (aoe blast centered on ship) that takes a long time to reload (10 seconds maybe), but once charged it knocks anything below mass 6tx away from the Shockwave Golem. The shockwave itself deals high damage, and strikecraft that survive can be expected to be pushed all the way across the gravity well, while guardians and frigates will only be pushed a moderate distance away.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
*Hammer Golem: Has a single target rapid fire weapon. Said weapon deals high damage and has a small aoe. It also has a longer than average range.<br />
<br />
* Attritioner Golem:<br />
** Same as Classic's Spire Attritioner, but as a Golem. Does x amount of attrition damage to all enemy units on the planet per second. No guns (or very tiny guns just as a basic placeholder), and relatively fragile with low shielding.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
For Consideration <br />
<br />
* Genecist AI has Dire Guard Posts replaced with Scourge Fortresses or Dire versions of the scourge guardposts (suggested by Zeus)<br />
<br />
* Spire Hammer AI has dire version of Spire guardpost (tries to seed at least one) (suggested by Zeus)<br />
<br />
* Ragnarok AI has a AI version Jormangadur in its praetorian fleet (suggested by Zeus)<br />
<br />
* Gladiator AI has upgraded Usurpers based on the Pioneers -- seems like this would be an interesting way to help this AI type standout. Like the idea of the new AIs incorporating not only the units but the personalities (suggested by Zeus)<br />
<br />
* Praetorian AI gets extra Borers or can use them more frequently -- the idea is that it likes to use Borers to shorten distance of its HW and yours so it can use its Praetorian fleet more aggressively. I saw this happen in a game and it was really cool to see it camping a world away from my HW (suggested by Zeus)<br />
<br />
* Option to allow human HW to spawn on nomad. Perhaps this will be unbalanced but it could be a fun feature and potentially lead to some interesting mods. (suggested by Zeus)<br />
<br />
===Quickstarts===<br />
Introductory level<br />
<br />
Zenith Doorways of Doom: Some new Zenith exogalactic invaders have arrived in our galaxy! However, it seems like they are not a unified force. While we have noticed them engaging both the AI and us, they seem to focus on destroying each other, especially when one appears to get stronger than the others. Perhaps we could use the chaos these to our advantage?<br />
Features: 100 planets simple, 5 intensity 5 ZA, AI difficulty 7.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40534AI War 2:Zenith Onslaught Patch Notes2020-09-25T18:20:42Z<p>Democracy? Democracy!: /* New Golems */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
''' Nota Bene '''<br />
<br />
Please don't discuss anything you learn from this page with others unless Badger or Chris has publicly talked about those features already.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Fat Snake Map Type: This map type is like Snake, but can be multiple planets thick. Spiral Snake's real problem is that there's no way to bypass very strong enemy planets, so this will be easier and more varied.<br />
** With all the tunables on all the map types, there are > 100 unique combinations<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* We had time to do voice lines for DLC2 and in the process we also recorded voice lines for DLC1 since there wasn't time in that release.<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= Bug Reports =<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Investigate player-allied ZAs driving threat against player<br />
<br />
* Spire fleets being eaten by miners cause errors<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
* Add a notification when a Nomad is actively on a collision course. Notification should underscore the extreme AI response and the permaloss of player units that are unable to flee in time. Ideally, this would have a scary countdown timer (noted by Zeus)<br />
<br />
= Patch Notes =<br />
<br />
== 2.512 ==<br />
<br />
* Add a new variant of the Squares map type, where all the little clusters are also laid out in squares<br />
** This also includes some minor improvements to the LinkPlanetLists code, to try to make more interesting linkages<br />
<br />
* Add a new Fat Snake map type<br />
<br />
* Improve post-civil war ZA behaviour<br />
** The ZA has more time to retreat before being hostile to the AI, and is better at not triggering threat against the player in the process.<br />
** The ZAs who were at war will keep shooting at eachother as they retreat (so if you had 3 ZAs ganging up on one, as soon as the 1 is weak enough there will be a bloodbath)<br />
*** Thanks to a bug report from Ovalcircle<br />
<br />
== 2.509 ==<br />
<br />
=== Zenith Architrave Updates ===<br />
<br />
* ZA should regrow territory eaten by Miners<br />
** Pointed out to me by zeus<br />
<br />
* Quiet some leftover ZA debug logging<br />
** Thanks to Oval for reporting<br />
<br />
* ZA bonus civil war attacks (mini wormhole invasions by the ZA to make sure a civil war ends eventually) now only kick in after 15 minutes<br />
** Thanks to oval for pointing out that this previous code didn't actually wait the requested time, and zeus for suggesting increasing the time to 15 minutes<br />
<br />
* Weaken the ZA hacking response.<br />
** Thanks to zeus for suggesting<br />
<br />
* Tweak the ZA notitifaction a bit<br />
** Thanks to Puffin for suggesting<br />
<br />
=== Nomad Planet Updates ===<br />
<br />
* The AI's response to a nomad planet hack now also allows it to send ships after miscellaneous player targets (generally things like GCAs and economic command stations) to distract the player<br />
<br />
* The Nomad Planet crash response now scales based on the overall power level of the player(s) and their allies<br />
<br />
* You can now say whether you want the nomads to move Fast, Medium or Slow (this controls how often they move)<br />
<br />
* Nomads now must move a bit further<br />
<br />
== 2.507 ==<br />
<br />
* Continued improvements to how the DZ manage their ships in the early game<br />
<br />
* When killed, a Zenith Miner will leave behind wreckage, in the form of a slightly-better-than-usual metal generator.<br />
** This is intended to be a cool little tidbit but not to impact balance<br />
*** Thanks to a discussion with starkelp for this feature<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
(Released April 21st, 2020) <br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
*** Volatile Shock Frigate (Splash)<br />
**** Varient of the Volatile Tesla Frigate, it exchanges it's damage bonus against higher energy targets for a faster fire rate of 7 second reload.<br />
** Chain Lightning Frigate (splash)<br />
***Tesla Frigate without the volatile or energy multiplier. Default 15 second weapon fire reload but has the burstfire mechanic -- it can fire up to 3 times in quick succession before a long cooldown (30 seconds). Does bonus damage to stacks<br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units (the concentration mechanic could also replace these multipliers). <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses. (Badger notes: I don't think golems are the corpses of zenith, are they? Regardless, that theming isn't appropriate for the ZA or DZ, since these are living Zenith societies.)<br />
(Demo): Afaik, golems are indeed dead zenith. Humans are simply installing the equivalent of control cybernetics to reanimate them. I suppose it wouldn't be fitting if they're "dead" but they're still zenith, so I kinda thought it'd be appropriate that some new golems were added to the DLC centered around the Zenith.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Shockwave Golem: A Golem equiped with a tesla style weapon (aoe blast centered on ship) that takes a long time to reload (10 seconds maybe), but once charged it knocks anything below mass 6tx away from the Shockwave Golem. The shockwave itself deals high damage, and strikecraft that survive can be expected to be pushed all the way across the gravity well, while guardians and frigates will only be pushed a moderate distance away.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
*Hammer Golem: Has a single target rapid fire weapon. Said weapon deals high damage and has a small aoe. It also has a longer than average range.<br />
<br />
* Attritioner Golem:<br />
** Same as Classic's Spire Attritioner, but as a Golem. Does x amount of attrition damage to all enemy units on the planet per second. No guns (or very tiny guns just as a basic placeholder), and relatively fragile with low shielding.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
For Consideration <br />
<br />
* Genecist AI has Dire Guard Posts replaced with Scourge Fortresses or Dire versions of the scourge guardposts (suggested by Zeus)<br />
<br />
* Spire Hammer AI has dire version of Spire guardpost (tries to seed at least one) (suggested by Zeus)<br />
<br />
* Ragnarok AI has a AI version Jormangadur in its praetorian fleet (suggested by Zeus)<br />
<br />
* Gladiator AI has upgraded Usurpers based on the Pioneers -- seems like this would be an interesting way to help this AI type standout. Like the idea of the new AIs incorporating not only the units but the personalities (suggested by Zeus)<br />
<br />
* Praetorian AI gets extra Borers or can use them more frequently -- the idea is that it likes to use Borers to shorten distance of its HW and yours so it can use its Praetorian fleet more aggressively. I saw this happen in a game and it was really cool to see it camping a world away from my HW (suggested by Zeus)<br />
<br />
* Option to allow human HW to spawn on nomad. Perhaps this will be unbalanced but it could be a fun feature and potentially lead to some interesting mods. (suggested by Zeus)<br />
<br />
===Quickstarts===<br />
Introductory level<br />
Zenith Doorways of Doom: Some new Zenith exogalactic invaders have arrived in our galaxy! However, it seems like they are not a unified force. While we have noticed them engaging both the AI and us, they seem to focus on destroying each other, especially when one appears to get stronger than the others. Perhaps we could use the chaos these to our advantage?<br />
Features: 100 planets simple, 5 intensity 5 ZA, AI difficulty 7.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40458AI War 2:Zenith Onslaught Patch Notes2020-09-20T14:17:02Z<p>Democracy? Democracy!: /* Suggestions, ideas and mechanics for Chris */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* We had time to do voice lines for DLC2 and in the process we also recorded voice lines for DLC1 since there wasn't time in that release.<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= Bug Reports =<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Investigate player-allied ZAs driving threat against player<br />
<br />
* Spire fleets being eaten by miners cause errors<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
* Make it so ZA “Warp-in Attacks” during Civil War don’t happen until the civil war has been going on for 15 minutes. <br />
**(Link to save: https://discordapp.com/channels/240637654717300736/698572497171251200/756667698456559637)<br />
<br />
* Remove spammy debug text about the ZA civil war https://discord.com/channels/240637654717300736/698572497171251200/756724575332466778<br />
<br />
= Patch Notes =<br />
<br />
== 2.507 ==<br />
<br />
* Continued improvements to how the DZ manage their ships in the early game<br />
<br />
* When killed, a Zenith Miner will leave behind wreckage, in the form of a slightly-better-than-usual metal generator.<br />
** This is intended to be a cool little tidbit but not to impact balance<br />
*** Thanks to a discussion with starkelp for this feature<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
*** Volatile Shock Frigate<br />
**** Varient of the Volatile Tesla Frigate, it exchanges it's damage bonus against higher energy targets for a faster fire rate of 7 second reload.<br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses. (Badger notes: I don't think golems are the corpses of zenith, are they? Regardless, that theming isn't appropriate for the ZA or DZ, since these are living Zenith societies.)<br />
(Demo): Afaik, golems are indeed dead zenith. Humans are simply installing the equivalent of control cybernetics to reanimate them. I suppose it wouldn't be fitting if they're "dead" but they're still zenith, so I kinda thought it'd be appropriate that some new golems were added to the DLC centered around the Zenith.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Shockwave Golem: A Golem equiped with a tesla style weapon (aoe blast centered on ship) that takes a long time to reload (10 seconds maybe), but once charged it knocks anything below mass 6tx away from the Shockwave Golem. The shockwave itself deals high damage, and strikecraft that survive can be expected to be pushed all the way across the gravity well, while guardians and frigates will only be pushed a moderate distance away.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
*Hammer Golem: Has a single target rapid fire weapon. Said weapon deals high damage and has a small aoe. It also has a longer than average range.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
For Consideration <br />
<br />
* Genecist AI has Dire Guard Posts replaced with Scourge Fortresses or Dire versions of the scourge guardposts (suggested by Zeus)<br />
<br />
* Spire Hammer AI has dire version of Spire guardpost (tries to seed at least one) (suggested by Zeus)<br />
<br />
* Ragnarok AI has a AI version Jormangadur in its praetorian fleet (suggested by Zeus)<br />
<br />
* Gladiator AI has upgraded Usurpers based on the Pioneers -- seems like this would be an interesting way to help this AI type standout. Like the idea of the new AIs incorporating not only the units but the personalities (suggested by Zeus)<br />
<br />
* Praetorian AI gets extra Borers or can use them more frequently -- the idea is that it likes to use Borers to shorten distance of its HW and yours so it can use its Praetorian fleet more aggressively. I saw this happen in a game and it was really cool to see it camping a world away from my HW (suggested by Zeus)<br />
<br />
* Option to allow human HW to spawn on nomad. Perhaps this will be unbalanced but it could be a fun feature and potentially lead to some interesting mods. (suggested by Zeus)<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40457AI War 2:Zenith Onslaught Patch Notes2020-09-20T13:56:49Z<p>Democracy? Democracy!: /* New Golems */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* We had time to do voice lines for DLC2 and in the process we also recorded voice lines for DLC1 since there wasn't time in that release.<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= Bug Reports =<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Investigate player-allied ZAs driving threat against player<br />
<br />
* Spire fleets being eaten by miners cause errors<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
* Make it so ZA “Warp-in Attacks” during Civil War don’t happen until the civil war has been going on for 15 minutes. <br />
**(Link to save: https://discordapp.com/channels/240637654717300736/698572497171251200/756667698456559637)<br />
<br />
* Remove spammy debug text about the ZA civil war https://discord.com/channels/240637654717300736/698572497171251200/756724575332466778<br />
<br />
= Patch Notes =<br />
<br />
== 2.507 ==<br />
<br />
* Continued improvements to how the DZ manage their ships in the early game<br />
<br />
* When killed, a Zenith Miner will leave behind wreckage, in the form of a slightly-better-than-usual metal generator.<br />
** This is intended to be a cool little tidbit but not to impact balance<br />
*** Thanks to a discussion with starkelp for this feature<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses. (Badger notes: I don't think golems are the corpses of zenith, are they? Regardless, that theming isn't appropriate for the ZA or DZ, since these are living Zenith societies.)<br />
(Demo): Afaik, golems are indeed dead zenith. Humans are simply installing the equivalent of control cybernetics to reanimate them. I suppose it wouldn't be fitting if they're "dead" but they're still zenith, so I kinda thought it'd be appropriate that some new golems were added to the DLC centered around the Zenith.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Shockwave Golem: A Golem equiped with a tesla style weapon (aoe blast centered on ship) that takes a long time to reload (10 seconds maybe), but once charged it knocks anything below mass 6tx away from the Shockwave Golem. The shockwave itself deals high damage, and strikecraft that survive can be expected to be pushed all the way across the gravity well, while guardians and frigates will only be pushed a moderate distance away.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
*Hammer Golem: Has a single target rapid fire weapon. Said weapon deals high damage and has a small aoe. It also has a longer than average range.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
For Consideration <br />
<br />
* Genecist AI has Dire Guard Posts replaced with Scourge Fortresses or Dire versions of the scourge guardposts (suggested by Zeus)<br />
<br />
* Spire Hammer AI has dire version of Spire guardpost (tries to seed at least one) (suggested by Zeus)<br />
<br />
* Ragnarok AI has a AI version Jormangadur in its praetorian fleet (suggested by Zeus)<br />
<br />
* Gladiator AI has upgraded Usurpers based on the Pioneers -- seems like this would be an interesting way to help this AI type standout. Like the idea of the new AIs incorporating not only the units but the personalities (suggested by Zeus)<br />
<br />
* Praetorian AI gets extra Borers or can use them more frequently -- the idea is that it likes to use Borers to shorten distance of its HW and yours so it can use its Praetorian fleet more aggressively. I saw this happen in a game and it was really cool to see it camping a world away from my HW (suggested by Zeus)<br />
<br />
* Option to allow human HW to spawn on nomad. Perhaps this will be unbalanced but it could be a fun feature and potentially lead to some interesting mods. (suggested by Zeus)<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40397AI War 2:Zenith Onslaught Patch Notes2020-09-15T08:55:24Z<p>Democracy? Democracy!: /* New Golems */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= Bug Reports =<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Investigate player-allied ZAs driving threat against player<br />
<br />
* Come up with a fun means of saving transports.<br />
<br />
* Longer term: let the DZ recognize "We're under attack!"<br />
<br />
* Miners cause an error when a flagship is on planet when it is consumed. This is likely going to need additional context for the player, who will not be used to having a flagship permakilled -- a warning journal when the miner first shows up seems appropiate<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
= Patch Notes =<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Shockwave Golem: A Golem equiped with a tesla style weapon (aoe blast centered on ship) that takes a long time to reload (10 seconds maybe), but once charged it knocks anything below mass 6tx away from the Shockwave Golem. The shockwave itself deals high damage, and strikecraft that survive can be expected to be pushed all the way across the gravity well, while guardians and frigates will only be pushed a moderate distance away.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
*Hammer Golem: Has a single target rapid fire weapon. Said weapon deals high damage and has a small aoe. It also has a longer than average range.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40396AI War 2:Zenith Onslaught Patch Notes2020-09-15T08:49:11Z<p>Democracy? Democracy!: /* New Golems */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= Bug Reports =<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Investigate player-allied ZAs driving threat against player<br />
<br />
* Come up with a fun means of saving transports.<br />
<br />
* Longer term: let the DZ recognize "We're under attack!"<br />
<br />
* Miners cause an error when a flagship is on planet when it is consumed. This is likely going to need additional context for the player, who will not be used to having a flagship permakilled -- a warning journal when the miner first shows up seems appropiate<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
= Patch Notes =<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Shockwave Golem: A Golem equiped with a tesla style weapon (aoe blast centered on ship) that takes a long time to reload (10 seconds maybe), but once charged it knocks anything below mass 6tx away from the Shockwave Golem. The shockwave itself deals high damage, and strikecraft that survive can be expected to be pushed all the way across the gravity well, while guardians and frigates will only be pushed a moderate distance away.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40395AI War 2:Zenith Onslaught Patch Notes2020-09-15T08:20:17Z<p>Democracy? Democracy!: /* New Golems */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= Bug Reports =<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Investigate player-allied ZAs driving threat against player<br />
<br />
* Come up with a fun means of saving transports.<br />
<br />
* Longer term: let the DZ recognize "We're under attack!"<br />
<br />
* Miners cause an error when a flagship is on planet when it is consumed. This is likely going to need additional context for the player, who will not be used to having a flagship permakilled -- a warning journal when the miner first shows up seems appropiate<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
= Patch Notes =<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40394AI War 2:Zenith Onslaught Patch Notes2020-09-15T08:19:58Z<p>Democracy? Democracy!: /* Suggestions, ideas and mechanics for Chris */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a moderate impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust). Or you might get a real "moderate" faction like an intensity 6 Astro Trains<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to allow a faction to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= Bug Reports =<br />
<br />
= Badger TODOs =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
* Investigate player-allied ZAs driving threat against player<br />
<br />
* Come up with a fun means of saving transports.<br />
<br />
* Longer term: let the DZ recognize "We're under attack!"<br />
<br />
* Miners cause an error when a flagship is on planet when it is consumed. This is likely going to need additional context for the player, who will not be used to having a flagship permakilled -- a warning journal when the miner first shows up seems appropiate<br />
<br />
* Continue working on new voice lines: https://docs.google.com/document/d/1Y4Ea2WyfME3xZ4VIr5jhNGgLSb4F8JqX1jxUsEi_mds/edit?usp=sharing<br />
<br />
= Patch Notes =<br />
<br />
== 2.505 ==<br />
<br />
* Continued improvements to DZ planet linking to make them even better at not going near player or ai homeworlds<br />
<br />
== 2.504 ==<br />
<br />
* Fix the performance degradation whenever nomad planets were used. We were reconnecting planets that were already connected whenever we regenerated the galaxy map after a planet moved. So we'd wind up with enormous numbers of galaxy links. Whoops.<br />
** Thanks to everyone who ever tried Nomads for reporting<br />
<br />
* The game now tries much harder to make sure that nomad planet wormholes aren't placed on top of other wormholes (This change is also reflected on the main page)<br />
** Thanks to Mac for reminding me about this<br />
<br />
* Fix a typo in one of the nomad planet hacks<br />
** Thanks to Mac for the bug report<br />
<br />
* If a ZA civil war has been going on for > 10 minutes, the smaller ZAs will start to unleash bonus attacks directly on the large ZA's planets. This will eventually end any civil war<br />
** This code has been in for sometime but it was broken. Thanks to a save from Oval for letting me debug it<br />
<br />
* Fix a typo in the ai layout description<br />
** Thanks to Ovalcircle and probably others for reporting<br />
<br />
==== DZ Changes ====<br />
<br />
''' DZ Save Compatibility Broken '''<br />
<br />
* Improve DZ economic intelligence in a fashion that won't work on current DZ save games.<br />
** This is a good excuse to remove the guns on the Library but replace them with a real hacking response, since removing the guns will also break save compatibility.<br />
<br />
* Increase DZ income early game. <br />
<br />
* DZ overall power level can now go much higher<br />
<br />
* AI gets bonus hunter fleet ships against DZ.<br />
<br />
* The DZ is better about trying to spawn far from player or AI homeworlds<br />
<br />
== 2.502 ==<br />
<br />
* Add some comments to the DZ. The DZ can now have its income balanced differently for Player allied and Dark Alliance allied DZ.<br />
<br />
== 2.501 ==<br />
<br />
=== ZM Changes ===<br />
<br />
* Enhance the Zenith Miner notification to cycle you between multiple simultaneous probes/miners<br />
** Suggested by zeus<br />
<br />
* The galaxy now reconnects properly after a miner noms a planet<br />
** Thanks to zeus for the bug report<br />
<br />
* The ZM now spawns more miners at high intensities; up to 5 (if you are very unlucky) at a time. <br />
** The first time probes spawn, there will be a max of two. This is to not overwhelm a player early.<br />
** Thanks to zeus for the suggestion<br />
<br />
* Miners can eat Nomads later in the game (they must have eaten at least 4 planets first)<br />
<br />
* Add journal text to explain that Flagships can be eaten by Miners<br />
<br />
=== DZ Changes ===<br />
<br />
* The DZ will pack a larger punch when they arrive later in the game<br />
<br />
* The DZ can now build utility structures like tractors and gravity generators.<br />
* The DZ will now slowly capture and defend a perimiter instead of expanding very quickly. Once they have their perimeter then the full out attack starts.<br />
* The DZ will now build more defensive fireteams<br />
** Thanks to feedback from Democracy<br />
<br />
== 2.134 ==<br />
<br />
* A randomly chosen ZA won't show the Territory until you've seen it<br />
** Thanks to zeus for reporting<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Leach (Exsanguinator/Mosquito variant)<br />
*** Melee swarmer that has attacher tractors "reverse tractor beams" and deals vampirism.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
===New Golems===<br />
<br />
Democracy here, as Golems are the corpses of Zenith, I thought it'd be appropriate to add some new Golems to the game. I personally think Golems are more about raw stats, and Arks are all about gimicks, so these golems are more based around being (relatively) straightforward to use powerhouses.<br />
<br />
*Striker Golem: A Stealth based golem. Despite being the size of a large starbase, it's still able to sneak by AI forces easily to assassinate high value targets. Has a VERY large pool of cloak points (I'd wager maybe 30k base, AI version has 10k), so it's hard to detect early on. It's weapon deals bonus damage to stationary targets and has fusion properties. Loses 25% cloak per shot instead of standard 100%.<br />
<br />
*Reaper Golem: A relatively quick golem (maybe 1,500 speed) that excels at ripping targets apart in close quarters. Basically think exogalactic phoenix if it had it's attack shorter and came with radar dampening/fortified property.<br />
<br />
*Mending Golem: A Golem that pulls double duty as anti stealth and self sustaining tank. Weapon is (relative to other golems) low in power but deals bonus damage to targets with albedo .7 and higher, and has a very high amount of vampirism.<br />
<br />
*Slicer Golem: An extremely powerful Golem equipped with devastating beam weaponry, with multiple beams for evaporating clusters smaller targets and a point beam for single targets. Lone wolf, so costs more AIP. (if this golem actually gets added in, can we have the beams be Zenith Heat Beams as a callback to classic?)<br />
<br />
*Bombardier Golem: A Golem that has a relatively long range that has a massive AOE weapon that can quickly kill turret groups or clusters of units. Unsure if it should have split aoe damage or static aoe damage.<br />
<br />
*Gravitational Golem: A golem that has a much stronger than average gravity generator onboard, able to slow down up to engine gx 17. It's weapon is also useful against anything with engine gx 7 or less.<br />
<br />
*Toxic Golem: A Golem that uses acid grenades to amplify damage of allies. The weapon itself is (again relative to other golems) is weaker, but it's damage amplification makes up for it.<br />
<br />
*Command Golem: A Golem that has no weapons... but it has a very strong Great Forcefield, and has a planetary speed boost and attack amplifier aura. I kinda want it to be a lone wolf so it's forced to synergize with other things, but it can be an officer.<br />
<br />
*Bunker Buster Golem: A Golem that excels at tanking damage on entry, taking reduced damage from enemy units and dealing more damage to enemy units for the first 45 seconds of being on a new panet. If possible, have it start at 30% damage reduction and bonus, and as it marks up, an additional 5% is added per mark, so a mk1 Bunker Buster Golem will take 30% reduced damage and deal 30% more damage for 45 seconds, and a mk5 Bunker Buster Golem will take 50% reduced damage and deal 50% more damage for 45 seconds. Otherwise, just give it a base 50% damage reduction and bonus. Might need a beter name.<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
** Burstfire: 1st-time unit attacks, attack rate increased to the maximum rate for X attacks. 30-second cooldown before burst is ready again. Noted by Zeus <br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
** I (Democracy) agree. Reprocessors were one of the more memorable units in classic for their ability to endlessly feed the AI.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40161AI War 2:Zenith Onslaught Patch Notes2020-09-05T09:13:32Z<p>Democracy? Democracy!: /* Suggestions, ideas and mechanics for Chris */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a medium impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust).<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships. CHRIS TODO: art and unit design<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to be able to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= TODOs and patch notes =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Bug Reports/Feedback ==<br />
<br />
Please put bug reports here!<br />
<br />
•Add a win condition involving Dark Zenith, so players could ally with the AI (or have allied + enemy AI) and still get a victory. (Win if you succesfully lock down the Dark Zenith planets with a hack for some time?) <=== Badger says "I do have thoughts along this lines, but not likely to DLC2. I think this expansion is already very large"<br />
<br />
**Perhaps an Exodian Blade retcon could be fitting here? (DLC 3) Introduce the Exodian Blade as the arch-enemy of the DZ that arrives to the player galaxy broken and scattered throughout the galaxy. Find the pieces and escort it to fight Jormangdur, etc. (noted by Zeus)<br />
<br />
** Badger hates the Exodian Blade in AIWC and what it stood for in Lore, and I will strongly oppose any usage of it in relation to any of my work.<br />
<br />
•The Dark Zenith Ultimate Golem (Norse Dragon of Ragnarok starting with J thing) gets confused between staying in its cluster and rampaging after getting aggroed by an AI reconquest wave targeting the Dark Zenith planets. It loops back and forth between the wormholes of the AI planet and the connected DZ planet. - ArnaudB (https://discord.com/channels/240637654717300736/698572497171251200/737653691472937030)<br />
<br />
* ZA Civil War with a DZ planet in the middle. Blue ZA has 843 strength on an AI planet (Fafnir), DZ planet has 237 strength on its planet (Atalia). Despite the Blue ZA having much greater strength than the DZ, it waited until it had 1.1k strength, then sent 5-8 golems in with the rest still camped out on the AI planet (Fafnir). Didn't watch until the end. - Ovalcircle https://discordapp.com/channels/240637654717300736/698572497171251200/748706992788471848<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
** Bloodlust: Every time this unit kills something, it gains bonus damage up to a cap. Loses the bonus damage if it doesn't shoot for 2(or whatever) seconds after reloading.<br />
** Concentration: If the unit has not taken damage in the past 20 (or whatever) seconds, deals bonus damage.<br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40160AI War 2:Zenith Onslaught Patch Notes2020-09-05T08:39:01Z<p>Democracy? Democracy!: /* Suggestions, ideas and mechanics for Chris */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a medium impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust).<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships. CHRIS TODO: art and unit design<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to be able to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= TODOs and patch notes =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Bug Reports/Feedback ==<br />
<br />
Please put bug reports here!<br />
<br />
•Add a win condition involving Dark Zenith, so players could ally with the AI (or have allied + enemy AI) and still get a victory. (Win if you succesfully lock down the Dark Zenith planets with a hack for some time?) <=== Badger says "I do have thoughts along this lines, but not likely to DLC2. I think this expansion is already very large"<br />
<br />
**Perhaps an Exodian Blade retcon could be fitting here? (DLC 3) Introduce the Exodian Blade as the arch-enemy of the DZ that arrives to the player galaxy broken and scattered throughout the galaxy. Find the pieces and escort it to fight Jormangdur, etc. (noted by Zeus)<br />
<br />
** Badger hates the Exodian Blade in AIWC and what it stood for in Lore, and I will strongly oppose any usage of it in relation to any of my work.<br />
<br />
•The Dark Zenith Ultimate Golem (Norse Dragon of Ragnarok starting with J thing) gets confused between staying in its cluster and rampaging after getting aggroed by an AI reconquest wave targeting the Dark Zenith planets. It loops back and forth between the wormholes of the AI planet and the connected DZ planet. - ArnaudB (https://discord.com/channels/240637654717300736/698572497171251200/737653691472937030)<br />
<br />
* ZA Civil War with a DZ planet in the middle. Blue ZA has 843 strength on an AI planet (Fafnir), DZ planet has 237 strength on its planet (Atalia). Despite the Blue ZA having much greater strength than the DZ, it waited until it had 1.1k strength, then sent 5-8 golems in with the rest still camped out on the AI planet (Fafnir). Didn't watch until the end. - Ovalcircle https://discordapp.com/channels/240637654717300736/698572497171251200/748706992788471848<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5, however it costs more.<br />
** Shank (Raider variant)<br />
*** Trades it's speed for dealing bonus damage against stationary targets.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
<br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40159AI War 2:Zenith Onslaught Patch Notes2020-09-05T05:46:14Z<p>Democracy? Democracy!: /* Suggestions, ideas and mechanics for Chris */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a medium impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust).<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships. CHRIS TODO: art and unit design<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to be able to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= TODOs and patch notes =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Bug Reports/Feedback ==<br />
<br />
Please put bug reports here!<br />
<br />
•Add a win condition involving Dark Zenith, so players could ally with the AI (or have allied + enemy AI) and still get a victory. (Win if you succesfully lock down the Dark Zenith planets with a hack for some time?) <=== Badger says "I do have thoughts along this lines, but not likely to DLC2. I think this expansion is already very large"<br />
<br />
**Perhaps an Exodian Blade retcon could be fitting here? (DLC 3) Introduce the Exodian Blade as the arch-enemy of the DZ that arrives to the player galaxy broken and scattered throughout the galaxy. Find the pieces and escort it to fight Jormangdur, etc. (noted by Zeus)<br />
<br />
** Badger hates the Exodian Blade in AIWC and what it stood for in Lore, and I will strongly oppose any usage of it in relation to any of my work.<br />
<br />
•The Dark Zenith Ultimate Golem (Norse Dragon of Ragnarok starting with J thing) gets confused between staying in its cluster and rampaging after getting aggroed by an AI reconquest wave targeting the Dark Zenith planets. It loops back and forth between the wormholes of the AI planet and the connected DZ planet. - ArnaudB (https://discord.com/channels/240637654717300736/698572497171251200/737653691472937030)<br />
<br />
* ZA Civil War with a DZ planet in the middle. Blue ZA has 843 strength on an AI planet (Fafnir), DZ planet has 237 strength on its planet (Atalia). Despite the Blue ZA having much greater strength than the DZ, it waited until it had 1.1k strength, then sent 5-8 golems in with the rest still camped out on the AI planet (Fafnir). Didn't watch until the end. - Ovalcircle https://discordapp.com/channels/240637654717300736/698572497171251200/748706992788471848<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
** Thumper (Vanguard variant)<br />
*** Focuses all it's damage into a single high power shot instead of using a shotgun like weapon.<br />
** Resistor (Vanguard variant)<br />
*** Is basically the same as the regular vanguard, but it's stats are modified so it doesn't have as many weaknesses (for example, armor changed to 85, albedo to .5)<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
<br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40158AI War 2:Zenith Onslaught Patch Notes2020-09-05T00:34:42Z<p>Democracy? Democracy!: /* Suggestions, ideas and mechanics for Chris */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a medium impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust).<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships. CHRIS TODO: art and unit design<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to be able to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= TODOs and patch notes =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Bug Reports/Feedback ==<br />
<br />
Please put bug reports here!<br />
<br />
•Add a win condition involving Dark Zenith, so players could ally with the AI (or have allied + enemy AI) and still get a victory. (Win if you succesfully lock down the Dark Zenith planets with a hack for some time?) <=== Badger says "I do have thoughts along this lines, but not likely to DLC2. I think this expansion is already very large"<br />
<br />
**Perhaps an Exodian Blade retcon could be fitting here? (DLC 3) Introduce the Exodian Blade as the arch-enemy of the DZ that arrives to the player galaxy broken and scattered throughout the galaxy. Find the pieces and escort it to fight Jormangdur, etc. (noted by Zeus)<br />
<br />
** Badger hates the Exodian Blade in AIWC and what it stood for in Lore, and I will strongly oppose any usage of it in relation to any of my work.<br />
<br />
•The Dark Zenith Ultimate Golem (Norse Dragon of Ragnarok starting with J thing) gets confused between staying in its cluster and rampaging after getting aggroed by an AI reconquest wave targeting the Dark Zenith planets. It loops back and forth between the wormholes of the AI planet and the connected DZ planet. - ArnaudB (https://discord.com/channels/240637654717300736/698572497171251200/737653691472937030)<br />
<br />
* ZA Civil War with a DZ planet in the middle. Blue ZA has 843 strength on an AI planet (Fafnir), DZ planet has 237 strength on its planet (Atalia). Despite the Blue ZA having much greater strength than the DZ, it waited until it had 1.1k strength, then sent 5-8 golems in with the rest still camped out on the AI planet (Fafnir). Didn't watch until the end. - Ovalcircle https://discordapp.com/channels/240637654717300736/698572497171251200/748706992788471848<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
** Shrike (V-wing variant)<br />
*** Faster and hit harder than the base V-wing, but are less durable<br />
** Albatross (V-wing variant)<br />
*** Higher hp and more damage, but doesn't engine stun and costs more. Slightly reduced cap as well.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* New Mechanics<br />
** Reflector: reflects damage done to victim back at damage source (see Zenith Mirror suggestion above).<br />
** Siege Engine: This unit ignores radar dampening/fortified properties, allowing it to deal full damage to a target with radar dampening/fortified regardless of range.<br />
** Attaching Tractor: Instead of grabbing and holding enemy units in place, these units attach themselves to an enemy unit with their own tractor. Credit to zeusalmighty428 for the idea.<br />
** Cleanup Squad: Deals extra damage to drones and zombies.<br />
** Reinforced Armor: Reduces damage by a flat amount, but all attacks will deal at least 1 damage.<br />
** Regenerator: Unit regenerates a %/flat number of hull points per second out of combat. <br />
** Explosive Vengeance: Unit releases an AOE damage attack on death. Doesn't work if unit kills itself via self damage.<br />
** Scapegoat/Shield Bearer: Unit redirects damage from allies to itself. Can be a configurable % of damage<br />
** Shrouder: Provides cloaking for nearby units. This unit itself can never be cloaked. Inspired by what cloaked gps were supposed to be.<br />
<br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
** EntityThatDied gives you the one finger salute.<br />
** EntityThatDied will now commence self destruct protocols.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=40157AI War 2:Zenith Onslaught Patch Notes2020-09-04T23:43:04Z<p>Democracy? Democracy!: /* DLC 3 Ideas */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Feel free to change anything to your taste. Also check out the section at the bottom of this wiki page for some ideas and mechanics you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map Types /Galaxy Design Options ===<br />
<br />
* Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
* Compass Map Type: Compass starts with a Cluster at the center of the galaxy, then a series of planets in rings around the central cluster that can only be accessed via that central cluster. Has a number of tunables.<br />
<br />
* Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play. Funny story: I accidentally made all the planets move by mistake, but people thought it was cool so it was made a feature.<br />
<br />
* AI Layouts: You can now govern how the game chooses which planets to give to each AI at the beginning of the game. <br />
** Small Clusters: The previous (and still default) setting, aka "Allocate a small region of planets for each AI around its homeworld, then do the rest randomly". <br />
** Large Clusters: The AI to allocates very large regions around their homeworlds, then the rest randomly<br />
** Random Clusters: The AI uses a randomly chosen region size (between Small and Large), then the rest randomly<br />
** Random: all planets are assigned randomly. I believe this was the default in AIWC?<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types - do not use until chris does unit design<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities and Game Features ===<br />
<br />
* Random Factions : You can now request "Random Factions", and can choose its allegiance and impact.<br />
** For example, a player could request a moderate/hostile faction, a brutal/allied faction and a completely random faction<br />
** Implementation notes: you select an impact (Low/Moderate/High/Brutal). If you pick a medium impact then you might get a high-intensity but weak faction (for example, an intensity 8 HRF) or a low intensity but strong faction (maybe a 1 intensity nanocaust).<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
=== Some unique interactions with previous factions ===<br />
<br />
* Dyson Spheres can be set to spawn on a Nomad Planet if you have Nomad Planets enabled<br />
<br />
* Dyson Spheres can be killed by Zenith Miners<br />
<br />
* The Scourge can build Zenith-inspired ships. CHRIS TODO: art and unit design<br />
<br />
* The Dark Zenith and Zenith Architrave can get Spire Debris to give them new ships<br />
<br />
=== Backported Features ===<br />
<br />
* The AI can send Exogalactic War Units against minor factions that get too powerful<br />
<br />
* Upgrade Fireteams to be able to request some fireteams play defense more effectively<br />
<br />
* Add support for minor factions to have structures which can be hacked like an ARS, granting a player new ship lines.<br />
** This can be added by modders to their own factions with only XML; no C# required!<br />
** Base game factions using this: Dyson Sphere, Dark Spire, Human Resistance Fighters<br />
** DLC2 factions using this: Zenith Architrave, Dark Zenith<br />
<br />
= TODOs and patch notes =<br />
<br />
* Let the Scourge Beacon be hacked for either A. the scourge or B. a ship line<br />
<br />
* if you make the ZA mad, make it really mad<br />
<br />
<br />
== 2.133 ==<br />
<br />
* The DZ can definitely build static defenses now<br />
<br />
* DZ won't try to include Dysons in their territorial sphere<br />
<br />
* The Dark Zenith now will keep units to play defense. Mechanism extends to other factions.<br />
<br />
* Some tidying, colour and icon changes for the Dark Zenith to make it easier for me to see what's going on.<br />
<br />
* DZ constructors now move more slowly, and their buildings warp in a bit more slowly, giving more options for sniping them<br />
<br />
* DZ Harvesters are now less tanky and more costly to build<br />
** The intent is to make "Kill a bunch of harvesters in a raid" a useful way of hurting them<br />
<br />
* ZA will expand a bit quicker<br />
<br />
== 2.132 ==<br />
<br />
* FS debris no longer reveals random factions (that haven't been scouted yet) by telling players in tooltip what the minor factions are.<br />
** Thanks to Zeus for the bug report<br />
<br />
* Don't let the ZA take a Dyson planet as its Territory<br />
<br />
* ZA Civil Wars are now rebalanced to be much less OP<br />
** Thanks to some feedback from ArnaudB<br />
<br />
=== Dark Zenith Changes ===<br />
* The DZ now will conquer a Territorial Sphere around their planets before expanding further, and get bonus income while doing so. This is intended to make sure they establish a real foothold in the galaxy. <br />
** Territorial Spheres won't include player planets, ZA planets or planets close to AI homeworlds, to prevent the mechanism from being an annoyance<br />
** Once the DZ has conquered its Sphere for the first time, the Sphere behaviour is permanently disabled<br />
<br />
* Economic Intelligence improvements:<br />
** Transports now give more resources than necessary to build something to facilitate the next build; this is a big net efficiency increase.<br />
** The DZ is less likely to put a lot of resources into upgrades early, allowing them to focus on their invasion. This lets them pack a bigger punch when they first arrive, since that could feel lackluster<br />
** Improve the decision making available to Infrastructure Epistyles<br />
<br />
* Change the Transport icon/image to something more evocative<br />
<br />
== 2.129 ==<br />
<br />
* The DZ will now emphatically try to hold a few extra planets around its territory<br />
<br />
* The ZA will now spawn its units a bit further from their construction centers; the visuals look better this way<br />
<br />
== 2.127 ==<br />
<br />
* ZA now indicates both Intensity and Territory in the esc menu<br />
<br />
* Random factions can now be Dark Alliance<br />
<br />
* ZA defenses now warp in at the right level<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* Improve the tooltip for ZA expansion for player-allied ZAs<br />
** Thanks to Ovalcircle for reporting<br />
<br />
* ZA planet hovertext now updates the colour if the player changes the ZA's colour<br />
<br />
* Hopefully fix a bug with ZA income<br />
** Thanks to Starkelp for reporting<br />
<br />
* The ZA wants to expand a bit faster. Give the ZA a bit more income<br />
<br />
* Rework what happens if a ZA is intending to launch pioneers but is attacked or enters the civil war (ie something that would block pioneers). <br />
** We track the number of times the ZA was interrupted as it was preparing to send Pioneers, and use that number to see how much to reduce the pioneer spawn time. The old 'Pioneers will spawn as soon as the ZA has retaken all its planets' behaviour is no longer used.<br />
** Prompted by a bug report by Ovalcircle <br />
<br />
* Make Pioneer spawning time scale based on intensity (this means pioneers will spawn more often)<br />
** The hopeful result of a number of these changes is to allow the ZA to expand more, and then hopefully to have more civil wars<br />
<br />
== 2.126 ==<br />
<br />
* Scourge can build Zenith inspired units. Currently these are just copies of Burlust Warriors.<br />
<br />
* The Zenith Architrave can be quiesced by hacking the Portal.<br />
<br />
* The player can now request a player allied Zenith Architrave<br />
** A Player Allied ZA will not generate AIP when taking its Territory. It will increase AIP when it captures subsequent planets<br />
** The game can now also roll a Friendly Zenith Architrave when asking for friendly factions<br />
<br />
* Hovering a planet in the Galaxy Map now tells you whether its in a ZA's Territory<br />
<br />
* Change the way some factions can be selected as Randoms<br />
** Dark Spire: Hard => Brutal<br />
** Scourge: Brutal => Hard<br />
** Dyson: Easier => Moderate<br />
<br />
* ZA: Tweak the Pioneer rules for Civil Wars. <br />
** If I am the only ZA big enough to trigger a Civil War, I'm allowed to build Pioneers and keep expanding.<br />
** If any other ZA is large enough to trigger a Civil War, I can't built Pioneers until I've crushed that other ZA<br />
<br />
* Fix an exception with the DZ if you killed all the Metal Terminii on a planet<br />
<br />
* Improve the hovertext for ZA civil war notifications<br />
<br />
* Fix a bug where ZAs in civil war could sometimes go attack random unrelated factions<br />
<br />
* Significant nerfs to the ZA's power during the civil war on lower difficulties.<br />
<br />
== Beta 2.124 ==<br />
<br />
* Add a new Galaxy Setting for "AI Layout", that allows the player to control how an AI's planets are laid out. Options are Random/Small/Large clusters, and Random.<br />
<br />
* Add a new 'Galaxy Design' section of the Galaxy Settings. Used for AI Layout and Nomadic Galaxy<br />
<br />
* Minor buffs to Praetor AI Type<br />
<br />
== 2.119 ==<br />
<br />
* The Geneticist's Subjugator has had its damage nerfed but health increased<br />
<br />
* A Zenith Architrave Portal can now be hacked for a Truce or for a unit line. You can only choose one of these hacks, so be careful!<br />
<br />
* Give the Geneticist and Spire Hammer some extra guard posts.<br />
** Balance feedback is appreciated<br />
<br />
* Set up the Ragnarok and Gladiator AI Types to use the same mechanism for adding new Guard Posts to be added later<br />
<br />
* The Dark Zenith now come with 2 Dark Zenith Libraries, powerful structures that can be hacked for new ship types.<br />
<br />
* The Compass map type now must have at least 2 rings. 1 ring just looks like a poorly done Encapsulated map.<br />
<br />
* ZA Golems are allowed to spawn during a Civil War, or when the Overall Power Level of hostile factions is >= 4. They're intended to be very powerful "Ultimate Weapon" sorta things.<br />
<br />
== 2.118 ==<br />
<br />
* The ZA and DZ now have some bonus scaling for the fallen spire (or in general, high Power Level games)<br />
<br />
* The ZA now build fewer golems<br />
<br />
== 2.117 ==<br />
<br />
* Fix a bug with Random Factions that was causing some exceptions<br />
** Thanks for Arnaud for the report<br />
<br />
== 2.116 ==<br />
<br />
* The ZA will now spawn Golems<br />
<br />
* The ZA is better at retreating its forces after a civil war and doing less damage<br />
<br />
== 2.115 ==<br />
<br />
* Fix a problem with ZA pioneers<br />
** Thanks to oval for reporting<br />
<br />
* Chris fixed a problem where the DZ planets weren't spawning correctly<br />
** Thanks Chris! Reported by Oval<br />
<br />
== 2.114 ==<br />
<br />
* Both Praetor AI types have a 50% chance of generating a second dragon<br />
<br />
* The Praetor AI types now invest even more resources in their Praetorian Guards<br />
** Thanks to Vinco for the feedback<br />
<br />
* Spire Hammer Units have been made much tankier<br />
** Thanks to Arnaud for the report<br />
<br />
* Some improvements to Random Factions; fix a bug where they could keep Allegiances between encounters. Improve the picking of minor faction teams<br />
<br />
* Add a message to the player when the ZA has resumed a truce with you. Untested<br />
** Prompted by a discussion with Vinco<br />
<br />
* Zenith Miners are now limited to one per galaxy<br />
** Mentioned by Starkelp<br />
<br />
* ZA has some minor buffs<br />
<br />
=== Geneticist Nerfs ===<br />
<br />
* The AI now gets more 'regular AI units' and fewer scourge units. Make the scourge units more expensive and nerf their damage<br />
* Many of the racial warriors are now zombifiable<br />
** Thanks to Arnaud for the report, and further discussion with zeusalmighty<br />
<br />
== 2.113 ==<br />
<br />
* Fix some exceptions with the Zenith Miners<br />
** Thanks to zeus for reporting<br />
<br />
* Fix a bug where the Spire Hammer ai type was getting the wrong Spire Unit<br />
** Thanks to Arnaud for reporting? I think?<br />
<br />
* You can now have Random Factions<br />
<br />
== 2.112 ==<br />
<br />
* Nomad planets now move faster <br />
<br />
== 2.111 ==<br />
<br />
* The compass map type defaults to using two rings<br />
** Thanks to Puppet Master for reporting<br />
<br />
* The ZA now says how many planets it needs to trigger a civil war in the threat menu tooltip. <br />
** Pupper Master requested<br />
<br />
* Turning on nomads with debug mode and nomad galaxy now causes all the planets to move quickly, allowing the gameplay slowdowns to be triggered very quickly<br />
<br />
* Once in a civil war, the ZAs will send their Pioneers home and allow them to despawn<br />
** This prevents the ZA's from expanding during a civil war. This is untested.<br />
** Thanks to Puppet Master for reporting<br />
*** The other choice is to allow ZAs to build only on neutral planets during a civil war? I'm open to this if people would prefer it.<br />
<br />
* Minor buffs to DZ invasion at higher difficulties<br />
<br />
== 2.110 ==<br />
<br />
* Add the Compass map type<br />
** Thanks to Democracy for suggesting<br />
<br />
* Spire hybrids are now less common for the geneticist. Some nerfs to the Spire Hybrid weapons for the geneticist, and general range nerfs for the geneticist<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add some additional checks to try to prevent the nomad galaxy from splitting<br />
** Thanks to Puffin for reporting<br />
<br />
* Fix a bug where wormholes to destroyed planets would still exist after a Miner ate them<br />
** Thanks to zeusalmighty for reporting<br />
<br />
* Some minor improvements to the ZM code and hovertext<br />
<br />
* Nomad planets can move a bit more quickly. Fewer nomads in a galaxy means they will move a bit faster (the logic here being "I'd like the Nomads to feel like they're doing something, and if you only have one nomad then it needs to move faster in the hopes it will be impactful)<br />
** Thanks to Puppet Master for a bug report<br />
<br />
=== Zenith Architrave ===<br />
<br />
* Fix some bugs with the way ZA allegiances were working in the civil war.<br />
<br />
* Minor improvements to the Notification hovertext for civil war and pioneers/expansion<br />
<br />
* After a civil war:<br />
** the ZA's units will all attrition very quickly for a while<br />
** The ZA will also stay peaceful to the AI for a while while the units retreat<br />
<br />
* Thanks to Puppet Master for some saves that brought all of these problems to my attention<br />
<br />
=== Dark Zenith ===<br />
<br />
* Dark Zenith now gets two wormholes into the galaxy instead of just one<br />
<br />
* The DZ is required to capture a few planets around their homeworlds before going on a domination spree. This will make it harder for counterattacks to reach their home planets and guarantee them at least some sort of defensive perimeter<br />
<br />
* DZ spawns some defensive structures when they warp in appear<br />
<br />
* The DZ now attack more quickly after spawning<br />
<br />
* Fix a bug where the DZ wouldn't get around to attacking for a few minutes after each time you loaded a save game<br />
<br />
* Add some variety to the DZ unit abilities and icons. These are still all slated to be replaced by Chris later, but I'd like testing to be a less frustrating experience<br />
<br />
* The DZ would sometimes leave units in 'non-attacker' mode and I don't know why, so the LRP thread will check for such units and make them attack.<br />
<br />
* Fix a bug where DZ fireteams would sometimes just sit there and never attack<br />
<br />
* The DZ now gets bonus strength for their initial invasion based on the AI difficulty. This should let the DZ adjust for very powerful AIs without being OP against lower difficulty AIs<br />
** Note: this is a major difficulty increase, since I'm not sure the DZ has been scary enough. If this is too much I now have more dials to tune the strength<br />
<br />
* Thanks to ArnaudB for some feedback that started me down this very helpful rabbit hole<br />
<br />
== 2.107 ==<br />
<br />
=== Zenith Miner === <br />
<br />
* Buff the Zenith Miner units; this is temporary since Chris will redo the units, but this should make them easier to test<br />
<br />
* Clarify that you can fight the Zenith Miners when they arrive in the Notification tooltip and the journal entry. <br />
* Make ZO specific hacks cheaper, by and large.<br />
<br />
* Killing a Zenith Miner now grants science and hacking points (seems only fitting given how big and powerful they are).<br />
** Plus since hacking the Probes will drain your resources, its only reasonable that the miners should refill your coffers<br />
*** Thanks to Puppet Master for the feedback<br />
<br />
* Add some journal entries for the Zenith Miners when they are attacking a Dyson Sphere<br />
<br />
* Additional tooltip tweaks for specific minor faction interactions<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The AI is not allowed to reconquer planets from the ZA during the civil war<br />
** Thanks to Arnaud for reporting<br />
<br />
* Add text to the faction description for the ZA pointing out that it can make Data Centers or other critical targets harder to get to<br />
** Thanks to Arnaud for suggesting<br />
<br />
* The ZA now defaults to 4 planet Territories<br />
** Thanks to Puppet Master for suggesting<br />
<br />
* Add some journal entries for when the Zenith Architraves break the truce, and add some text to the Notifications saying 'The ZA is violating the truce'<br />
** Thanks for Arnaud for reminding me that this mechanic can be confusing<br />
<br />
* The ZA is no longer allowed to be friendly to the player or the AI; it messes with some other mechanics.<br />
** Note that you can have a truce with the ZA anyway, so removing the "friendly to players" option isn't a big deal<br />
<br />
=== Nomad Planets ===<br />
<br />
* Incremental nerfs to the Nomad Planet hack; the Exostrikes are a bit smaller and a bit less frequent. How does it feel now?<br />
** Thanks to Arnaud for reporting<br />
<br />
* Clarify the "Crash Nomad Planet" hack description and text<br />
** Thanks to Arnaud for reporting<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug with DZ serialization. Note this probably breaks all saves with the DZ in it.<br />
<br />
=== Misc ===<br />
* Allow for Spire/Geneticist ship types to show up as unique Exogalactic Strikeforce leaders<br />
* Rejigger Spire Hammer units to stay low health but be much cheaper for the AI to buy<br />
** Thanks to Arnaud for reporting<br />
<br />
* The Dyson Sphere now has a "seed me on a nomad if possible" setting<br />
** Thanks to a number of people for suggesting, most recently Puppet Master<br />
<br />
== 2.106 ==<br />
<br />
* When a Zenith Miner attacks a Dyson planet, instead of eating the planet it will kill the Dyson Sphere gate. <br />
** Zenith Miners really like eating dyson spheres; they have an increased chance for landing on dyson planets<br />
** Contains a Chris TODO for "Here's a spot in the Sim Stage3 code for when the dyson planet visuals should change"<br />
** Totally untested. <br />
<br />
* Slightly improve the hovertext for ZM notifications<br />
<br />
== 2.102 ==<br />
<br />
* The Dark Zenith now makes a good faith effort to spawn far from any ZA's territory<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Nerf the Geneticist's scourge subjugators; a bit less damage and tankiness, much less lifesteal<br />
** Thanks to zeusalmighty for suggesting<br />
<br />
* Fix a bug when serializing dark zenith data<br />
** thanks to zeusalmighty for reporting<br />
<br />
* Dark Zenith ships should no longer be counted as Threat. This only applies to new games; existing games will still have high threat numbers.<br />
** Thanks to Ovalcircle for reporting<br />
<br />
== 2.099 ==<br />
<br />
* Change the way Nomad Planets spawn, to make sure they are more evenly distributed through the galaxy and move more cleanly. This in particular is an improvement for the Squares map type.<br />
** Thanks to zeusalmighty for the bug report.<br />
<br />
* Fix a bug where we weren't updating some Pathing data on the Planet objects when the DZ planets spawn<br />
** Thanks to StarKelp for the bug report.<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
** Thanks to zeusalmighty for suggesting.<br />
<br />
* Fix a bug where Zenith Miners were missing a tag<br />
** Thanks to zeusalmighty for reporting<br />
<br />
==== Journals ====<br />
<br />
* Add a Journal Entry for when the Dark Zenith spawn<br />
* Add two Journal Entries for the Zenith Miners<br />
** One for when the first Probe spawns, one for when the first Miner spawns.<br />
<br />
* Add Zenith Architrave journal entries<br />
** An entry for when we first find the ZA, explaining to be careful about attacking their territory<br />
** An entry for when we've explored all the ZA planets, explaining we might be able to make a truce with them by hacking their Portal.<br />
** An entry for when Pioneers spawn<br />
** An entry for the civil war<br />
** An entry for when a truce is declared (after hacking)<br />
*** If people could make sure these are all being displayed, and give feedback on the text (with a specific focus on mechanics that should be explained), that would be great.<br />
<br />
==== Dark Zenith Jormugandr ====<br />
<br />
* Add the DZ Jormugandr, to give them a cool new way of defending themselves against attack. The Jormugandr is the most powerful DZ unit, but it can only move fully into our galaxy when one of the initial DZ homeworlds (ie the new planets created when the DZ attack the galaxy) is attacked.<br />
** When there aren't any any attacks going on, the Jormugandr just wander around the homeworlds.<br />
** Once a homeworld is attacked, the Jormugandr are free to demolish any attackers and then start rampaging through the galaxy for a few minutes, then it must retreat to the DZ homeworlds again.<br />
** Each time the DZ homeworlds are attacked, the Jormugandr are unleashed for longer.<br />
** There is 1 Jormugandr spawned for difficulties 1-8, 2 on difficulty 9, 3 on difficulty 10.<br />
*** From a discussion with StarKelp and zeusalmighty.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Bug Reports/Feedback ==<br />
<br />
Please put bug reports here!<br />
<br />
•Add a win condition involving Dark Zenith, so players could ally with the AI (or have allied + enemy AI) and still get a victory. (Win if you succesfully lock down the Dark Zenith planets with a hack for some time?) <=== Badger says "I do have thoughts along this lines, but not likely to DLC2. I think this expansion is already very large"<br />
<br />
**Perhaps an Exodian Blade retcon could be fitting here? (DLC 3) Introduce the Exodian Blade as the arch-enemy of the DZ that arrives to the player galaxy broken and scattered throughout the galaxy. Find the pieces and escort it to fight Jormangdur, etc. (noted by Zeus)<br />
<br />
** Badger hates the Exodian Blade in AIWC and what it stood for in Lore, and I will strongly oppose any usage of it in relation to any of my work.<br />
<br />
•The Dark Zenith Ultimate Golem (Norse Dragon of Ragnarok starting with J thing) gets confused between staying in its cluster and rampaging after getting aggroed by an AI reconquest wave targeting the Dark Zenith planets. It loops back and forth between the wormholes of the AI planet and the connected DZ planet. - ArnaudB (https://discord.com/channels/240637654717300736/698572497171251200/737653691472937030)<br />
<br />
* ZA Civil War with a DZ planet in the middle. Blue ZA has 843 strength on an AI planet (Fafnir), DZ planet has 237 strength on its planet (Atalia). Despite the Blue ZA having much greater strength than the DZ, it waited until it had 1.1k strength, then sent 5-8 golems in with the rest still camped out on the AI planet (Fafnir). Didn't watch until the end. - Ovalcircle https://discordapp.com/channels/240637654717300736/698572497171251200/748706992788471848<br />
<br />
== Suggestions, ideas and mechanics for Chris ==<br />
<br />
<br />
• An UI rework might be needed to deal with the various notifications. It becomes really hard to keep track of what's going on with the growing number of factions. Maybe split the notifications threatening the players and those "informing" the player of events? (suggested by Arnaud, echoed by Puppet Master)<br />
** Badger think something like this might be necessary, given the sheer number of possible Notifications. Players keep requesting new Notifications (since that's how people keep track of things) and that number is getting ever-larger. We discussed potentially having several rows of Notifications, or Notifications being different sizes to connote importance<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure that you can move (very slowly), and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
*** Zenith Needle<br />
**** Melee range, disables bubble shields on contact, converting them into personal shields.<br />
** Strikecraft Class<br />
*** Zenith Bracketeer<br />
**** All units that are on the same planet act as through they have shared Hull and Shield pools, which damage equally divided among them.<br />
** Mosquito (Exsanguinator)<br />
***Melee swarmer ship (for players/AI) that has "reverse" death grip-harmonic tractor beams. The idea is that it only can tractor super units but the super unit can move as normal, the mosquitoes are stuck to it. The mosquitos get the harmonic and death grip bonus so they do deal a lot more damage when they swarm the same unit.<br />
**Ninja (Melee Frigate)<br />
***Cloaked frigate with NO base weapons. However, launches special torpedos -- "corrosive shurikens" that deal high base damage to a single target (preferably guardian+) and minor AOE acid damage to nearby units. Shurikens are IMMUNE to gravity effects and are high speed.<br />
**Plasma Frigate (Technologist -- basegame)<br />
***Technologist has only one frigate and that is DLC 1's Torpedo frigate. A "Plasma Frigate" works within the basegame framework. This frigate could be a variant of the siege frigate (base stats) but it has a x5 multiplier against ALL shields and a x2 multiplier against bubbleshields. This unit would devastate bubbleshields and is otherwise a solid generalist that specializes in draining the shields of your enemies. This makes it contrast nicely with fusion weapons<br />
**Volatile Tesla Frigate (Splash -- basegame)<br />
*** As with the Plasma Frigate, this concept is to fill a void in the Splash tech by having a new basegame frigate that compensates for the splash tech's weakness against non-strikecraft. The Tesla Frigate could be a variant of the assault frigate (base stats) but it has the tesla weapon that targets up to 50 units with the eyebot bonus (multiplier to damage based on targets energy usage). Has a long weapon cooldown (15 seconds). Additionally, when this unit dies, it does AOE damage 3x its base damage. This unit would then be solid against super units given their high energy usage and makes this unit do solid damage even if it dies prematurely. <br />
**Assassin (Ambush Frigate -- basegame)<br />
***Like the Plasma frigate and volatile tesla frigate, there is a lack of a base game Ambush Frigate, and ambush is generally among the weaker techs at the moment. The Assassin has the base stats of the Apparation (including cloaking and the defensive bonus) but revised weapons. It has the "burst fire" mechanic (https://bugtracker.arcengames.com/view.php?id=22368) to allow it to unleash a fast salvo but otherwise has a long weapon cooldown. It does high single target base damage and has the eyebot damage bonus against units with high energy and/or bonus damage against high mass units <br />
** Experimental 'Wing' Mechanic<br />
*** Carrier Frigates that fire off sub units like a Tesla Torpedo, which decay over time, that come with their own sub units.<br />
**** Zenith Forcefield Torpedo Frigate<br />
***** Shoots off slow moving Torpedoes that deploy up to 3 Degenerating Forcefield Generators, which lose 2% shield per second.<br />
**** Zenith Spiderweb Frigate<br />
***** Shoots off Minelayer Drones which have a weak melee carving weapon, and deploy Paralyzing Mines while enroute.<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* As a mechanic "Significantly faster when on a planet owned by this faction (or a friendly faction), much slower off the planet". The intent is to have a ship that makes a good defender, but a poor attacker. Would be good for some Architrave ships (and I'd like it for the Jormugandr as well, since I'd like it if the Jormugandr leaving the DZ's territory would be a bit weaker).<br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.<br />
<br />
* Zenith Miners need some fun mechanics; possibly including damage reduction for long range enemies? Maybe some powerful translocation?<br />
<br />
* Zenith Reprocessors? (Strategic Sage) I know that salvage doesn't exist anymore but I'm thinking some version of the memorably evil feedback loop they could cause - Reprisal, Massive Reprocessor incoming, kill enough turrets/ships to make an even bigger Reprisal, soon human player loses - thing might be fun. Perhaps damage they cause could add to wave budget, building new NastyPicks budget, warden/hunter/CPA budget, whatever. Classic ones were cloaked and tanky, didn't do a huge amount of damage individually but enough of them around long enough and ... yeah. Ruined your day good.<br />
<br />
==DLC 3 Ideas==<br />
* A faction featuring the "Predator" mechanic (noted by Zeus)<br />
** units with the predator mechanic track their kills (or other comparable benchmark, such as shots fired) after the units kills X units, it evolves. Evolved units are returned to full health and a multiplier to their raw stats, including health and damage. Units can evolve up multiple times (eg., juvenile, adolescent, mature ...)<br />
* Consider looking into environmental effects. Something like a nebula that reduce effective range of ships or some such. Mantis report here https://bugtracker.arcengames.com/view.php?id=23502</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=AI_War_2:Zenith_Onslaught_Patch_Notes&diff=39440AI War 2:Zenith Onslaught Patch Notes2020-07-11T20:25:16Z<p>Democracy? Democracy!: /* Bug Reports/Feedback/Ideas */</p>
<hr />
<div>This is for alpha testing for the Zenith Onslaught. I'm using this to keep patch notes.<br />
<br />
= Feature List/Flavour =<br />
<br />
''Chris, this section is intended as fodder for you for marketing and other writeups. Also check out the section at the bottom for some ideas you might find useful''<br />
<br />
It was thought that the Zenith were long-dead. But they are far from gone; they have come back with a vengeance. A dreadful Zenith Onslaught. It started one day when a strange Zenith probe turned up on your sensors. After checking out a particularly mineral-rich planet, the probe was followed by a giant Zenith Miner who proceeded to devour the planet. And now it seems like everywhere you look there are new Zenith menaces come to make your life harder...<br />
<br />
The Zenith Onslaught is the second expansion for AI War 2. It's an expansion focused on making the galaxy feel rich and complex and changeable in new ways. It primarily provides Zenith-based factions that have their own agendas independent of humanity, unlike The Spire Rises, where all the factions cared about the player.<br />
<br />
=== New Factions ===<br />
<br />
[[AI War 2: Dark Zenith]]<br />
<br />
[[AI War 2: Zenith Architrave]]<br />
<br />
[[AI War 2: Zenith Miners]]<br />
<br />
[[AI War 2: Nomad Planets]]<br />
<br />
=== New Map/Galaxy Types ===<br />
<br />
*Squares Map Type: Squares is like the Clusters type, but each cluster is aligned on a grid. There are lots of different tunables so you can get a big range of galaxies.<br />
<br />
*Nomad Galaxy: All planets in the galaxy will move as if they are nomad planets. Leads to extremely chaotic and unique play.<br />
<br />
=== New AI Types ===<br />
<br />
* Geneticist AI Type: The AI gets Scourge units in addition to its own unit types<br />
<br />
* Spire Hammer AI Type: The AI gets Spire units in addition to its own unit types<br />
<br />
* Ragnarok AI Type: The AI gets Dark Alliance units in addition to its own unit types<br />
<br />
* Gladiator AI Type: The AI gets Zenith Architrave units in addition to its own unit types<br />
<br />
* Vengeful AI Type: Killing this AI's structures will provoke small exogalactic strikeforces against you<br />
<br />
* Praetor AI Type: This AI has an extra-strong praetorian guard which is allowed to roam further from its Homeworld.<br />
** Has 2 implementations, Medium (praetorian can strike 4 planets from homeworld, up from 3) and Hard (praetorian can strike 6 planets from the homeworld).<br />
<br />
=== New AI Abilities/Units ===<br />
<br />
* Wormhole Borers : The AI now has the ability to create wormholes to allow its ships to bypass your defenses. They will spawn "Wormhole Borers", which will create a new wormhole. These are powerful structures, but you can destroy them to prevent the new wormhole from being created. Borers are gated behind an AIP threshold, and can be disabled in the game lobby as well.<br />
<br />
= TODOs and patch notes =<br />
<br />
* Improve the ZA civil war notifier for clarity in terms of what's going on.<br />
<br />
== 2.096 ==<br />
<br />
* Add the Gladiator AI Type. This AI gets Zenith Architrave units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
* Add the Ragnarok AI Type. This AI gets Dark Alliance units along with their regular units.<br />
** Currently doesn't do anything; waiting for Chris' unit development<br />
<br />
==== Nomad Planets ====<br />
<br />
* There are now 3 types of Nomad Nexus; the 'off' one, the 'can be crashed into ai homeworld' one, and the 'en route to ai homeworld one. The Off one is immune to damage. The 'Can be Crashed' on can be attacked by the player. The 'En Route' one can be attacked by anyone<br />
** This should allow players to safely hack the Disabled Nomad Nexus, but also allow minor factions to snipe a nomad nexus that's crashing.<br />
<br />
* Allow wormhole borers to bore from disabled nomads<br />
** Thanks to zeus for reminding me<br />
<br />
* Nomad planets now take between 5 and 13 minutes (give or take a bit) to crash into an AI homeworld, depending on the nomad's distance from the AI homeworld. When you hover over the Hack button, you will get a rough time estimate.<br />
** The first minute features weaker exos, so the player can use this hack to move an unwanted nomad out of the way and then disable it.<br />
** Thanks to zeus for suggesting<br />
<br />
==== Dark Zenith (Nota Bene: This patch breaks all games with the DZ) ====<br />
<br />
* Fix a bug where the DZ wasn't correctly loading all its data. The new error checking will cause all previous DZ save games to break (technically, the DZ didn't really work at all after a reload anyway) <br />
** Noticed by zeusalmighty<br />
<br />
== Beta 2.093 ==<br />
<br />
* Major nerfs to the Geneticist AI type; I've rebalanced all the scourge units that the AI owns<br />
<br />
== Beta 2.088 ==<br />
<br />
* Wormhole Borers can't interact with Nomad Planets (no point; the wormholes would just disappear)<br />
** Practically this means the nomad galaxy won't feature Borers<br />
** Thanks to zeus for spotting this interaction<br />
<br />
== Beta 2.087 ==<br />
<br />
* Make the ZA civil wars more endable by giving other ZA factions ways to send steadily increasing bonus strikes once the civil war goes on long enough<br />
<br />
* Geneticist Scourge generate Hostile To All zombies<br />
<br />
== Beta 2.085 ==<br />
<br />
* Add the Praetor AI type, whose Praetorian Guard is extra strong and has extra range. Comes in "Medium" and "Strong" flavours<br />
** Thanks to ynof for the suggestion<br />
<br />
* Add a new Map Type for the ZO, "Squares"<br />
** It is like clusters, but all the clusters are aligned on a grid.<br />
** There are lots of settings so you can get some extremely varied galaxies<br />
<br />
* Some nerfs to the Spire Hammer AI Type<br />
<br />
* ZA strength drops off faster during civil war<br />
<br />
=== Dark Zenith ===<br />
<br />
* Rework how the DZ chooses where to spawn planets, to make them less likely to spawn in weird places<br />
<br />
* Add some new unit types to the DZ<br />
<br />
* Give the DZ some additional strength at the beginning of the game<br />
<br />
== Beta 2.082 ==<br />
<br />
* The ZA will never ally with the Dark Spire or Dark Zenith during a civil war<br />
** Thanks to Zeus for reporting<br />
<br />
* The ZA now has different income for its defensive structures, so it should be easier to whittle them down at all times<br />
** Thanks to Zeus for reporting<br />
<br />
* Fix the Spire Hammer AI Type's description<br />
<br />
== Beta 2.077 ==<br />
<br />
* Add the Spire Hammer AI type. It's targeted at the "Hard" difficulty level. I messed with the unit balance for the AI copies of the units, so let me know about the balance.<br />
<br />
* Mapgen code now tries to seed multiple copies of the same faction very far apart, with a 'retry with less strict requirements if it fails' mechanism.<br />
** Thanks to Oval for reporting that my previous mechanism still wasn't good enough<br />
<br />
* More nerfs to geneticist. Make scourge units a bit rarer in general, in particular Evuck Warriors<br />
** Thanks to zeus, demo and oval<br />
<br />
== Beta 2.075 ==<br />
<br />
* Nerfs to Geneticist<br />
** Thanks to zeusalmighty for the feedback<br />
<br />
* DZ can now upgrade itself to be able to build Terminii or Epistyles<br />
<br />
* Nerfs to the DZ permanent bonus income<br />
<br />
* Give some DZ and ZA structures enemy-attrition<br />
<br />
* The 'Vengeful' AI type now actually works<br />
** Every time you or a player-allied faction kill an AI structure that is A. a guardpost, B. Changes AIP, C. is a NormalPlanetNastyPick, or D. is a command station (its own category, so reconquest command stations will trigger it too), you will generate an Exo that's 1/3 of a wave (minimum exo size: 0.8 strength).<br />
** A fancier mechanism was suggested, but honestly I think this is fine. And it takes hours less of time to implement and test.<br />
<br />
* Add Wormhole Borers to the game.<br />
** With Wormhole Borers, I'm declaring myself feature complete. Other changes will be done in response to feedback, but this is all the big stuff I wanted to have done.<br />
<br />
== Beta 2.074 ==<br />
<br />
* Fix a bug where the DZ wouldn't spawn for a week.<br />
<br />
* Actually give the Dark Zenith a beacon<br />
** Thanks to zeusalmighty for reminding me<br />
<br />
* Make the Geneticist AI much scarier. Please restart your games to get the new changes<br />
<br />
* Give the ZM some scarier Miners to spawn over time<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Completely rework the ZA income code to make them scale up more quickly during a war. This should let them expand more readily<br />
<br />
== Beta 2.065 ==<br />
<br />
* Add a few Achievements<br />
<br />
==== Zenith Architrave ====<br />
<br />
* The ZA will de-nomadify planets it captures if in the Nomad Galaxy<br />
<br />
* When seeding multiple ZAs, enforce some distance between each ZA faction; requested by a lot of people<br />
<br />
* The ZA can build tractors and gravity generators near wormholes to make attacking them harder.<br />
<br />
* Allow the player to hack the ZA home spawner for a truce.<br />
<br />
== Beta 2.064 ==<br />
<br />
==== Dark Zenith ====<br />
* Fix some DZ null references<br />
<br />
* Some decent improvements in DZ infrastructure logic. <br />
** They are now much more quick to expand to fill recently cleared enemy planets, which should give them a stronger economy<br />
** Improvements to "DZ bootstraps iteself" logic; the DZ will no longer try to build things it can't afford, and will be better at recovering if it takes a lot of damage. It should be able to recover as long as you leave it a single Metal Terminus. For eaxmple, it will no longer attempt to build anything it can't afford.<br />
<br />
* Allow Metal Harvesters to go to a different planet if all the metal terminii are killed<br />
<br />
==== AI Types ====<br />
<br />
* Add the Geneticist AI Type, which has access to both Scourge units and regular AI units<br />
** Its intended to be in the Hard or Brutal categories, and feedback is requested to make sure it feels that way<br />
<br />
* Add the Vengeful AI type; note this doesn't do anything yet.<br />
<br />
== Beta 2.063 ==<br />
<br />
* Fixed the bug that Ovalcircle was seeing with -1s being serialized in the Dark Zenith in a place they should not have been.<br />
** Also added some extra info for deserialization errors on Dark Zenith.<br />
<br />
* Fix a nomad planet bug<br />
** Thanks to zeus for reporting<br />
<br />
* Lower the DZ's overall power level to prevent the AI from sending extragalactic war ships immediately<br />
** Thanks to Oval's feedback<br />
<br />
* Make the DZ a bit stronger at higher difficulties. Make them more likely to expand into new territory<br />
<br />
== Beta 2.062 ==<br />
<br />
==== What I am looking for starting this release ====<br />
<br />
* The code is essentially feature complete for all the DLC2 factions. So I am now looking for more types of feedback; these are all things I'd love to hear how you feel about.<br />
<br />
* Notifications<br />
** Typos. Clarity; do you understand what's being conveyed? Is there more information you want/need? <br />
<br />
* Overall Gameplay bugs. This includes things that you think are probably features but feel uncertain about.<br />
<br />
* Balance! Overall here's about how I feel on the impact of all the Factions. Overall everything but the DZ should feel "texturing"; it should add new stuff to the game, feel interesting and unique, but unless you crank the difficulty really high they shouldn't dominate. It's about making the galaxy feel big and complex and alive. <br />
** Zenith Miners: You should be able to defeat a Miner with a reasonably late game fleet, but otherwise it should be a major challenge. This faction isn't intended to be super scary; it's intended to give you a new objective to think/plan about.<br />
** Nomad Planets: These should be relatively low impact (except the Nomad Crash event, which should be extremely hard, like the Imperial Spire final battle).<br />
** Zenith Architrave: These should be medium impact; they should take over and be able to hold their chunk of the galaxy; fighting them should be winnable but a lot of effort. The ZA civil war should be Scary.<br />
** Dark Zenith: These should be the scariest minor faction in the game. This is where the "Zenith Onslaught" name comes from, and they want to live up to it. <br />
<br />
* Any other feedback that seems apropos.<br />
<br />
==== Miscellaneous ====<br />
<br />
* Fix some bugs with ships/pathfinding trying to interact with already dead planets (in particular, threat waiting against dead planets)<br />
<br />
* Add the Nomadic Galaxy to the game; this is a setting in the Game Lobby that will cause all planets to move around the map like Nomad Planets. <br />
** This was originally manifested as a bug when the ZMs nomadified planets, but Starkelp suggested making it an an actual feature.<br />
<br />
* Started adding support for Wormhole Borers<br />
<br />
==== Zenith Architrave ====<br />
<br />
* Some buffs at the highest intensity levels<br />
** Thanks to Astillious for the report<br />
<br />
* Improve the notification for incoming Pioneers<br />
** Thanks to Astillious for the report<br />
<br />
==== Dark Zenith ==== <br />
<br />
* DZ has a balance mechanism for its invasion and a first pass at balance. The DZ are intended to have their initial invasion force scale based on the OverallPowerLevel of all factions in the galaxy.<br />
** Open Season!<br />
<br />
* DZ fireteams will start as Defensive for a brief time you a chance to respond to the invasion<br />
<br />
* DZ can in theory build defenses; I'd love some feedback as to whether this is happening.<br />
<br />
* The Dark Alliance code is functional. Enabling the Dark Zenith in "Dark Alliance" mode will make the Dark Spire join them in their invasion. Having the Dark Zenith and Dark Spire enabled at once should be SCARY<br />
<br />
==== Zenith Miners ====<br />
* Zenith Miners have improved notification hovertext<br />
* Zenith Miners no longer vanish instantly<br />
** Thanks to Strategic Sage for reporting<br />
<br />
* Fix a bug where Zenith Probes were never appearing<br />
** Thanks to Astillious for reporting<br />
<br />
* Allow Zenith Miners to 'Nomadify' a planet; the planet will then move around the map like a Nomad planet. However, the planet lacks a Nomad Nexus so you won't be able to stop the planet wandering, or to crash the planet<br />
** Thanks to StarKelp for the suggestion<br />
<br />
==== Nomad Planets ====<br />
* Nomad planets can't be hacked to crash if an AI Overlord hasn't been found. If you've only found some of the Overlords it will use the closest visible Overlord<br />
* Nomad Planets don't have the crash hack available after being hacked<br />
* Nomad Planets always take about 6 minutes to crash into the AI homeworld, regardless of where in the galaxy you hack it. Also the AI now actually sends some responses to this.<br />
** All thanks to Strategic Sage for the bug reports<br />
<br />
* Some nomad planets move clockwise, others widdershins<br />
<br />
== Version 2.047 ==<br />
<br />
=== Dark Zenith ===<br />
* Give the DZ some units when they invade<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
* Add some unique units. Much more to be done, but it's a start<br />
<br />
== Version 2.045 ==<br />
<br />
=== Dark Zenith ===<br />
<br />
* Fix a bug where the DZ was friendly with the Hunter Fleet/Instigators/etc...<br />
** Thanks to Oval for reporting<br />
<br />
* The C# to support a DZ that is minor-faction allied is in. I don't intend for this to be available in the base game, but I intend for the modding support to be just a little bit of XML<br />
<br />
* Add DZ Pirates! Some Epistyles are Pirate Epistyles.<br />
** Pirate Epistyles are outcasts. Transports won't give them resources. So Pirate Epistyles build Privateers to go attack Transports and steal the resources.<br />
** Once a Privateer has stolen resources it will return back to the Pirate Epistyle.<br />
** Pirate Epistyles build unique combat ships as well<br />
*** TODO: there should be some chance that an Epistyle "turns pirate", or that the DZ "attacks" a pirate epistyle and turns it back into a regular Epistyle<br />
<br />
== Beta 2.044 ==<br />
<br />
=== Zenith Architrave ===<br />
<br />
* The ZA actually has some unique ships and defensive structures now<br />
** They are themed based on roman gladiators<br />
<br />
* The ZA has a budget for building defenses over time, and it can replace killed defenses, instead of the old rather hacky approach<br />
<br />
=== Zenith Miners ===<br />
* There are now more hacks for the Zenith Miner probe<br />
** You can move the probe to a random adjacent planet, so the miner will attack that planet instead <br />
** You can cause the Miner to modify the planet to permanently speedup or slowdown all ships on that planet. If this option is chosen then the miner will vanish after its time is up. The miner will still attack everything though.<br />
*** Potential use case: the Probe is on a planet adjacent to a heavily defended AI planet that has an Ark you want. You can reprogram the Miner to speedup all units, then try to move the probe and hope it goes to the defended planet. Then the Miner will do your dirty work for you.<br />
<br />
== Beta 2.043 ==<br />
<br />
* Dark Zenith<br />
** Can now actually invade the galaxy. "Open" for stability testing. No attempt at balance or unit creation has been made.<br />
<br />
* Zenith Miners<br />
** Now have notifications<br />
<br />
* Nomads and Zenith Miners<br />
** Planets should now be properly destroyed<br />
<br />
== Beta 2.042 ==<br />
<br />
* Zenith Architrave<br />
** Give them a few new defensive structures<br />
** Remove some mentions of the militant dyson from notification tooltips. Thanks to Starkelp for reporting<br />
** Fix a bug where Golems weren't going to spawn<br />
<br />
* Dark Zenith<br />
** Dark Zenith now actually spawn new planets<br />
** First pass at DZ economy done. Can be turned on for testing, though they only do economic stuff right now<br />
<br />
== Version 2.031 ==<br />
<br />
* Nomad Changes <br />
** Fix a null reference exception in the nomad planet notifier, and minor text tweaks there.<br />
** Don't let an AI homeworld be placed on a Nomad planet<br />
** Faction-specific stuff can't seed at game start time on a Nomad planet. This prevents the Dyson or ZA from being on a Nomad<br />
** Nomad Planets that are also player homeworlds can't be crashed into the AI<br />
** Nomad Planets now spawn exos in a reasonable fashion once the Nomad Planets are en route to crash. Balance levers in XML<br />
<br />
* Zenith Architrave<br />
** Give the ZA some actual units (stolen from the Dyson for now).<br />
** Give the ZA some golems that spawn only during the Civil War.<br />
** Some buffs to the ZA<br />
<br />
* Dark Zenith<br />
** New planets should now spawn when the Invasion Starts. Planet locations need work, and debugging code is still enabled for it<br />
** Planets can now have varying initial amounts of science. Used to make Dark Zenith planets worth extra science.<br />
** Start the XML for dark zenith economy.<br />
<br />
== Version 2.029 ==<br />
<br />
Factions open for testing: Zenith Architrave, Zenith Miners, Nomad Planets<br />
<br />
* Add a debug setting (in the game lobby) to make Nomad Planets move more often<br />
* Fix a null reference from clicking on the nomad planet notification<br />
* Don't let the AI homeworld be placed on a Nomad planet<br />
<br />
<br />
== Things that need testing ==<br />
<br />
* Multiple ZAs for the civil war<br />
** Test that they spawn golems<br />
<br />
* How does ZA balance feel? Do they feel impactful?<br />
<br />
* Zenith Miners are open for testing! No restrictions. Turn em on and see what happens! Please try the various hacks.<br />
<br />
* Nomad planets are open for testing. No restrictions. Turn em on and see what happens!<br />
<br />
* Dark Zenith are open for testing. No restrictions. Turn em on and see what happens!<br />
<br />
<br />
== Bug Reports/Feedback/Ideas ==<br />
<br />
This section is to give an easy place for people to mention problems they are having<br />
<br />
<br />
* Version 2.064<br />
** Nomads cause heavy galaxy map lag over the course of a game.<br />
*** Can be quickly seen by enabling fast/debug mode in the lobby with 10 Nomads.<br />
** Reloading the save causes the game to go back to peak performance.<br />
<br />
* Forcefield Variations (Starkelp)<br />
*** For both the Architrave and players in the form of a rare GCA drop<br />
*** Optionally as a potential Architrave hack?<br />
**** Layered: Reduced damage the farther away a target is.<br />
**** Hardened: Heavily reduced damage while above 50% Shield strength.<br />
**** Impact: Radius (substantially) increases in Radius as it takes damage, starting small.<br />
**** Fortified: Much higher shield value, but much lower shield Radius.<br />
**** Glue: Also acts as a Tractor Array; does not decrease in size with damage.<br />
**** Corrosive: Also comes with a built-in Aoe Acid effect.<br />
<br />
* Suggestion: Give the player a mechanism to spawn wormholes like the Wormhole Borer. Maybe "you have a start structure and an end structure, and can activate them to make a wormhole between the planets"?<br />
<br />
* New Units<br />
** Frigate Class<br />
*** Zenith Aggregator<br />
**** Stores 50% of all damage taken as energy, and consumes this energy on death to deal damage in an area around itself.<br />
*** Zenith Compressor<br />
**** Long range, single target weapon that pulls enemies into itself, and high damage, short range, single target, Greater Metabolizing weapon.<br />
<br />
* We could probably put the Zenith Mirror ability back in; probly something like "when we call TakeDamage, spawn a new shot going back to the old shot's target, but cap the mirrored shot's damage"<br />
<br />
* Nomad Seeding<br />
** Nomads can be seeded far away from the regular planets on the Squares map type.<br />
*** The same thing can occur on a smaller scale in the regular Clusters type, but its far less pronounced and usually fits in.<br />
<br />
* Vengeful Messages<br />
** My name is {AIName/Type}. You killed my {EntityThatDied}. Prepare to die.<br />
** GuardpostName will have it's revenge from beyond the grave.<br />
** GuardpostName says "Have a nice day! :D"<br />
** I am GuardpostName, son of GuardpostName. You killed my father!<br />
** You have lost reputation with GuardpostName.<br />
** GuardpostName will remember that.<br />
** GuardpostName thinks you are a stinky poo.<br />
** From hell's heart, GuardpostName stabs at you.<br />
** The ghost of GuardpostName is haunting you.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=38522Getting Started2020-03-16T06:28:27Z<p>Democracy? Democracy!: /* Minor Faction Crash Course */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI Sentinels, the AI Wardens and the AI Hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI Warden difficulty will increase how many Warden Fleet ships spawn at the start of the game, as well as increasing the maximum strength cap of the Warden fleet. Increasing the AI Warden difficulty also allows the Warden Fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, it will attack more recklessly.<br />
*Increasing AI Hunter difficulty will increase how many Hunter Fleet ships spawn at the start of the game. Once the difficulty high enough, the Hunter Fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to Hunter Fleet. Just like the AI Warden Fleet, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole Invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA releases its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units are released, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. The method the AI uses to choose which ships are released are:Pick all planets that are at or below it's current tech level and free ships from those planets. Then move up one planet mark, then two, then random. At the end, you'll get a wide mix of unit marks, but usually they should be within the AI's budget, meaning while you can see mk5 units even if you are at mk2, the mk5 units take away quantity from lower marks that could have spawned. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around. To be clear, CPAs do NOT spawn new units, but rather they release guards from existing reinforcement points.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
<br />
====Threat and Hunter Fleet====<br />
Normally, AI sentinel units are in "sleep" mode. They rest inside reinforcement points, and will only "wake up" whenever hostiles engage whatever they're sleeping inside. Whenever an AI sentinel unit has been woken up, it will begin to transition into threat fleet if not killed after a short period of time. Threat ships unlike waves or sentinels are rather unpredictable, they will move all over the galaxy, probing your planets for weakness. If threat lives for to long, they become a part of the Hunter fleet. Hunter fleet differs from threat fleet in being much more intelligent in how they attack. By default, Hunters will be assigned to "fireteams", which are groups of hunters that coordinate with themselves on which targets to attack. At higher difficulties, the hunter can send different fireteams to attack different planets at the same time, possibly taking attention away from other concerns.<br />
<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the Dark Spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as Reconquest waves and Hunter waves. The AI also techs up it's units at certain AIP thresholds, which means its waves, Wardens, Hunters and Praetorian will now be at least that level a minimum. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and Warden units that spawn in will be at Mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies, -1 aip every 5 seconds the hack goes on<br />
<br />
===Attacking the AI===<br />
<br />
The AI owns all the planets at the start of the game. Every planet has a mark assigned to them from the start of the game. Worlds next to your homeworld are always mark 1, and worlds next to those are mark 2. AI homeworlds and core worlds (planets adjacent to the ai homeworld) are always mark 7, and Worlds next to those are usually mark 6. All planets that do not meet the former criteria are between marks 3 and 5. In general, the higher the difficulty, the more higher mark planets appear and vise versa. What a planet's mark means is how powerful the defenses and units are on it. The Warden Fleet as mentioned prior are a defensive reserve, used to attack you wherever and whenever you show up. However, if you have a really strong presence, they may choose not to interfere with your battle. In general, whenever you vastly outnumber the AI on a planet, it's units will flee to a nearby wormhole. While this may seem cowardly, this allows them to come back at a later time as threat fleet. The AI can decide if certain planets get reinforcements or not, to replace any losses taken by hostile forces. AI planets have two states, alerted, and passive. During the alerted state, the AI Warden fleet tends to head towards them and nearby planets, and the AI will reinforce available posts and command stations more often. In passive state, AI planets will rarely if ever receive reinforcements. AI planets start of in the passive state, and immediately transform into alerted if there is a hostile force on the planet, or a nearby planet.<br />
<br />
===Guardposts===<br />
<br />
Guardposts are the primary source of defense for the AI's planets. They also allow the AI to reinforce the planet with additional units per guard post. Think of guard posts as extremely powerful turrets for their mark level. While they are strong, they have a low hull to shield hp ratio. Using units with fusion can be used to bypass their shields, such as assault frigates and fusion bombers. Be aware, each guard posts has a compliment of units inside of them, and these units will fly out if any combat capable units go near them, or if the Guardpost itself/nearby units and buildings are attacked.<br />
<br />
<br />
<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming Nanocaust, to the singular Devourer Golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win with no strings attached! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), Marauder starbases cannot be mark 3. This will cause the Marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to Marauders, and retreating when the Marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by Marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing Marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the Marauders will target you if they consider you a better target.<br />
<br />
====Astrotrains====<br />
The dreaded Astrotrains return from classic! Astrotrains themselves aren't the biggest issue. It's what they spawn.The Astrotrain minor faction is composed of 3 parts, The Astrotrains themselves, the astrotrain stations and astrotrain depots. Astrotrains carry cargo to astrotrain depots, spawn on and path between astrotrain stations. Initially, there will be astrotrain stations spawned around the galaxy at the start of the game. Every now and then, depending on the intensity of the faction, Astrotrain depots will spawn around the galaxy, and each one will create something nasty if enough Astrotrains reach them. The higher the intensity Astrotrain faction, the more nasty things they can spawn, ranging from the (relatively) weak dire guardians, to powerful golems, the frightening Hunter/Killer, and at max intensity, even a... ''familiar shadow'' from AI War Classic. Astrotrains upon spawning in, will have a predetermined path that they will take, stopping at various astrotrain stations around the galaxy, until they reach their destination, which is an astrotrain depot. Killing an astrotrain depot will reroute the Astrotrain to a different astrotrain depot. If there are no astrotrain depots in the galaxy, all surviving Astrotrains will begin roaming aimlessly between different Astrotrain stations. Destroying astrotrain stations will reroute Astrotrain pathing, allowing you to a certain degree, control where the astrotrains move. Astrotrains come in 3 varities, Tankers, Combat and Carriers. Tanks are the slowest and probably the easiest to take out. They only have an anti structure weapon. While they have double the total HP of other astrotrains, their slow speed makes them an easy target. Combats are faster than tankers, but have much less HP. As their name implies, they have plenty of weapons for self defense. While the weapons themselves aren't to deadly, they can ward off a lone fleet trying to take them out. Carriers are faster than combats and while they only have the same weapon as the tankers, they release a constant stream of drones to distract you. Their fast speed arguably makes them the hardest to take out. Destroying astrotrains gives you 150 science and 3 hack points, so you can "farm" astrotrains for resources. One final point, all Astrotrains have the Norris effect, meaning they will shove force fields out of their way, so trying to block their movement with forcefields is a useless endeavor.<br />
<br />
====Devourer Golem====<br />
The Devourer Golem (affectionately referred to as cookie monster) is a giant zenith entity that roams around eating whatever it can. <br />
<br />
====Macrophage Infestation====<br />
Giant space bugs that roam around<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to reinforcement budget. If you see planets spike up in strength over a short period of time and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to reduce the reinforcement budget to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both Major Data Centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI Progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DAS: Dark Spire<br />
*DS: Dyson Sphere <br />
*FCE: Fleet Capacity Extender<br />
<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have Mark 2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become Mark 3.)<br />
**Units can now be upgraded to Mark 7.<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists.<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports.<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire Mark 4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
*Deepstriking has been reworked. Instead of the AI building up a wave over time, it deploys the "AI Reserves" to fight any human ships that are more than two planets away from a Human planet. Once these units appear, they will fight the Human ships. If the Human ships leave or are destroyed, the Reserves will wait a few minutes then Warp away but leave a few ships to join the Threat Fleet. Once they warp away, they will be on a cooldown and will not be able to appear on the same planet for a short period of time.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by Flagships)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlement<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, Defender, Bulwark and Bastion.<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=38504Getting Started2020-03-16T01:41:14Z<p>Democracy? Democracy!: /* Minor Faction Crash Course */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI Sentinels, the AI Wardens and the AI Hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI Warden difficulty will increase how many Warden Fleet ships spawn at the start of the game, as well as increasing the maximum strength cap of the Warden fleet. Increasing the AI Warden difficulty also allows the Warden Fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, it will attack more recklessly.<br />
*Increasing AI Hunter difficulty will increase how many Hunter Fleet ships spawn at the start of the game. Once the difficulty high enough, the Hunter Fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to Hunter Fleet. Just like the AI Warden Fleet, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole Invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA releases its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units are released, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. The method the AI uses to choose which ships are released are:Pick all planets that are at or below it's current tech level and free ships from those planets. Then move up one planet mark, then two, then random. At the end, you'll get a wide mix of unit marks, but usually they should be within the AI's budget, meaning while you can see mk5 units even if you are at mk2, the mk5 units take away quantity from lower marks that could have spawned. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around. To be clear, CPAs do NOT spawn new units, but rather they release guards from existing reinforcement points.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
<br />
====Threat and Hunter Fleet====<br />
Normally, AI sentinel units are in "sleep" mode. They rest inside reinforcement points, and will only "wake up" whenever hostiles engage whatever they're sleeping inside. Whenever an AI sentinel unit has been woken up, it will begin to transition into threat fleet if not killed after a short period of time. Threat ships unlike waves or sentinels are rather unpredictable, they will move all over the galaxy, probing your planets for weakness. If threat lives for to long, they become a part of the Hunter fleet. Hunter fleet differs from threat fleet in being much more intelligent in how they attack. By default, Hunters will be assigned to "fireteams", which are groups of hunters that coordinate with themselves on which targets to attack. At higher difficulties, the hunter can send different fireteams to attack different planets at the same time, possibly taking attention away from other concerns.<br />
<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the Dark Spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as Reconquest waves and Hunter waves. The AI also techs up it's units at certain AIP thresholds, which means its waves, Wardens, Hunters and Praetorian will now be at least that level a minimum. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and Warden units that spawn in will be at Mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies, -1 aip every 5 seconds the hack goes on<br />
<br />
===Attacking the AI===<br />
<br />
The AI owns all the planets at the start of the game. Every planet has a mark assigned to them from the start of the game. Worlds next to your homeworld are always mark 1, and worlds next to those are mark 2. AI homeworlds and core worlds (planets adjacent to the ai homeworld) are always mark 7, and Worlds next to those are usually mark 6. All planets that do not meet the former criteria are between marks 3 and 5. In general, the higher the difficulty, the more higher mark planets appear and vise versa. What a planet's mark means is how powerful the defenses and units are on it. The Warden Fleet as mentioned prior are a defensive reserve, used to attack you wherever and whenever you show up. However, if you have a really strong presence, they may choose not to interfere with your battle. In general, whenever you vastly outnumber the AI on a planet, it's units will flee to a nearby wormhole. While this may seem cowardly, this allows them to come back at a later time as threat fleet. The AI can decide if certain planets get reinforcements or not, to replace any losses taken by hostile forces. AI planets have two states, alerted, and passive. During the alerted state, the AI Warden fleet tends to head towards them and nearby planets, and the AI will reinforce available posts and command stations more often. In passive state, AI planets will rarely if ever receive reinforcements. AI planets start of in the passive state, and immediately transform into alerted if there is a hostile force on the planet, or a nearby planet.<br />
<br />
===Guardposts===<br />
<br />
Guardposts are the primary source of defense for the AI's planets. They also allow the AI to reinforce the planet with additional units per guard post. Think of guard posts as extremely powerful turrets for their mark level. While they are strong, they have a low hull to shield hp ratio. Using units with fusion can be used to bypass their shields, such as assault frigates and fusion bombers. Be aware, each guard posts has a compliment of units inside of them, and these units will fly out if any combat capable units go near them, or if the Guardpost itself/nearby units and buildings are attacked.<br />
<br />
<br />
<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming Nanocaust, to the singular Devourer Golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), Marauder starbases cannot be mark 3. This will cause the Marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to Marauders, and retreating when the Marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by Marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing Marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the Marauders will target you if they consider you a better target.<br />
<br />
====Astrotrains====<br />
The dreaded Astrotrains return from classic! Astrotrains themselves aren't the biggest issue. It's what they spawn.The Astrotrain minor faction is composed of 3 parts, The Astrotrains themselves, the astrotrain stations and astrotrain depots. Astrotrains carry cargo to astrotrain depots, spawn on and path between astrotrain stations. Initially, there will be astrotrain stations spawned around the galaxy at the start of the game. Every now and then, depending on the intensity of the faction, Astrotrain depots will spawn around the galaxy, and each one will create something nasty if enough Astrotrains reach them. The higher the intensity Astrotrain faction, the more nasty things they can spawn, ranging from the (relatively) weak dire guardians, to powerful golems, the frightening Hunter/Killer, and at max intensity, even a... ''familiar shadow'' from AI War Classic. Astrotrains upon spawning in, will have a predetermined path that they will take, stopping at various astrotrain stations around the galaxy, until they reach their destination, which is an astrotrain depot. Killing an astrotrain depot will reroute the Astrotrain to a different astrotrain depot. If there are no astrotrain depots in the galaxy, all surviving Astrotrains will begin roaming aimlessly between different Astrotrain stations. Destroying astrotrain stations will reroute Astrotrain pathing, allowing you to a certain degree, control where the astrotrains move. Astrotrains come in 3 varities, Tankers, Combat and Carriers. Tanks are the slowest and probably the easiest to take out. They only have an anti structure weapon. While they have double the total HP of other astrotrains, their slow speed makes them an easy target. Combats are faster than tankers, but have much less HP. As their name implies, they have plenty of weapons for self defense. While the weapons themselves aren't to deadly, they can ward off a lone fleet trying to take them out. Carriers are faster than combats and while they only have the same weapon as the tankers, they release a constant stream of drones to distract you. Their fast speed arguably makes them the hardest to take out. Destroying astrotrains gives you 150 science and 3 hack points, so you can "farm" astrotrains for resources. One final point, all Astrotrains have the Norris effect, meaning they will shove force fields out of their way, so trying to block their movement with forcefields is a useless endeavor.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to reinforcement budget. If you see planets spike up in strength over a short period of time and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to reduce the reinforcement budget to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both Major Data Centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI Progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DAS: Dark Spire<br />
*DS: Dyson Sphere <br />
*FCE: Fleet Capacity Extender<br />
<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have Mark 2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become Mark 3.)<br />
**Units can now be upgraded to Mark 7.<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists.<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports.<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire Mark 4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
*Deepstriking has been reworked. Instead of the AI building up a wave over time, it deploys the "AI Reserves" to fight any human ships that are more than two planets away from a Human planet. Once these units appear, they will fight the Human ships. If the Human ships leave or are destroyed, the Reserves will wait a few minutes then Warp away but leave a few ships to join the Threat Fleet. Once they warp away, they will be on a cooldown and will not be able to appear on the same planet for a short period of time.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by Flagships)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlement<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, Defender, Bulwark and Bastion.<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37836Getting Started2020-01-24T07:36:47Z<p>Democracy? Democracy!: /* Reducing AI Progress */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI Sentinels, the AI Wardens and the AI Hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI Warden difficulty will increase how many Warden Fleet ships spawn at the start of the game, as well as increasing the maximum strength cap of the Warden fleet. Increasing the AI Warden difficulty also allows the Warden Fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, it will attack more recklessly.<br />
*Increasing AI Hunter difficulty will increase how many Hunter Fleet ships spawn at the start of the game. Once the difficulty high enough, the Hunter Fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to Hunter Fleet. Just like the AI Warden Fleet, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole Invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA releases its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units are released, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. The method the AI uses to choose which ships are released are:Pick all planets that are at or below it's current tech level and free ships from those planets. Then move up one planet mark, then two, then random. At the end, you'll get a wide mix of unit marks, but usually they should be within the AI's budget, meaning while you can see mk5 units even if you are at mk2, the mk5 units take away quantity from lower marks that could have spawned. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around. To be clear, CPAs do NOT spawn new units, but rather they release guards from existing reinforcement points.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
<br />
====Threat and Hunter Fleet====<br />
Normally, AI sentinel units are in "sleep" mode. They rest inside reinforcement points, and will only "wake up" whenever hostiles engage whatever they're sleeping inside. Whenever an AI sentinel unit has been woken up, it will begin to transition into threat fleet if not killed after a short period of time. Threat ships unlike waves or sentinels are rather unpredictable, they will move all over the galaxy, probing your planets for weakness. If threat lives for to long, they become a part of the Hunter fleet. Hunter fleet differs from threat fleet in being much more intelligent in how they attack. By default, Hunters will be assigned to "fireteams", which are groups of hunters that coordinate with themselves on which targets to attack. At higher difficulties, the hunter can send different fireteams to attack different planets at the same time, possibly taking attention away from other concerns.<br />
<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the Dark Spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as Reconquest waves and Hunter waves. The AI also techs up it's units at certain AIP thresholds, which means its waves, Wardens, Hunters and Praetorian will now be at least that level a minimum. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and Warden units that spawn in will be at Mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies, -1 aip every 5 seconds the hack goes on<br />
<br />
===Attacking the AI===<br />
<br />
The AI owns all the planets at the start of the game. Every planet has a mark assigned to them from the start of the game. Worlds next to your homeworld are always mark 1, and worlds next to those are mark 2. AI homeworlds and core worlds (planets adjacent to the ai homeworld) are always mark 7, and Worlds next to those are usually mark 6. All planets that do not meet the former criteria are between marks 3 and 5. In general, the higher the difficulty, the more higher mark planets appear and vise versa. What a planet's mark means is how powerful the defenses and units are on it. The Warden Fleet as mentioned prior are a defensive reserve, used to attack you wherever and whenever you show up. However, if you have a really strong presence, they may choose not to interfere with your battle. In general, whenever you vastly outnumber the AI on a planet, it's units will flee to a nearby wormhole. While this may seem cowardly, this allows them to come back at a later time as threat fleet. The AI can decide if certain planets get reinforcements or not, to replace any losses taken by hostile forces. AI planets have two states, alerted, and passive. During the alerted state, the AI Warden fleet tends to head towards them and nearby planets, and the AI will reinforce available posts and command stations more often. In passive state, AI planets will rarely if ever receive reinforcements. AI planets start of in the passive state, and immediately transform into alerted if there is a hostile force on the planet, or a nearby planet.<br />
<br />
===Guardposts===<br />
<br />
Guardposts are the primary source of defense for the AI's planets. They also allow the AI to reinforce the planet with additional units per guard post. Think of guard posts as extremely powerful turrets for their mark level. While they are strong, they have a low hull to shield hp ratio. Using units with fusion can be used to bypass their shields, such as assault frigates and fusion bombers. Be aware, each guard posts has a compliment of units inside of them, and these units will fly out if any combat capable units go near them, or if the Guardpost itself/nearby units and buildings are attacked.<br />
<br />
<br />
<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming Nanocaust, to the singular Devourer Golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), Marauder starbases cannot be mark 3. This will cause the Marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to Marauders, and retreating when the Marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by Marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing Marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the Marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to reinforcement budget. If you see planets spike up in strength over a short period of time and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to reduce the reinforcement budget to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both Major Data Centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI Progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DAS: Dark Spire<br />
*DS: Dyson Sphere <br />
*FCE: Fleet Capacity Extender<br />
<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have Mark 2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become Mark 3.)<br />
**Units can now be upgraded to Mark 7.<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists.<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports.<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire Mark 4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
*Deepstriking has been reworked. Instead of the AI building up a wave over time, it deploys the "AI Reserves" to fight any human ships that are more than two planets away from a Human planet. Once these units appear, they will fight the Human ships. If the Human ships leave or are destroyed, the Reserves will wait a few minutes then Warp away but leave a few ships to join the Threat Fleet. Once they warp away, they will be on a cooldown and will not be able to appear on the same planet for a short period of time.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by Flagships)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlement<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, Defender, Bulwark and Bastion.<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37834Getting Started2020-01-24T07:36:05Z<p>Democracy? Democracy!: /* Threat and Hunter Fleet */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI Sentinels, the AI Wardens and the AI Hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI Warden difficulty will increase how many Warden Fleet ships spawn at the start of the game, as well as increasing the maximum strength cap of the Warden fleet. Increasing the AI Warden difficulty also allows the Warden Fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, it will attack more recklessly.<br />
*Increasing AI Hunter difficulty will increase how many Hunter Fleet ships spawn at the start of the game. Once the difficulty high enough, the Hunter Fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to Hunter Fleet. Just like the AI Warden Fleet, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole Invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA releases its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units are released, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. The method the AI uses to choose which ships are released are:Pick all planets that are at or below it's current tech level and free ships from those planets. Then move up one planet mark, then two, then random. At the end, you'll get a wide mix of unit marks, but usually they should be within the AI's budget, meaning while you can see mk5 units even if you are at mk2, the mk5 units take away quantity from lower marks that could have spawned. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around. To be clear, CPAs do NOT spawn new units, but rather they release guards from existing reinforcement points.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
<br />
====Threat and Hunter Fleet====<br />
Normally, AI sentinel units are in "sleep" mode. They rest inside reinforcement points, and will only "wake up" whenever hostiles engage whatever they're sleeping inside. Whenever an AI sentinel unit has been woken up, it will begin to transition into threat fleet if not killed after a short period of time. Threat ships unlike waves or sentinels are rather unpredictable, they will move all over the galaxy, probing your planets for weakness. If threat lives for to long, they become a part of the Hunter fleet. Hunter fleet differs from threat fleet in being much more intelligent in how they attack. By default, Hunters will be assigned to "fireteams", which are groups of hunters that coordinate with themselves on which targets to attack. At higher difficulties, the hunter can send different fireteams to attack different planets at the same time, possibly taking attention away from other concerns.<br />
<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the Dark Spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as Reconquest waves and Hunter waves. The AI also techs up it's units at certain AIP thresholds, which means its waves, Wardens, Hunters and Praetorian will now be at least that level a minimum. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and Warden units that spawn in will be at Mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Attacking the AI===<br />
<br />
The AI owns all the planets at the start of the game. Every planet has a mark assigned to them from the start of the game. Worlds next to your homeworld are always mark 1, and worlds next to those are mark 2. AI homeworlds and core worlds (planets adjacent to the ai homeworld) are always mark 7, and Worlds next to those are usually mark 6. All planets that do not meet the former criteria are between marks 3 and 5. In general, the higher the difficulty, the more higher mark planets appear and vise versa. What a planet's mark means is how powerful the defenses and units are on it. The Warden Fleet as mentioned prior are a defensive reserve, used to attack you wherever and whenever you show up. However, if you have a really strong presence, they may choose not to interfere with your battle. In general, whenever you vastly outnumber the AI on a planet, it's units will flee to a nearby wormhole. While this may seem cowardly, this allows them to come back at a later time as threat fleet. The AI can decide if certain planets get reinforcements or not, to replace any losses taken by hostile forces. AI planets have two states, alerted, and passive. During the alerted state, the AI Warden fleet tends to head towards them and nearby planets, and the AI will reinforce available posts and command stations more often. In passive state, AI planets will rarely if ever receive reinforcements. AI planets start of in the passive state, and immediately transform into alerted if there is a hostile force on the planet, or a nearby planet.<br />
<br />
===Guardposts===<br />
<br />
Guardposts are the primary source of defense for the AI's planets. They also allow the AI to reinforce the planet with additional units per guard post. Think of guard posts as extremely powerful turrets for their mark level. While they are strong, they have a low hull to shield hp ratio. Using units with fusion can be used to bypass their shields, such as assault frigates and fusion bombers. Be aware, each guard posts has a compliment of units inside of them, and these units will fly out if any combat capable units go near them, or if the Guardpost itself/nearby units and buildings are attacked.<br />
<br />
<br />
<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming Nanocaust, to the singular Devourer Golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), Marauder starbases cannot be mark 3. This will cause the Marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to Marauders, and retreating when the Marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by Marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing Marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the Marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to reinforcement budget. If you see planets spike up in strength over a short period of time and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to reduce the reinforcement budget to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both Major Data Centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI Progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DAS: Dark Spire<br />
*DS: Dyson Sphere <br />
*FCE: Fleet Capacity Extender<br />
<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have Mark 2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become Mark 3.)<br />
**Units can now be upgraded to Mark 7.<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists.<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports.<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire Mark 4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
*Deepstriking has been reworked. Instead of the AI building up a wave over time, it deploys the "AI Reserves" to fight any human ships that are more than two planets away from a Human planet. Once these units appear, they will fight the Human ships. If the Human ships leave or are destroyed, the Reserves will wait a few minutes then Warp away but leave a few ships to join the Threat Fleet. Once they warp away, they will be on a cooldown and will not be able to appear on the same planet for a short period of time.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by Flagships)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlement<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, Defender, Bulwark and Bastion.<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37833Getting Started2020-01-24T04:43:30Z<p>Democracy? Democracy!: /* How DOES The AI Work? */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI Sentinels, the AI Wardens and the AI Hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI Warden difficulty will increase how many Warden Fleet ships spawn at the start of the game, as well as increasing the maximum strength cap of the Warden fleet. Increasing the AI Warden difficulty also allows the Warden Fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, it will attack more recklessly.<br />
*Increasing AI Hunter difficulty will increase how many Hunter Fleet ships spawn at the start of the game. Once the difficulty high enough, the Hunter Fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to Hunter Fleet. Just like the AI Warden Fleet, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole Invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA releases its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units are released, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. The method the AI uses to choose which ships are released are:Pick all planets that are at or below it's current tech level and free ships from those planets. Then move up one planet mark, then two, then random. At the end, you'll get a wide mix of unit marks, but usually they should be within the AI's budget, meaning while you can see mk5 units even if you are at mk2, the mk5 units take away quantity from lower marks that could have spawned. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around. To be clear, CPAs do NOT spawn new units, but rather they release guards from existing reinforcement points.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
<br />
====Threat and Hunter Fleet====<br />
<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the Dark Spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as Reconquest waves and Hunter waves. The AI also techs up it's units at certain AIP thresholds, which means its waves, Wardens, Hunters and Praetorian will now be at least that level a minimum. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and Warden units that spawn in will be at Mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Attacking the AI===<br />
<br />
The AI owns all the planets at the start of the game. Every planet has a mark assigned to them from the start of the game. Worlds next to your homeworld are always mark 1, and worlds next to those are mark 2. AI homeworlds and core worlds (planets adjacent to the ai homeworld) are always mark 7, and Worlds next to those are usually mark 6. All planets that do not meet the former criteria are between marks 3 and 5. In general, the higher the difficulty, the more higher mark planets appear and vise versa. What a planet's mark means is how powerful the defenses and units are on it. The Warden Fleet as mentioned prior are a defensive reserve, used to attack you wherever and whenever you show up. However, if you have a really strong presence, they may choose not to interfere with your battle. In general, whenever you vastly outnumber the AI on a planet, it's units will flee to a nearby wormhole. While this may seem cowardly, this allows them to come back at a later time as threat fleet. The AI can decide if certain planets get reinforcements or not, to replace any losses taken by hostile forces. AI planets have two states, alerted, and passive. During the alerted state, the AI Warden fleet tends to head towards them and nearby planets, and the AI will reinforce available posts and command stations more often. In passive state, AI planets will rarely if ever receive reinforcements. AI planets start of in the passive state, and immediately transform into alerted if there is a hostile force on the planet, or a nearby planet.<br />
<br />
===Guardposts===<br />
<br />
Guardposts are the primary source of defense for the AI's planets. They also allow the AI to reinforce the planet with additional units per guard post. Think of guard posts as extremely powerful turrets for their mark level. While they are strong, they have a low hull to shield hp ratio. Using units with fusion can be used to bypass their shields, such as assault frigates and fusion bombers. Be aware, each guard posts has a compliment of units inside of them, and these units will fly out if any combat capable units go near them, or if the Guardpost itself/nearby units and buildings are attacked.<br />
<br />
<br />
<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming Nanocaust, to the singular Devourer Golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), Marauder starbases cannot be mark 3. This will cause the Marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to Marauders, and retreating when the Marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by Marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing Marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the Marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to reinforcement budget. If you see planets spike up in strength over a short period of time and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to reduce the reinforcement budget to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both Major Data Centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI Progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DAS: Dark Spire<br />
*DS: Dyson Sphere <br />
*FCE: Fleet Capacity Extender<br />
<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have Mark 2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become Mark 3.)<br />
**Units can now be upgraded to Mark 7.<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists.<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports.<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire Mark 4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
*Deepstriking has been reworked. Instead of the AI building up a wave over time, it deploys the "AI Reserves" to fight any human ships that are more than two planets away from a Human planet. Once these units appear, they will fight the Human ships. If the Human ships leave or are destroyed, the Reserves will wait a few minutes then Warp away but leave a few ships to join the Threat Fleet. Once they warp away, they will be on a cooldown and will not be able to appear on the same planet for a short period of time.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by Flagships)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlement<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, Defender, Bulwark and Bastion.<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37832Getting Started2020-01-24T04:42:18Z<p>Democracy? Democracy!: /* Standard Waves */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI Sentinels, the AI Wardens and the AI Hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI Warden difficulty will increase how many Warden Fleet ships spawn at the start of the game, as well as increasing the maximum strength cap of the Warden fleet. Increasing the AI Warden difficulty also allows the Warden Fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, it will attack more recklessly.<br />
*Increasing AI Hunter difficulty will increase how many Hunter Fleet ships spawn at the start of the game. Once the difficulty high enough, the Hunter Fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to Hunter Fleet. Just like the AI Warden Fleet, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole Invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA releases its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units are released, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. The method the AI uses to choose which ships are released are:Pick all planets that are at or below it's current tech level and free ships from those planets. Then move up one planet mark, then two, then random. At the end, you'll get a wide mix of unit marks, but usually they should be within the AI's budget, meaning while you can see mk5 units even if you are at mk2, the mk5 units take away quantity from lower marks that could have spawned. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around. To be clear, CPAs do NOT spawn new units, but rather they release guards from existing reinforcement points.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the Dark Spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as Reconquest waves and Hunter waves. The AI also techs up it's units at certain AIP thresholds, which means its waves, Wardens, Hunters and Praetorian will now be at least that level a minimum. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and Warden units that spawn in will be at Mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Attacking the AI===<br />
<br />
The AI owns all the planets at the start of the game. Every planet has a mark assigned to them from the start of the game. Worlds next to your homeworld are always mark 1, and worlds next to those are mark 2. AI homeworlds and core worlds (planets adjacent to the ai homeworld) are always mark 7, and Worlds next to those are usually mark 6. All planets that do not meet the former criteria are between marks 3 and 5. In general, the higher the difficulty, the more higher mark planets appear and vise versa. What a planet's mark means is how powerful the defenses and units are on it. The Warden Fleet as mentioned prior are a defensive reserve, used to attack you wherever and whenever you show up. However, if you have a really strong presence, they may choose not to interfere with your battle. In general, whenever you vastly outnumber the AI on a planet, it's units will flee to a nearby wormhole. While this may seem cowardly, this allows them to come back at a later time as threat fleet. The AI can decide if certain planets get reinforcements or not, to replace any losses taken by hostile forces. AI planets have two states, alerted, and passive. During the alerted state, the AI Warden fleet tends to head towards them and nearby planets, and the AI will reinforce available posts and command stations more often. In passive state, AI planets will rarely if ever receive reinforcements. AI planets start of in the passive state, and immediately transform into alerted if there is a hostile force on the planet, or a nearby planet.<br />
<br />
===Guardposts===<br />
<br />
Guardposts are the primary source of defense for the AI's planets. They also allow the AI to reinforce the planet with additional units per guard post. Think of guard posts as extremely powerful turrets for their mark level. While they are strong, they have a low hull to shield hp ratio. Using units with fusion can be used to bypass their shields, such as assault frigates and fusion bombers. Be aware, each guard posts has a compliment of units inside of them, and these units will fly out if any combat capable units go near them, or if the Guardpost itself/nearby units and buildings are attacked.<br />
<br />
<br />
<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming Nanocaust, to the singular Devourer Golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), Marauder starbases cannot be mark 3. This will cause the Marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to Marauders, and retreating when the Marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by Marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing Marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the Marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to reinforcement budget. If you see planets spike up in strength over a short period of time and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to reduce the reinforcement budget to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both Major Data Centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI Progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DAS: Dark Spire<br />
*DS: Dyson Sphere <br />
*FCE: Fleet Capacity Extender<br />
<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have Mark 2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become Mark 3.)<br />
**Units can now be upgraded to Mark 7.<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists.<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports.<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire Mark 4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
*Deepstriking has been reworked. Instead of the AI building up a wave over time, it deploys the "AI Reserves" to fight any human ships that are more than two planets away from a Human planet. Once these units appear, they will fight the Human ships. If the Human ships leave or are destroyed, the Reserves will wait a few minutes then Warp away but leave a few ships to join the Threat Fleet. Once they warp away, they will be on a cooldown and will not be able to appear on the same planet for a short period of time.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by Flagships)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlement<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, Defender, Bulwark and Bastion.<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37831Getting Started2020-01-24T04:42:02Z<p>Democracy? Democracy!: /* Cross Planet Attack */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI Sentinels, the AI Wardens and the AI Hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI Warden difficulty will increase how many Warden Fleet ships spawn at the start of the game, as well as increasing the maximum strength cap of the Warden fleet. Increasing the AI Warden difficulty also allows the Warden Fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, it will attack more recklessly.<br />
*Increasing AI Hunter difficulty will increase how many Hunter Fleet ships spawn at the start of the game. Once the difficulty high enough, the Hunter Fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to Hunter Fleet. Just like the AI Warden Fleet, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole Invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 3 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA releases its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units are released, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. The method the AI uses to choose which ships are released are:Pick all planets that are at or below it's current tech level and free ships from those planets. Then move up one planet mark, then two, then random. At the end, you'll get a wide mix of unit marks, but usually they should be within the AI's budget, meaning while you can see mk5 units even if you are at mk2, the mk5 units take away quantity from lower marks that could have spawned. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around. To be clear, CPAs do NOT spawn new units, but rather they release guards from existing reinforcement points.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the Dark Spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as Reconquest waves and Hunter waves. The AI also techs up it's units at certain AIP thresholds, which means its waves, Wardens, Hunters and Praetorian will now be at least that level a minimum. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and Warden units that spawn in will be at Mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Attacking the AI===<br />
<br />
The AI owns all the planets at the start of the game. Every planet has a mark assigned to them from the start of the game. Worlds next to your homeworld are always mark 1, and worlds next to those are mark 2. AI homeworlds and core worlds (planets adjacent to the ai homeworld) are always mark 7, and Worlds next to those are usually mark 6. All planets that do not meet the former criteria are between marks 3 and 5. In general, the higher the difficulty, the more higher mark planets appear and vise versa. What a planet's mark means is how powerful the defenses and units are on it. The Warden Fleet as mentioned prior are a defensive reserve, used to attack you wherever and whenever you show up. However, if you have a really strong presence, they may choose not to interfere with your battle. In general, whenever you vastly outnumber the AI on a planet, it's units will flee to a nearby wormhole. While this may seem cowardly, this allows them to come back at a later time as threat fleet. The AI can decide if certain planets get reinforcements or not, to replace any losses taken by hostile forces. AI planets have two states, alerted, and passive. During the alerted state, the AI Warden fleet tends to head towards them and nearby planets, and the AI will reinforce available posts and command stations more often. In passive state, AI planets will rarely if ever receive reinforcements. AI planets start of in the passive state, and immediately transform into alerted if there is a hostile force on the planet, or a nearby planet.<br />
<br />
===Guardposts===<br />
<br />
Guardposts are the primary source of defense for the AI's planets. They also allow the AI to reinforce the planet with additional units per guard post. Think of guard posts as extremely powerful turrets for their mark level. While they are strong, they have a low hull to shield hp ratio. Using units with fusion can be used to bypass their shields, such as assault frigates and fusion bombers. Be aware, each guard posts has a compliment of units inside of them, and these units will fly out if any combat capable units go near them, or if the Guardpost itself/nearby units and buildings are attacked.<br />
<br />
<br />
<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming Nanocaust, to the singular Devourer Golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), Marauder starbases cannot be mark 3. This will cause the Marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to Marauders, and retreating when the Marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by Marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing Marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the Marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to reinforcement budget. If you see planets spike up in strength over a short period of time and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to reduce the reinforcement budget to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both Major Data Centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI Progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DAS: Dark Spire<br />
*DS: Dyson Sphere <br />
*FCE: Fleet Capacity Extender<br />
<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have Mark 2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become Mark 3.)<br />
**Units can now be upgraded to Mark 7.<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists.<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports.<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire Mark 4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
*Deepstriking has been reworked. Instead of the AI building up a wave over time, it deploys the "AI Reserves" to fight any human ships that are more than two planets away from a Human planet. Once these units appear, they will fight the Human ships. If the Human ships leave or are destroyed, the Reserves will wait a few minutes then Warp away but leave a few ships to join the Threat Fleet. Once they warp away, they will be on a cooldown and will not be able to appear on the same planet for a short period of time.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by Flagships)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlement<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, Defender, Bulwark and Bastion.<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37151Getting Started2019-11-09T10:01:06Z<p>Democracy? Democracy!: </p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as reconquest waves and hunter waves. The AI also techs up it's units at certain AIP thresholds, which means it's waves, wardens, hunters and praetoreans will now be that level minium. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and warden units that spawn in will be at mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Attacking the AI===<br />
<br />
The AI owns all the planets at the start of the game. Every planet has a mark assigned to them from the start of the game. Worlds next to your homeworld are always mark 1, and worlds next to those are mark 2. AI homeworlds and core worlds (planets adjacent to the ai homeworld) are always mark 7, and Worlds next to those are usually mark 6. All planets that do not meet the former criteria are between marks 3 and 5. In general, the higher the difficulty, the more higher mark planets appear and vise versa. What a planet's mark means is how powerful the defenses and units are on it. The Warden Fleet as mentioned prior are a defensive reserve, used to attack you wherever and whenever you show up. However, if you have a really strong presence, they may choose not to interfere with your battle. In general, whenever you vastly outnumber the AI on a planet, it's units will flee to a nearby wormhole. While this may seem cowardly, this allows them to come back at a later time as threat fleet. The AI can decide if certain planets get reinforcements or not, to replace any losses taken by hostile forces. AI planets have two states, alerted, and passive. During the alerted state, the AI wardens tend to head towards them and nearby planets, and the AI will reinforce available posts and command stations more often. In passive state, AI planets will rarely if ever receive reinforcements. AI planets start of in the passive state, and immediately transform into alerted if there is a hostile force on the planet, or a nearby planet.<br />
<br />
===Guardposts===<br />
<br />
Guardposts are the primary source of defense for the AI's planets. They also allow the AI to reinforce the planet with additional units per guard post. Think of guard posts as extremley powerful turrets for their mark level. While they are strong, they have a low hull to shield hp ratio. Using units with fusion can be used to bypass their shields, such as assault frigates and fusion bombers. Be aware, each guard posts has a compliment of units inside of them, and these units will fly out if any combat capable units go near them, or if the guardpost itself/nearby units and buildings are attacked.<br />
<br />
<br />
<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37149Getting Started2019-11-09T04:57:42Z<p>Democracy? Democracy!: /* AI Progress */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a guerilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 35% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 7 AIP will be added to the AIP floor). This is very important at high difficulty games. At certain intervals of AIP, different things unlock, such as reconquest waves and hunter waves. The AI also techs up it's units at certain AIP thresholds, which means it's waves, wardens, hunters and praetoreans will now be that level minium. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and warden units that spawn in will be at mark 3. Different AI difficulties have different AIP tech thresholds.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37086Getting Started2019-11-05T10:58:17Z<p>Democracy? Democracy!: /* Minor Changes */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor). At certain intervels of AIP, different things unlock, such as reconquest waves and hunter waves. The AI also techs up it's units at cetain AIP thresholds, which means it's waves, wardens, hunters and praetoreans will now be that level minium. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and warden units that spawn in will be at mark 3.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
*Scrapping units no longer gives back a metal refund.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37054Getting Started2019-11-02T15:17:34Z<p>Democracy? Democracy!: /* Major Mechanic Changes */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor). At certain intervels of AIP, different things unlock, such as reconquest waves and hunter waves. The AI also techs up it's units at cetain AIP thresholds, which means it's waves, wardens, hunters and praetoreans will now be that level minium. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and warden units that spawn in will be at mark 3.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
**Also they no longer give science AND a ship, but only 1 of the 2. You can also reroll ARS contents.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37049Getting Started2019-11-02T00:57:44Z<p>Democracy? Democracy!: /* AI Progress */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Take only what you need. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor). At certain intervels of AIP, different things unlock, such as reconquest waves and hunter waves. The AI also techs up it's units at cetain AIP thresholds, which means it's waves, wardens, hunters and praetoreans will now be that level minium. For example, if the AI is at tech level 3, all waves will contain units at mark 3 and warden units that spawn in will be at mark 3.<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37048Getting Started2019-11-02T00:55:17Z<p>Democracy? Democracy!: /* Increasing AI Progress */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor: 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37047Getting Started2019-11-02T00:55:03Z<p>Democracy? Democracy!: /* Reducing AI Progress */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 60<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37028Getting Started2019-11-01T07:44:12Z<p>Democracy? Democracy!: /* General Unit Prefixes */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 80<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
<br />
Fusion: Attacks ignore a certain % of shields<br />
<br />
Grenade: Attack has AOE<br />
<br />
Plasma:Deals bonus damage to shields<br />
<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37027Getting Started2019-11-01T07:43:56Z<p>Democracy? Democracy!: /* General Unit Prefixes= */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 80<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes===<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
Fusion: Attacks ignore a certain % of shields<br />
Grenade: Attack has AOE<br />
Plasma:Deals bonus damage to shields<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37026Getting Started2019-11-01T07:43:41Z<p>Democracy? Democracy!: /* Newcomers */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 80<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Unit Prefixes====<br />
Pike: Deals bonus damage to units above a certain hp% and units with 90mm armor or higher<br />
Concussion: Deals bonus damage to units with 50mm armor or lower<br />
MLRS: Deals bonus damage to units below a certain hp% and has lots of shots<br />
Fusion: Attacks ignore a certain % of shields<br />
Grenade: Attack has AOE<br />
Plasma:Deals bonus damage to shields<br />
Sabot: Deals bonus damage to units at or above 5tx mass<br />
Nucleophilic: Deals bonus damage to units with an enregy cost of 7,000 or more<br />
Tritium: Deals bonus damage to units with albedo .3 or lower, usually infinite range.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37009Getting Started2019-10-28T08:13:13Z<p>Democracy? Democracy!: /* Major Mechanic Changes */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 80<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
*Human turrets are pretty much multiplied by 5 vs AI turrets.<br />
**They have 5 times the energy cost, 5 times the damage, .2 times the cap, 5 times the health.<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37008Getting Started2019-10-28T07:18:40Z<p>Democracy? Democracy!: /* Minor Changes */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 80<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Super Terminal hack is now done via hack menu, not by capturing the planet. Super Terminal will also always spawn.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=37007Getting Started2019-10-28T01:27:14Z<p>Democracy? Democracy!: /* AI Progress */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. AI progress (AIP) measures how much attention the AI is directing towards you. If you play this game like a conventional RTS, taking everything from the AI in a methodical way, eventually the AI will overpower you and push you back, all the way to your homeworld and then probably kill you. You must play like a gurilla resistance. Hit and run. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the dark spire) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 4 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*Destroying AI alarm post (whether by your own doing or it's self destruct mechanism): 5<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
*Destroying AI data center: 20<br />
*Destroying the last AI co-processor: 140<br />
*Holding major data center: 80<br />
*Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
*Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36989Getting Started2019-10-26T07:43:44Z<p>Democracy? Democracy!: /* Major Mechanic Changes */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
*NO DEEPSTRIKE PENALTY!<br />
**Deepstrike to your hearts content!<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36988Getting Started2019-10-26T06:36:33Z<p>Democracy? Democracy!: /* General Tips */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36964Getting Started2019-10-25T06:04:19Z<p>Democracy? Democracy!: /* Minor Faction Crash Course */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! Certain minor factions have their own AIP values, so the AI will also give them a threat rating. Each minor faction increases the AI's budget, but this budget can be used exclusively against minor factions only. If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station. A legitimate strategy is allowing marauders to take their own planet deep inside AI territory and allowing them to build up. This will cause the AI to dedicate some of it's wave budget against marauders and not you, so you can have an easier time defending against AI incursions. Just remember, the marauders will target you if they consider you a better target.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
**The longer you wait before hacking a tech vault, the bigger the discount is (example, generalist costs 2000 knowledge to upgrade from mk1 to 2 and 4000 from mk2 to 3. If I hack a tech vault that has generalist tech now, I will save 2000 knowledge. If I upgrade generalist first THEN hack the tech vault, I save 4000 knowledge.<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36956Getting Started2019-10-25T04:12:52Z<p>Democracy? Democracy!: /* Marauders */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets and then colonize said planets. If the planet has a command station on it (friendly to AI or friendly to human marauders), marauder starbases cannot be mark 3. This will cause the marauders to start growing near exponentially. While raiders may cause problems, they will prefer to target weaker planets, so you can goad them into attacking the AI by weakening an AI planet next to marauders, and retreating when the marauders come in to sweep up the remaining AI forces. As long as your planets are stronger than nearby AI planets, the marauders will prefer to raid the AI over you. Keep in mind, if you try to exploit colonizing neutral planets caused by marauders, you still have to pay the AIP price tag if you place a command station.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
**The longer you wait before hacking a tech vault, the bigger the discount is (example, generalist costs 2000 knowledge to upgrade from mk1 to 2 and 4000 from mk2 to 3. If I hack a tech vault that has generalist tech now, I will save 2000 knowledge. If I upgrade generalist first THEN hack the tech vault, I save 4000 knowledge.<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36954Getting Started2019-10-25T03:58:21Z<p>Democracy? Democracy!: /* Counter Attacks/Reprisal Waves */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled on an AI planet, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will start with a 2 minute timer. This timer will not begin counting down as long as you have enough strength present on the planet. The strength requirement to pause the timer is 1/5th the counter attack's strength. Once you do not meet the strength requirement to stall the timer, the timer begins counting down. As soon as the counter attack timer reaches 0, the counter attack will spawn it's units on the planet where your forces died. These units are a part of the threat fleet, so be careful! They may strike wherever and whenever you least expect!<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
**The longer you wait before hacking a tech vault, the bigger the discount is (example, generalist costs 2000 knowledge to upgrade from mk1 to 2 and 4000 from mk2 to 3. If I hack a tech vault that has generalist tech now, I will save 2000 knowledge. If I upgrade generalist first THEN hack the tech vault, I save 4000 knowledge.<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36952Getting Started2019-10-25T03:41:28Z<p>Democracy? Democracy!: /* Counter Attacks/Reprisal Waves */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes. Whenever a flagship gets crippled, it adds ALOT of strength to the AI counter attack. Take special care not to have any flagships crippled. Whenever a counter attack is building up, notified in the top left of the screen, it will not begin counting down it's timer<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
**The longer you wait before hacking a tech vault, the bigger the discount is (example, generalist costs 2000 knowledge to upgrade from mk1 to 2 and 4000 from mk2 to 3. If I hack a tech vault that has generalist tech now, I will save 2000 knowledge. If I upgrade generalist first THEN hack the tech vault, I save 4000 knowledge.<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36951Getting Started2019-10-25T02:55:32Z<p>Democracy? Democracy!: /* Human Exclusive */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes.<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
**The longer you wait before hacking a tech vault, the bigger the discount is (example, generalist costs 2000 knowledge to upgrade from mk1 to 2 and 4000 from mk2 to 3. If I hack a tech vault that has generalist tech now, I will save 2000 knowledge. If I upgrade generalist first THEN hack the tech vault, I save 4000 knowledge.<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
*Mobile builders<br />
*Transports and Assault transports (role taken by flaghips)<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36950Getting Started2019-10-25T02:51:57Z<p>Democracy? Democracy!: /* Minor Changes */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes.<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
**The longer you wait before hacking a tech vault, the bigger the discount is (example, generalist costs 2000 knowledge to upgrade from mk1 to 2 and 4000 from mk2 to 3. If I hack a tech vault that has generalist tech now, I will save 2000 knowledge. If I upgrade generalist first THEN hack the tech vault, I save 4000 knowledge.<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
*Distribution nodes no longer give metal, instead they give science and hack points.<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!https://wiki.arcengames.com/index.php?title=Getting_Started&diff=36949Getting Started2019-10-25T02:51:32Z<p>Democracy? Democracy!: /* Minor Faction Crash Course */</p>
<hr />
<div>__FORCETOC__<br />
== Newcomers ==<br />
<br />
'''Welcome to AI War 2!'''<br />
<br />
AI War 2 is a combination of RTS, 4X, and Tower Defense. You'll be continuously commanding units in battle, explore the galaxy, and defend your planets all at once.<br />
<br />
It's recommended to start with the tutorials.<br />
<br />
Once those are done (or for the impatient), look in the Quick Start section of single player and check out one of the beginner situations. This should help you familiarize yourself with the game's mechanics and quirks. There is also a lot of "How to Play" documentation available from the in-game main menu. <br />
<br />
In general, AI War 2 isn't about going guns blazing and capturing everything in sight. That'll just get you killed. It's about taking only what you need and being as quiet as possible so you don't draw the attention of the AI. The AI doesn't play by the rules, or rather, it plays by a different set of rules. The AI can afford to throw countless ships at you. You (in general) can't do the same. Pick your targets strategically, methodically and carefully. Don't be afraid to cut and run if you start loosing a battle.<br />
<br />
At the top of the UI, you'll see a big red number with the accompanying letters AIP. This is AI Progress, AKA how pissed off the AI is against you. The higher this number rises, the more attention the AI directs to you. At the start of the game, the AI is busy attending to business outside the galaxy (it's probably trying to fight the Spire in the Andromeda Galaxy), but as you start taking planets from the AI and destroying its infrastructure, it'll start turning its attention towards you. More on this below.<br />
<br />
Remember! There are many different ways to play this game. The game is fluid, and what may work against one AI type may not work against another, so adapt and revise how you play constantly. Variety is the spice of life after all.<br />
<br />
The AI can be divided into 6 components, AI Sentinels, AI Threat, AI Warden Fleet, AI Hunter Fleet, AI Instigators and AI Praetorian Guard.<br />
*The AI Sentinels are the main AI faction you'll be fighting. AI Sentinels are usually dormant, found inside Guardposts, or sent as attack waves towards your planets. Most AI units start out as Sentinels but can become AI Threat under certain circumstances, usually after a certain amount of time after you aggro them.<br />
*The AI Warden Fleet are used by the AI to defend only. They will never be committed to an attack on your planets.<br />
*The AI Threat are AI forces actively waiting to strike. These units are ready to come at any time they sense a weakness. Threat is provoked typically by AI defenders who escape a planet after you attack it, or the remainder of defeated waves. If Thread doesn't find a suitable target to attack after a while, those units will join the Hunter Fleet.<br />
*The AI Hunter Fleet will constantly probe your planets for weaknesses and will attack whenever they feel like they can win.<br />
*The AI Instigators are not immediately apparent until later into the game. Every hour or so, an Instigator base will spawn somewhere in the galaxy. Instigators spawn close to your homeworld and on low level planets initially, but as the AIP becomes higher, they will spawn farther away and on higher mark planets. Instigator bases have a variety of nasty effects, ranging from increasing the amount of strength the AI will put into its waves, to spawning units every now and then to attack you. Instigators are usually not immediately threatening, but do not take your time dealing with them. The longer they remain active, the deadlier they get!<br />
*The AI Praetorian Guard behaves like the AI Warden Fleet, except they will only appear near and on AI home worlds and WILL attack any nearby human planets.<br />
<br />
===Difficulty===<br />
AI War's difficulty is non linear. It's more like an exponential curve between 10 points, so difficulty 1-4 isn't to much of a change, difficulty 5-6 is when the AI starts getting notably more powerful, difficulty 7-8 is when the AI really starts kicking you in the shins, difficulty 9 is nigh impossible, difficulty 10 IS supposed to be impossible (if you somehow manage to beat difficulty 10 without cheating or heavily stacking the odds in your favor, please report it to mantis bug tracker).<br />
<br />
When setting the difficulty for the AI, there are 3 main components, the base AI/AI sentinels, the AI wardens and the AI hunters.<br />
<br />
*Increasing AI sentinel difficulty affects the game the most. The default difficulty is set to 5, but the real fun/challenge begins at 7. at lower difficulties, the AI is... pretty much lobotomized and is nowhere near as intelligent as it could be. Its ships pick less than optimal targets, it will never retreat its forces, and it tends to underestimate human defenses, but as you turn up the difficulty, the AI gets much more intelligent, and will actually start overestimating your defenses, causing it to send more forces than necessary to be sure, its units will target other units it's strong against, and will even attempt to slip some attacking forces behind your planets when a big battle takes place. Many nasty things are locked behind difficulty 7.<br />
*Increasing AI warden difficulty will increase how many wardens will spawn at the start of the game, as well as increasing the maximum strength cap of the warden fleet. Increasing the AI warden difficulty also allows the warden fleet to get closer to your planets as well as how intelligent they are. At higher difficulties, the Warden Fleet gets access to more powerful units up to and including GOLEMS. At low difficulty levels, the Warden Fleet will attack more recklessly.<br />
*Increasing AI hunter difficulty will increase how many hunters spawn at the start of the game. Once the difficulty high enough, the hunter fleet starts getting bonus ships constantly throughout the game, rather than having to wait for threat ships to transition to hunters. Just like AI wardens, At high enough difficulties, the Hunter Fleet gets access to more powerful units up to and including Dire Guardians. At low difficulty levels, the Hunter Fleet will attack more recklessly.<br />
<br />
===How DOES The AI Work?===<br />
The AI has an "income" that it can "spend" on various "budgets". These budgets are Reinforcement, Wave, CPA, Warden, Hunter, Praetorian, Wormhole invasion, Reconquest and possibly more. As you increase the AIP and difficulty of the game, the AI gets a bigger income increase and thus more "buying" power. Let's look at this in a simplified way. Let's say that the AI wants to attack a human planet. It needs to build up that fleet using raw materials (income), but must also consider committing some of these soon to built ships to defense, lest the pesky humans perform a counterattack. After finishing building the ships it wants, the AI dedicates (spends) most of the newly created ships to attacking the human planet it wants, and the rest on reinforcing various key points (wave and reinforcement budget). The AI's behavior is also dependent on it's difficulty. <br />
<br />
'''The AI's Attack Process'''<br />
====Standard Waves====<br />
Approximately every 10 minutes, the AI will send a wave of units at you, displayed at the top left. As AIP increases, so does the strength of the wave. The AI at lower difficulties will target its waves at any planet you own with no clear objective in mind. Its attacks are also suicidally overconfident. The units that attack also tend to not retreat, and thus will not become a part of the threat or hunter fleet. As you increase the difficulty though, The AI's attacks tend to get more intelligent, and will actually overestimate how powerful your defenses are, causing it to often picking on the weaker planets or one with irreplaceable capturables on it. This also gives the AI a more "cowardly" attitude towards its attacks on the surface, as the AI's units will now attempt to retreat instead of fighting to the death. This will cause them to become threat fleet and if enough threat is accumulated, then that threat may just roll up to your homeworld in one massive wave. At higher difficulties, if you have multiple connected worlds (most often your homeworld and its adjacent planets), the AI will often attempt to sneak some of a wave's units past your defenses to raid vulnerable worlds behind. This can lead to a sudden power outage if the AI manages to snipe an economic command station planet behind a military station planet. Waves however have one weakness. They can only spawn from AI warp gates. ALL AI planets at the start of the game will have one warp gate. Warp gates allow waves to attack any planets adjacent to the planet the warp gate is located on. As a strategy, you can even cancel incoming waves by destroying the warp gate they are traveling to! However be aware, this causes the AI to choose a different location for that wave to spawn and that wave will have bonus strength attached to it! If there are no planets the AI can attack, due to the lack of warp gates near hostile planets, the AI will instead spawn waves on one of its own planets as long as there is a warp gate present, and that wave will immediately become threat. Every AI planet has a wave "theme". For example, an AI planet might send in large groups of raiders, raptors and stingrays, which are fast swarmers. Other AI planets might send in small groups of vanguards and pulsar tanks, which are slow but mighty units. Knowing which planets will send what type of wave theme, you can base your defenses around this.<br />
<br />
====Reconquest Waves====<br />
Once you cross a certain AIP threshold, the AI will begin sending out reconquest waves, which will aim to take back planets you have stolen from the AI, planets owned by hostile to AI minor factions, or already neutral planets. Reconquest waves have their own budget, separate from Wave budgets, and it's not uncommon for the AI to time a regular wave with a reconquest wave, making you fight a 2 front battle. Reconquest waves spawn threat like regular waves but the wave comes with a special ship called the usurper, and as long as that ship lives, the AI will be able to rebuild whatever was on the planet originally! As long as there is one AI opposed unit on the planet, the ursurper CANNOT rebuild the AI's stuff on the planet. If there is no more opposition, the usurper transforms in to a reinforced AI command station, with more health than a regular command station, and will slowly begin warping in the same guardposts and structures overtime. However, a reconquested planet's command station and warp gate will no longer give out any AIP. So if you want to take back the planet, you can do so without incurring any AIP.<br />
<br />
====Counter Attacks/Reprisal Waves====<br />
Whenever you lose ships on an AI controlled planet, the AI will use the scraped remains of your ships to assemble a counter attack. The more ships you lose, the stronger the counter attack becomes.<br />
<br />
====Cross Planet Attack====<br />
Every 2 hours or so, the AI will unleash a Cross Planet Attack (CPA). A CPA is when the AI spawns in a massive amount of ships as threat, and they'll be ready and waiting to raid your homeworld when they feel that they can take it. A CPA spawns its units over any AI "Reinforcement Points" (ie Guard Posts and Command Stations). Once the units spawn, they tend to converge on an AI planet closest to your homeworld, and once they gather enough strength will simply charge towards your homeworld in an attempt to cut the head off the snake. If you raid the planet the CPA's units are gathering on, they tend to disperse and choose a different planet to attack from a different angle. CPAs are no joke, and it's not uncommon for people to die on them the first time around.<br />
<br />
====Exo Wormhole Invasion====<br />
[INFO REDACTED] nothing to see here. Move along<br />
===AI Progress===<br />
AI war is a balancing act. You must make sure you can increase your power, without tipping the AI about how strong you really are. Every planet has an AIP price tag that you can see by hovering your mouse cursor over that planet in the galaxy map. The AIP price tag is only paid whenever you or a minor faction allied to you destroys the AI command station. If a Hostile to all faction (like the marauders) destroys the AI command station, then you don't pay the AIP price tag. HOWEVER, if you decide to colonize the planet after the hostile to all faction destroys the command station, then you DO pay the AIP price tag. There is also the AIP floor, which is the minimum value the AIP can be, in case you dedicate to reducing AIP early. 20% of AIP incurred is added to AIP floor (e.g, an AI command station costs 20 AIP to destroy, so therefore 5 AIP will be added to the AIP floor)<br />
<br />
There are many ways to Increase AIP, but very few ways to decrease AIP.<br />
====Increasing AI Progress====<br />
*Destroying AI command station: 20 (includes warp gate)<br />
*Destroying AI warp gate: 5<br />
*Destroying AI troop accelerator: 5<br />
*Destroying AI black hole machine: 5<br />
*Destroying AI attack amplifier: 5<br />
*Destroying AI co-processor (first 3): 20<br />
*AI risk analyzer fires off: 1 per risk analyzer every hour<br />
*Failing Spire Archive hack: 80<br />
*Destroying AI overlord phase 1: 100<br />
<br />
====Reducing AI Progress====<br />
Destroying AI data center: 20<br />
Destroying the last AI co-processor: 140<br />
Holding major data center: 80<br />
Holding Risk Analyzer: 2 per held risk analyzer every hour<br />
Super terminal hacking: varies<br />
<br />
===Minor Faction Crash Course===<br />
It's not just about you and the AI. There are all sorts of other factions roaming the galaxy! From the swarming nanocaust, to the singular devourer golem, here's most things you need to know about the minor factions of AI War 2! If you want to experience minor factions without spoilers, don't scroll any further!<br />
<br />
====Human Resistance Fighters====<br />
Probably the only faction in the entire game that WANTS to help you win! These helpful fellows will show up whenever you attack an AI planet or a hostile force attacks one of your planets. Whenever either conditions are met and enough time has passed, these guys will send in a group of reinforcements to do battle with hostiles. They spawn in at the edge of a planet's gravity well. Don't rely heavily on them however, as by themselves, they won't accomplish much. They work similarly to the AI, in that they get a budget that slowly adds up, and send a wave to assist you when there is enough budget and combat is happening. Whenever the fighting is over and there are survivors, they will warp away from the planet and will refund their budget. Unlike the AI, Human Resistance Fighters will not mark up their units as AIP increases, so their units will remain weak throughout the game, but their income increases over time, so the longer the game goes on, the more often you'll see them. The higher the intensity of this faction, the more often they show up and their budget grows faster.<br />
<br />
====Marauders====<br />
These guys will fight everyone by default, picking on whoever is the weakest in their eyes. They'll fight you, the AI, and other minor factions. Similarly to HRF, they'll spawn at the edge of a planet's gravity well. If nobody opposes them and at least one marauder is still on the planet, then the marauders will start construction of starbases and turrets. Over time, marauder starbases will mark up, which makes them more durable and spawn more powerful defending units. Once a starbase reaches mark 3, they will start spawning in raider ships (not to be confused with the strikecraft or frigate) who's explicit purpose is to destroy opposition on other planets.<br />
<br />
===General Tips===<br />
*Don't attempt to conquer everything, only capture planets that have something important/you need, or have strategic value. A planet that has a Zenith Power Generator or a fleet, or worlds directly adjacent to your home world are good for example.<br />
*At certain AIP points, the AI "techs up" its units, so that the Warden Fleet, Hunter Fleet, and waves will be one level higher. This is a major buff to the AI's strength, so be careful about increasing the AIP too much too quickly. You can tell when those points are by clicking on the AIP icon in the resource bar at the top of the screen.<br />
*There is a cap to how strong the Warden Fleet can get. Once it reaches that cap, any resources devoted to the Warden Fleet instead adds to wave budget. IF you see waves suddenly spike up in strength and no/very little AIP has increased, it's probably because the Warden Fleet is at its maximum capacity. Start grinding down the Warden Fleet to return waves to normal strength.<br />
*Neutering planets refers to killing everything on an AI planet except for the Warpgate and Command Station. This makes the planet almost harmless to travel through. Don't just leave it. Note: The AI can rebuild turrets if they were originally around the Command Station on the planet. Be aware.<br />
*Cross Planet Attacks are best dealt with piecemeal. You don't want to have a sudden rush of AI units barge into your homeworld while you're dealing with something else on a different planet. Generally, the units from a cross planet attack will wait outside one of your planets, and once they have amassed enough units or feel confident enough to take on your planet they will charge all at once. While they are gathering, find the planet they are on and kill off as many as you can. While this will typically cause them to retreat and go to a different planet, it's better to deal with that threat a little bit at a time.<br />
*Find and hold (by default) both major data centers for a HUGE AIP reduction.<br />
*Reconquest waves happen once you cross a certain AIP threshold. You can click on the AIP icon in the resource bar at the top of the screen to see what that point is.<br />
*Spending Science on ship upgrades is more useful early than on economics<br />
* ARSs and Tech Vaults are very strong early-game objectives<br />
**The longer you wait before hacking a tech vault, the bigger the discount is (example, generalist costs 2000 knowledge to upgrade from mk1 to 2 and 4000 from mk2 to 3. If I hack a tech vault that has generalist tech now, I will save 2000 knowledge. If I upgrade generalist first THEN hack the tech vault, I save 4000 knowledge.<br />
*Strength does not consider unit counters. 500 pike corvettes have more strength than 300 v-wings, but since v-wings counter pike corvettes, they'll win, despite having an inferior strength value. Carefully consider if you can win against the AI even if your strength is higher than it's.<br />
*AI planets are either on alert, or not on alert. An AI planet that's on alert will very likely receive reinforcements, where non alert planets will almost never be reinforced. An AI planet will become alerted if it is adjacent to a neutral or Human planet, when it has hostile military forces on it (not necessarily Human), when an adjacent planet has hostile military forces on it.<br />
<br />
==== The Intel Menu ====<br />
The Intel Menu in the sidebar is invaluable for figuring out what targets to prioritize in game. There are a lot of different categories of things it tells you about, including where you can get resources, planets of yours you need to defend, where important capturables or destroyables are, etc....<br />
<br />
===Abbreviations===<br />
*MDC: Major Data Center<br />
*CPA: Cross Planet Attack<br />
*ZPG: Zenith Power Generator<br />
*ZMC: Zenith Matter Converter<br />
*ARS: Advanced Research Station<br />
*IGC: Intra-Galactic Coordinator<br />
*ZT: Zenith Trader<br />
*AIP: AI progress<br />
*ST: Super Terminal<br />
*SA: Spire Archive<br />
*DSVG/VG: Dark Spire Vengeance Generator/Vengeance Generator<br />
*DS: Dyson Sphere (Note: Dyson Sphere and Dark Spire both have the same abbreviation, DS, so read the surrounding text to see what which faction someone is talking about)<br />
<br />
== Veterans ==<br />
<br />
Welcome back to AI War. The AI has taken over the galaxy (again), but lots of things have changed.<br />
<br />
===Major Mechanic Changes===<br />
*In general, AI War 2 is not as micro intensive as classic, and many things have been removed due to redundancy, clutter, or making things easier to understand.<br />
*Fleetships are renamed to Strikecraft and Starships are renamed to Frigates.<br />
*Instead of producing Strikecraft and Frigates immediately, they are bound to a Flagship. You can't just, say for example, immediately build 150 Fighters, Bombers, missile frigates and a bonus ship. Instead, you must have a Flagship that has those units attached to it. Once built however, there is no limit to how far a Strikecraft or frigate can go across the galaxy, like AI War Classic.<br />
**Flagships are captured much like Golems from Classic and they are what lets you expand your military power. Flagships come in 3 varieties, strike (generic transport Flagship, but many Strikecraft and Frigates), officer (Flagship has a gimmick or is very powerful on it's own) and Lone Wolf fleets (no supporting Strikecraft or frigates, but the Flagship is INSANELY powerful).<br />
**Flagships cannot die. Instead, when they reach 10% health, they become crippled. While crippled, a Flagship cannot have Strikecraft or Frigates assigned to it built and if it has a weapon, can't shoot. The Flagship can still move however and be repaired back to full strength. While this means that you can't lose your Golems anymore, the AI still gets LOTS of salvage for reprisal.<br />
*Units now have shields, which is basically a second health bar. However, anything with a fusion attack such as Raider Frigates and Bombers will ignore a certain % of shields. (For example, a Raider Frigate has 90% fusion damage, so an attack that deals 1000 damage will decrease the target's health by 900 and shields by 100)<br />
*Scout Strikecraft no longer exist. Scouting as a whole has been reworked.<br />
**Planets have 4 states, unscouted, explored, watched and permanently watched.<br />
***Unscouted planets cannot be traveled to at all. Explored planets can be moved to but you have no vision on that planet. Info on explored planets are on a "last seen" basis. Watched planets are planets that you can see in real time because you have a unit there or something providing vision. Permanently watched is the same as watched but no unit is required to be there in order to see what's going on. You scout by destroying AI command stations, which causes 8 unscouted planets to become explored.<br />
*ARS no longer give their contents via capturing their planets, but by hacking them.<br />
*Hull and ammo types are gone.<br />
**These have been replaced with the stats Armor, Albedo, Engine and Mass. More info can be found on [[AI War 2: Units of Measurement]]<br />
*You no longer spend knowledge on individual unit upgrades, but instead on categories divided into weapon types and hull types.<br />
**While you spend more knowledge short term, with multiple units upgraded at once, you save knowledge long term.<br />
**All ships are no longer built as individual marks. Instead they are upgraded all at once (For example: if you have MK2 V-Wings somewhere in the galaxy, and you upgrade the Generalist tech category, ALL V-Wings currently alive and built after this upgrade will become MK3.)<br />
**Units can now be upgraded to mk7<br />
*Hacking points are now earned per planet, rather per AIP.<br />
**Each planet has 30 Hacking points and you can only earn them by building a Command Station on that planet.<br />
**Hacking points can no longer go into the negative.<br />
*Colony ships no longer exist.<br />
**In order to build Command Stations on planets, you must have a Flagship on that planet as well as no AI Command station.<br />
*Supply mechanic no longer exists<br />
**So feel free to build whatever wherever.<br />
*Energy collectors do not exist anymore. Instead, Economic Command Stations produce 2 energy collectors' worth of energy, Logistical Command Stations produce 1 energy collector's worth of energy and Military Command Stations produce no energy at all.<br />
*Salvage no longer exists, so it's pointless to build a world designed specifically to collect it, but you can make a point of farming EXP to increase that Command station's Level to make it harder for the AI to remove.<br />
*Cloaking is no longer an "on/off" state, but rather each ship that has cloaking has a certain amount of cloaking points, and every time it shoots or gets detected, it loses cloak points by a set amount or certain rate respectively. Once cloak points reach 0, THEN, the ship is no longer cloaked. A ship cannot recharge cloak points until all its cloak points reach 0 and is not being detected or firing for 5 seconds.<br />
**Cloaking boosters have been removed, so a a sentry frigate can't cloak boost another one to be invisible to other detection sources.<br />
*AI strategic reserve has been reworked into the praetorian guard, so they are always "visible"<br />
*Engineers can no longer go through wormholes.<br />
**variants that CAN go through wormholes are called Combat Engineers.<br />
*Currently, no unit teleports<br />
*Science labs have been removed.<br />
**Command stations automatically collect science. You can still collect science from neutral planets by hacking.<br />
*Mercs have been removed so you can't just hire mk4 units right off the bat.<br />
**They have been reworked into Outguards, which work something like this. Hack an Outguard beacon to gain access to various Outguards. You can immediately call in 1 Outguard. for every 100 AIP you gain, you can summon another Outguard. Having 200 AIP and then hacking an Outguard beacon gives you 3 free calls. <br />
*Every fleet and command station can gain exp to level. Leveling up upgrades the flagship/command station and a few units attached to it. eventually you can spend skill points on stuff (this has yet to happen)<br />
*Neinzul (currently) no longer exist<br />
**Cries in Neinzul<br />
*Multi shot units will no longer shoot their excess shots at a single target.<br />
**While yes this means that MLRS will waste a ton of dps vs single targets, at least the AI superfortress can't focus all it's fire on one target.<br />
*You no longer get more of a turret by upgrading it's mark, instead you must capture and hold Global Command Augmenters, which will give you a set amount of turrets. Military stations get double the amount listed, Logistics and homeworld get the amount listed and Economic stations get half the listed amount<br />
*AIs no longer use carriers for massive amounts of free roaming threat. Instead, units of the same type will begin stacking. also applies to humans and other minor factions<br />
**Stacks have unique interactions, such as taking double damage from beam type weapons and AOE explosions,as well as splitting when affected by a status effect for to long. A unit stack multiplies the damage of the unit by the stack amount up to 5, and for every 5 ships inside the stack, another "shot" is added<br />
<br />
===Minor Changes===<br />
*Wormhole guardposts no longer exist.<br />
**Yay! No more annoying 2 damage attacks<br />
*The Devourer Golem is killable (Fun fact: In Classic, the Devourer Golem used to be killable, but had insane vampirism. But then the Fallen Spire ships got added, which allowed players to cheese and destroy it rather easily. It was quickly made truly invincible after that.)<br />
**He respawns though. For some reason he also likes to eat the Zenith Trader too.<br />
*Translocation isn't an instant teleport, but rather a burst knockback, which is essentially the same thing.<br />
*Harvester exoshield has been removed<br />
*Decloakers no longer exist. Their role has been given to scout/sentry frigates.<br />
*There is no reclaimation. Parasites and the like now cause zombification.<br />
*By default, music playing is AI War 2 exclusive. If you wanna enable Classic music, check out the options menu.<br />
*ALL forcefields reduce damage output of units being protected by them. Even AI units are not spared from this penalty.<br />
**Hardened forcefields have been removed.<br />
*Mobile builders have been removed<br />
**If you want to build beachheads, look for citadels and battle stations.<br />
*Science labs and Hackers have been removed<br />
**Science labs' job has been given to command stations and flagships commence hacks now.<br />
*Advanced factories, Core fabricators and Experimental fabricators have been removed<br />
*Missile silo and warheads have been removed<br />
**Goodbye Nuclear missile mk3 :(<br />
*Human warp gates have been removed<br />
*Mini forts, Fortresses, Super fortresses and Modular Fortresses have been removed.<br />
**The AI still gets fortresses and super fortresses.<br />
*Alarm posts now trigger automatically rather than activate when the AI command station is destroyed. However they no longer have a 50% chance of alerting other AI forces if destroyed manually or by hacking.<br />
*Ion cannons and OMDs are no longer captured by taking over the planet, but by hacking.<br />
*Most AI capturables (like Black hole machines) can no longer be converted to your side.<br />
*Beam weapons are now simplified into one type, rather than having human, spire and zenith variants. <br />
*The beam weapon damages a certain amount of targets in a line, and if that target amount is exceeded, then the max damage per target hit is lowered proportional to targets hit.<br />
*Co-Processors no longer prevent capturing neutral units/structures<br />
<br />
===List of Currently Removed Content From Classic===<br />
==== Human Exclusive====<br />
*Advance Warp Sensor<br />
*Human warp gate<br />
*Missile Silo and associated warheads<br />
*Harvester Exo shield<br />
*Hackers and their associated extensions<br />
*Science labs<br />
*Warp Jammer station<br />
*Neinzul as a whole, including hybrid hives and silos<br />
<br />
====Capturables====<br />
*Radar Jammers<br />
*Armor Boosters<br />
*Counter Spy<br />
*Armor Booster/Inhibitor<br />
*Interplanetary Munitions Booster<br />
*Advanced Factory<br />
*Core and Experimental Fabricators<br />
*Human Rebel Colony<br />
*Captive Human settlment<br />
<br />
====AI Exclusive====<br />
*Counter Attack Guard Post<br />
*Core Shield<br />
*Carriers<br />
*All brutal guard posts<br />
*Several types of guardian<br />
*The avenger<br />
<br />
===Minor Faction Changes===<br />
<br />
====Dyson Sphere====<br />
The Dyson Sphere mechanic wise hasn't changed to much from it's incarnation in classic, however it has a whole slew of new interactions and units.<br />
<br />
*It's units are no longer restricted to being laser gatling guns in space. Divided into 4 units, Sentinel, defender, bulwark and bastion<br />
*Dyson Antagonizer is no longer a part of hybrid hives, but instead a part of the faction itself after being set to faction intensity 8.<br />
*You can now "hack" the Dyson Sphere for various results, be it increasing unit production or allowing you to produce dyson units yourself! Of course hacking the Dyson Sphere may make it a little bit miffed at you.<br />
*Multiple Dyson Spheres can exist at once now! But all it takes is just one antagonizer to make ALL of them mad...<br />
<br />
====Marauders====<br />
Marauders have changed pretty radically! They are now basically a more evil and simplified version of you!<br />
<br />
*They will no longer throw a few bombers and missile frigates at you or the ai, they will instead attempt to actually colonize planets!<br />
*They still spawn in like classic at the edge of a planet's gravity well.<br />
*Once all oposition has been removed, they will begin colonizing the planet by spawning in starbases and building defense turrets.<br />
**Starbasese mark up over time and once they reach mark III, they will begin to spawn raider frigates (not to be confused with the blazing fast raid frigates) that will attack the closest weakest planet available. A starbase cannot be mark III if there is a planetary controller already planetside (AI or Human command station); this is generally only pertinent for AI or Human allied marauders.<br />
*Starbases can have at max between 6 and 15 (depending on intensity of faction 6 being on int 1 and 15 being on int 10).<br />
*After raider frigates have cleared out human/AI forces, they then colonize that planet, starting the cycle again.<br />
<br />
====Dark Spire====<br />
Still the same grumpy xenophobic fellows from the first game, with a few new interactions.<br />
*You can obtain Dark Spire ships by hacking one of their vengeance genrerators.<br />
*You can also kill vengeance generators now by hacking them to render them vulnerable.<br />
*Vengeance strikes still occur, and you can cause them manually via hacking.<br />
*Hacking a vengeance generator causes it to accumulate energy over time, so make sure you know what your doing.<br />
*Dark Spire wards, used exclusively by the AI insta kills any Dark spire that roam onto planes with one.<br />
*If there is a VG on a planet without any other ships, and there is an adjacent planet without any ships, the Dark Spire can spawn a new VG on that adjacent planet.<br />
<br />
====Astro Trains====<br />
These guys are nowhere near as annoying as classic, so you don't have to worry about a nuclear train randomly blowing up one of your most important worlds. However they now all function as cargo trains. <br />
<br />
*Give knowledge on death, so you can "farm" them for tech upgrades.<br />
*Come in 3 varieties, Drone (spawns drones to distract you) Combat (focuses on killing your stuff directly) and Tank (has MUCH higher health but only has an anti structure weapon.)<br />
*Can spawn prototype guardians (heroic dire guardians) once a project is complete.<br />
*At max intensity, instead of spawning nuke trains, once an astro train project is complete a familiar ''shadow'' may appear...<br />
<br />
====Zenith Trader====<br />
This guy is still a "neutral" roamer who sells stuff to humans and AI. For some reason the Devourer Golem likes to munch on him. We don't know why, perhaps there's something sinister about the Zenith Trader? Don't worry though, if he dies he'll respawn.<br />
<br />
*to humans, he no longer sells the crap from classic. Instead he sells controllable macrophages, nanocaust aberration and abominations, Dark Spire eidolons, black hole generators and lesser Z.power generators.<br />
*to the AI he sells ion cannons, OMD, fortresses, black hole generators, troop accelerators and possibly more to be doccumented.</div>Democracy? Democracy!