AI War 2:The Era of Discovery
Contents
Known Issues
- The lobby interface is currently temporary, and undergoing a complete overhaul.
- Beam-weapon style shot graphics don't yet display, and a couple of AOE effects don't show quite correctly yet.
- Various bugs on mantis: https://bugtracker.arcengames.com/view_all_bug_page.php
- Balance needs a lot of attention, with your help.
- The tutorial is currently a not as comprehensive as it could be.
- Multiplayer is temporarily disabled while we focus on tightening up the single-player loop.
- There are still a bunch of ships that we either want to re-implement, or new ideas that we want to implement for the first time.
- There are a variety of ships/units that don't have proper graphics or reuse icons at the moment.
- There is not an in-game way to see and edit the control bindings yet.
- But you can go into the created bindings file inside the PlayerData folder to edit them in a text editor.
What's this phase all about?
Initial thought process was described on Steam: "Retrieval of the Lost Arks" Plus an Essay, Apparently..
The short answer is that we hit a point where the game was fun, but super hard to balance. Rather than focusing on balance in a strictly-numbers sense, we thought it would be more interesting to add a procedural element into ships in order to make each game even more different.
Along with that, we realized just how important the factions are becoming to the game, and how they give more of a sense of life to what is going on. With that in mind, and the since-forever-even-in-AIWC requests of players to make each planet have more unique "terrain" (per se), we thought it was time to start implementing things a bit differently.
The TLDR is that we hit the point where it feels sufficiently like the first game in a really basic mechanics sense, and now it's time to make things unexpected again
Version 0.765
(Not yet released -- we're still working on it!)
- Fix a bug in the mapgen code that could get in an infinite loop
- Fix a few typos in Mercenary Descriptions
- Thanks to Ovalcircle for reporting
- Add a popup notification when the Risk Analyzers are close to firing
- Add a 'primary_unit_must_survive_to_rehire' xml tag for Mercenaries. Setting this to false will mean that you can always rehire a mercenary group even if all its units die.
- Don't allow the mercenary budget to go into debt when purchasing units; this will confuse modders.
- Add a missing word in the description for Instigators
- Thanks to OvalCircle for reporting
- Fix a bug with self-attrition for drones
- Thanks to Ovalcircle for reporting
- Add in Science hacking
- Fix some bugs in the Nanocaust
- Thanks to Ovalcircle for reporting. Note that these changes may well make the Nanocaust more aggressive toward the player. This seems like a good thing
- Improve the Nanocaust notification and objective messages
- Thanks to Puffin for reporting
- Fix null reference exception in Marauder code.
- Thanks to Ovalcircle for reporting
- Fix a typo on Cloaking hovertext
- Thanks to malkiel
- Start of some tutorial revamp
Dyson Sphere Tweaks
- Fix a bug where Antagonized Dyson Spheres weren't producing units
- Allow Three hacks for the Dyson Sphere
- One steals a Dyson Sphere ship design
- One increases the Dyson Sphere's unit production
- One decreases the Dyson Sphere's unit production
Version 0.764 Mercenary Surge
(Released August 30th, 2018)
- Fixed a nullref that could happen in the nanocaust notification display.
- Thanks to HeartHunter7 for reporting.
- Put in better protection and notification for a nullref that could happen in GenerateDysonSphereObjectives.
- Thanks to HeartHunter7 for reporting.
- There is now a better check in findAIKing in the nanocaust function where it will throw a visible error if it can't find an AI king and the game is still going on. If the game is already won, then it just says nothing because that's A-OK.
- Similar logic is now in place for dead humans.
- Thanks to HeartHunter7 for reporting.
- If the player has lost and there is no human king planet, the nanocaust now properly routes randomly.
- Thanks to HeartHunter7 for reporting.
- The "BUG: nanocaustInfectedPlanet, the planet passed in is null somehow" now will give line numbers if it gets triggered, since it is potentially a problem.
- That said, several cases that could lead to that branch have now been fixed, as they mostly revolved around valid missing targets and needing to find a random target.
- Thanks to HeartHunter7 for reporting.
- It appears that the warning "Could not unlock ship line: [whatever] because it was already unlocked!" was being triggered because of duplicate claim calls to ARS units. That should now be fixed so that it doesn't throw the spurious error.
- Thanks to HeartHunter7 for reporting.
- A protection has been put in place to prevent ShipsDying from getting the same ship in it twice in the vis layer. This may not have even been a concern, but because of "MINOR BUG: ship killed is already on Dying list" popping up, it was worth looking at.
- "BUG: ship killed is not part of target squad." is still on the loose, though, but quite rare.
- Thanks to HeartHunter7 for reporting.
- The big scary message of "During placement: Command station already here and placing command station!" is now replaced by a log-style message on the side, instead, like other non-bug-based error messages during placement.
- Thanks to RocketAssistedPuffin and HeartHunter7 for reporting.
- The big scary message of "During placement: entityDoingThePlacing == null!" is now replaced by something much better.
- The new message is: "Construction source died prior to construction start -- cannot build this now."
- Thanks to Badger for reporting.
- Put in better logic that will show us what is really going on when you try to hover over a macrophage harvester whose special faction doesn't have the proper implementation type: it will say what the faction and implementation type actually is as an error in the tooltip, now.
- This was the "System.InvalidCastException: Specified cast is not valid" in Arcen.AIW2.External.HarvesterDescriptionAppender.
- Thanks to HeartHunter7 for reporting.
- Fixed the "data.PerPlanet[X] is null" error from the Dark Spire, which was essentially a race condition and something that we could work around easily once we knew it was there.
- This may have been something that interfered with background thread execution, but it's hard to be sure. Most likely it was not.
- Thanks to HeartHunter7 for reporting.
- Fixed the "BUG: Harvester on [X] has null hdata" issue, which has a less-clear cause but probably was also a race condition of some sort.
- At any rate, simply lazy-initializing this data is harmless and solves the problem, since there is no important data in MacrophagePerHarvesterData that can't be initialized at the time it is needed.
- Thanks to HeartHunter7 for reporting.
- Under the hood, the map generator now logs to your debug log anytime it generates a new map. It logs the type and the seed, but not all the other settings. It also logs when it's complete. So we can see from a log how long something takes if it is slow, which is useful, and if something doesn't complete because of a deadlock or similar. In those instances we'll have the map seed and such so that we should be able to duplicate your settings and remove whatever the deadlock is. It won't cause the map thread to come back from a deadlock, but since those are hopefully going to be incredibly rare that shouldn't be an issue. Main thing is that this will let us test and fix them quickly.
- The internal variable GalaxyCenter has been renamed to GalaxyMapOnly_GalaxyCenter, to make it super clear that this is only for galaxy map generation.
- This was erroneously being used in mercenary code that is planet-based, and thus was putting mercenaries outside the grav well.
- This should have been using Engine_AIW2.Instance.CombatCenter, which is the center for planets.
- However, this didn't actually cause any issues, since it was being overriden anyway.
- Mercenaries that spawn in now do so at 90% of the grav well radius instead of all the way on the border (being all the way on the border causes them to sometimes get stuck on the border).
- Thanks to RocketAssistedPuffin for reporting.
- Fixed an issue with the mercenaries data table where it had a MercGroupName that was being pulled in instead of using the underlying InternalName and DisplayName.
- Related to this, all the display_name fields were blank, so in places that used DisplayName instead of MercGroupName, the mercenary name showed as blank.
- Now everything uses the built-in fields, and the xml files have been updated to include the mercenaries fine.
- Thanks to RocketAssistedPuffin for reporting.
- Fixed a bug where the savegame metadata file would fail to save if certain setup data was missing (such as the map type). This would then cause the game to stall out and give you the "wrong frame for command" error after autosaves attempted.
- The term "Cloaking Points" has been shortened to just "Cloak" in order to prevent its text from running into the next item.
- Thanks to HeartHunter7 for reporting.
- Fixed an index out of range exception that could happen in GetPlanetForInstigatorBase if there were no valid target planets found for whatever reason.
- Fix a bug with risk analyzers
- Fix a bug calculating the strength of secondary units to spawn for Mercenary Groups
- Thanks to RocketAssistedPuffin for the bug report
- Mercenaries were never actually set up to charge the player for their services, heh.
- They now not only charge you, but they give a message when you try to hire them but can't afford them.
- They also show what their costs are in their tooltips, which they previously did not do.
- When they are hired, all players also now get a message saying who was hired, for where, and for how much.
- Mercenary names now show up as red if you can't afford them.
- Thanks to RocketAssistedPuffin for reporting.
- Mercenaries are now only marked as summoned if they actually were successfully summoned.
- If the Hunter Fleet has obtained a usurper (for example, player defends from a reconquest wave but the usurper gets away. Then the usurper joins the hunter fleet), make sure that it claims any planet in the name of an AI faction, not the Hunter Fleet. Also prevent the Nanocaust from claiming usurpers, since otherwise it would wind up claiming Nanocaust planets for the AI.
- Thanks to OvalCircle for bringing this to my attention
- The tooltips for mercenaries now specify what kind of planets they are willing to work on, and if they're willing to be hired on the current planet or not.
- The mercenary hiring header now includes a count, has a better tooltip, and is more clear when there are no mercenaries around.
- Fixed the bug where all the mercenary options were displayed stacked on top of one another.
- The list of mercenary groups that can be hired now only includes a single copy of each mercenary outfit, rather than a copy for each discovered communicator that can hire them.
- Add the ability to have mercenaries controlled directly by the player. To use this, add the field 'donate_to_player=true' to the mercenary XML.
- Currently untested. Let me know if it works
- Added a new SingleMercenaryGroupState that is now serialized on the central MercenaryGlobalData, replacing the old data strucutre that was previously serialized per-communicator.
- Now mercenaries have a properly-global status instead of it being per-communicator.
- The Mercenary data structures in general have been majorly rewritten in order to be fully mod-compatible (using InternalName instead of a manual groupID that is more likely to have conflicts), among other improvements such as making the mercenary status global for each mercenary group instead of tied into the communicator that is able to call them.
- Fixed the bug where in the tooltips the cap of ships was being shown wrong.
- Thanks to Ovalcircle, RocketAssistedPuffin, and zeusalmighty for reporting, and Badger to finding the fix.
- The cap for space docks is now per-planet instead of galaxy wide, and it's now 2 instead of 30.
- Space Docks can now be upgraded for tech cost to get more dock ship cap, make them build faster, have more health, etc.
- It's not a particularly good investment, but it's something that in certain circumstances could be really useful, so this is technically "candy tech."
- The metal cost for Space Docks has also increased from 600 (!?!?) to 35000, which is more in line with other similar ships.
- The shield generator per-planet cap has been dropped to 1 from 2, which makes it so that when you get to high-level versions of these you can't have so very many of them per planet. These are really meant to be scarce. Their max mark level is also now 3 instead of 7, for players only.
- In existing savegames, the AI shield generators will wind up being capped at mark 3 retroactively, as well, but in new savegames that won't be the case.
- Thanks to zeusalmighty for reporting the imbalance here.
- Fixed a bug where mark 2 of ships that have a cap of 1 at mark 1 would still have a cap of 1, but then it would jump to 3 at mark 3. Now it properly goes to 2 on mark 2.
- The game now properly limits what kind of planets mercenaries are willing to spawn on.
- The "modder game command" is a lot more powerful now, with a faction and context being passed in so that you can create ships directly during it.
- Mercenary ships are thus now directly created when you request them, which means that requests can work while you are paused.
- Finished replacing all references to merc communicators instead now being merc beacons.
- 5 beacons now seed per galaxy, instead of 3.
- Fixed an issue where immobile ships could become mobile under certain circumstances since two versions back.
- Thanks to zeusalmighty, Badger, and RocketAssistedPuffin for reporting.
- Protections and logging have been put in that should solve the problem of nullref exceptions after a mercenary unit spawns another mercenary unit on death.
- This hasn't been tested, so if it still breaks in the next version then we'll need a savegame, but that wasn't possible prior to now.
- Thanks to RocketAssistedPuffin for reporting.
- The mapgen seeding of special items and faction goodies is vastly improved.
- Factions that are major (Dyson, nanocaust, etc) should never seed on the same planets as each other anymore.
- The places that these objects will seed is no longer just in the inner part of each planet system, but is specified in mapgen (most are "anywhere" now). This makes things a lot more varied-feeling.
- The actual logic for doing the seeding is now much faster, and does not allow for placing duplicates of the same type on one planet (such as 3 mercenary beacons on a single planet).
- You can now see what mercenary groups a beacon can contact BEFORE you hack it.
New Mercenary Factions By RocketAssistedPuffin
- New Mercenary factions by RocketAssistedPuffin!
- War Harvesters
- Purchase a group of War Harvester bots from a fellow resistance group. These bots harvest metal from their targets and grant it to you. These are put under your command.
- War Siegers
- Purchase a group of War Sieger bots from a fellow resistance group. These bots wield dual mini-plasma cannons for long range devestation. These are put under your command.
- Automated Firesupport
- An abandoned drone factory will supply you with a temporary force of sniper units, if given construction material. These will fight to the death. Lasts 10 minutes.
- Automated Shredders
- An abandoned drone factory will supply you with a temporary force of Cutlass and Vampire units, if given construction material. These will fight to the death. Lasts 10 minutes.
- Automated Construction Swarm
- An abandoned drone factory will supply you with a temporary force of modified construction bots, that spawn smaller copies on death, if given construction material. These will fight to the death. Lasts 10 minutes.
- Anvil Securities
- Before the current war, they used to be a defense contractor. Now, for a price they'll help defend nearby friendly and neutral planets with their Riot Starships and Spiders. Leaves after 10 minutes.
- These came with the following new units:
- War Harvester, War Sieger, Automated Sentinel Frigate Drone, Automated Sniper Drone, Automated Vorticular Cutlass, Automated Vampire Claw, Automated Construction Bot, Mini Automated Construction Bot, Anvil Securities Spider.
- Obviously huge thanks and kudos to RocketAssistedPuffin!
- War Harvesters
Version 0.763 Supersized Ship Caps
(Released August 29th, 2018)
- Fix a bug with the Devourer notifications, a bug with astro train hovertext and a type in Fleetships xml.
- The Sniper fleetship now gets its damage bonus against ships with 1350 speed and up rather than 1800 and up.
- Thanks to RocketAssistedPuffin for suggesting.
- The in-game tooltips now clarify that you have to have no cloak points before any cloaking regen will happen.
- Thanks to RocketAssistedPuffin for suggesting.
- The cloaking points lost by ships should now properly round up instead of down, which should make it 5 shots to decloak instead of 6. Needs to be re-tested, though.
- Thanks to RocketAssistedPuffin for reporting.
- Tractor fields can no longer grab cloaked units. They're considered more of an active ability, whereas gravity fields still slow anything in range.
- If something is already tractored and then cloaks, it will probably stay tractored.
- Thanks to RocketAssistedPuffin for suggesting.
- Fixed a bug where drones would likely sometimes not get created inside their parents. Wasn't likely happening yet, but could have bit us in the future.
- Put in a change that should make it so that drones spawn out of their parent with the same mark level as the parent, OR with the max mark of the drone if that is lower than the mark level of the parent. It was supposed to already be doing that, but apparently was not; it now definitely works.
- Thanks to Badger for reporting.
- Fixed the display of the strength units on the astro train descriptions so that they are of the right visual magnitude. Will need to be tested to be sure it's right, though.
- Thanks to RocketAssistedPuffin for reporting.
- Fixed a bug where the gravity multipliers from turrets were being applied twice, plus having another clamp that was inappropriately lowering things.
- Also made it so that there is now a cap on how slow ships can be knocked from gravity sources that is speed 80 (can be tweaked in external constants with min_move_speed_for_mobile). Engine stun can of course make them slower than that.
- Thanks to Badger for reporting.
- FINALLY and definitively fixed the screen flashing bug, which was an issue with the scale of gimbals getting massive on death when their squad would zoom off to ArcenPoint.OutOfRange.
- This is now capped so that the icons can't ever get that huge, and you should just see the icon flash big in the center of your screen if it were to have the issue now (from some other source of the squad zooming off inappropriately).
- But more importantly, we also fixed the underlying issue with the squads zooming off out of range. This was probably the culprit in some other cases, too.
- Thanks to Badger for a savegame where we could recreate this 100% of the time, and thus were able to hunt it down. And thanks to Ovalcircle, HeartHunter7, RocketAssistedPuffin, and others for reporting the issue.
- Fixed an exception that could happen on astro train notifications.
- Thanks to Ovalcircle for the save.
- Fixed some exceptions that could happen in the ships sidebar.
- Thanks to Ovalcircle for the save.
- Fixed some exceptions that could happen in the escape menu, thus preventing saving.
- Also fixed it so that any future exceptions there can't absolutely halt the game, and will give us better debugging info.
- Thanks to Ovalcircle for the save.
- When ships cloak, no longer show an Explosion. The ships weren't blowing up, it was just playing the explosion animation
- Thanks to RocketAssistedPuffin for the bug report
- Don't show galaxy map link colours during the game lobby
- Thanks to RocketAssistedPuffin for reporting
- Put in some protection logic for preventing nullrefs in UpdateSquadStatusFromEntity, and code that will give us a better idea where the nullrefs are if we didn't get them.
- Same for UpdateEntitiesShownAtPlanetInternal on galaxy map planets.
- Thanks to Badger for reporting.
- Carrier starships can now build far more drones, and build them faster at each mark level the carrier goes up.
- The astro train carrier also builds more drones now, and the non-carrier-style astro train no longer tries to build drones.
- The marauder outposts also now build drones faster at higher mark levels.
- Allow the Nanocaust to still find targets after the AI king is dead
- Bug report by HeartHunter
- Fixed it so that now the human home command stations in the REAL GAME actually spawn away from wormholes. In the prior release's update, we only corrected that for the tutorial map generation!
- Thanks to RocketAssistedPuffin for reporting and providing detailed saves.
- Fixed a bug where cloaking points would actually regenerate even while the ship was not fully decloaked yet.
- Thanks to RocketAssistedPuffin for reporting.
- The wording on the Raptor special spawn-camping ability is now more clear.
- Thanks to HeartHunter7 for suggesting.
- Wormholes can now spawn between 25% and 75% of the way to the outside of the gravity well, rather than 30% to 90% of the way to the outside.
- This prevents issues with scouts that want to run to the outside of the gravity well upon entering a planet not being able to get very far, and it also makes travel distances between planets slightly smaller on average.
- Thanks to RabidSanity for reporting.
- When entities have attack orders, hovering over them will now show what they are set to attack in the tooltip. If they are just auto-firing, it won't show anything, though.
- If a ship is autotargeting other ships, you can now see what it's doing in the tooltip hovering over it. Up to two of the ships it is targeting.
- Add some new optional XML fields for Mercenary groups: primary_strength_aip_multiplier, secondary_strength_aip_multiplier and tertiary_strength_aip_multiplier. So if you define (say) a group to summon 500 primary strength with a 10 AIP multiplier then you get 500 + currentAIP * 10. This allows summoned mercenaries to be scale as the game goes on. Otherwise it's very hard to make Mercenaries useful in the late game but not ridiculously strong in the early/mid game. If you are balancing your own Mercenary company, I would suggest putting more of the strength budget into the AIP multiplier.
- Added in particular for the fastest puffin in the west, since noone else has assumed the mantle of Mercenary Maker
- As sometimes happens with multithreading issues, we're not really sure WHY this was happening, but we know that it was and we're pretty positive we fixed it.
- Basically, ships could wind up being told to autotarget ships that were on the wrong planet, and then would shoot at them. This led to many odd behaviors, as well as a lot of wasted CPU.
- This may have mostly been from ships moving between planets, it's hard to say; in those instances, it now recognizes the disconnect and simply stops targeting the ship that's now on another planet. This is a valid case that gets done away with.
- The other issues may have been some cross-thread mixing of array data somehow, and we've simply rearranged the code some to try to prevent that sort of thing. That seems to have worked, although we weren't super successful actually catching it in the act anyway. At least it's easier to read, now, either way.
- We're also no longer persisting ship autotargeting data to disk, although we are still persisting it across network syncs (of course). This should make savegames a slight bit smaller in some cases.
- Anyhow, this may have been one performance issue in certain long-running savegames, we're not sure. It's an improvement, either way.
- Thanks to Ovalcircle for reporting and for the super useful savegame that let us constantly repro this.
Balance
- A TON of balance work has been done, making ships in general do about 10x less damage than they did before... except for a lot of the fleetships, which were already a lot lower than the larger ships. These now do something like half or two thirds of what they did before, or in a few cases very close to what they did before.
- Overall the idea is that battles should actually last more than an instant now, and in particular the Tesla Turrets have been heavily nerfed so that they don't eat everything.
- This is probably an appropriate range for ships in terms of how fast they kill fleetships, but it may be that starships and other large structures now last too long. Not really sure, we'll see. Hopefully the game doesn't become too slow-feeling from this, but rather just slow-feeling in spots that we can correct.
- This may have even further marginalized snipers, it's hard to say. If anyone wants to fiddle with their balance, please feel free to tell us what you find.
- Thanks to Badger, HeartHunter7, and RocketAssistedPuffin for various reports leading to these changes.
- The squad caps for all of the player fleetships have been tripled.
- This doesn't affect the AI at all, or other factions, but it gives the player a LOT more to work with in terms of churning out lots of ships that cost metal and can do damage, etc. It should make progress far easier to make than before, even with the lowered damage amounts on ships. Players just had too few ships, period, before.
- Player ships will no longer downgrade themselves to the "current" mark level of the player's ships if somehow the player has a higher-mark version of them.
- This is particularly relevant for drones that are spawned, but also for zombies, etc. This changes a lot in terms of power on the player side (doesn't affect AIs or other factions, since they don't use this logic anyway).
- Thanks to Badger for reporting and for the save.
No More Savegame Breaking For Now
- When deserializing a world fails, it now gives a better error message, and also makes sure to clean out WorldDeserializingErrors.txt before writing to it.
- Added a new LookupSwap feature to our core engine, which lets us change the names of game entities without breaking old worlds... so long as an entry is made in the LookupSwaps folder for them.
- The xml files are stored in GameData\Configuration\LookupSwaps.
- An entry for renaming a GameEntity might look like this:
- <swap name="Fortified TeslaTurret" new_name="FortifiedTeslaTurret" />
- If you rename an entity, then all its systems also need to have swap entries that rename the entity-based parts of their name, like so:
- <swap name="Fortified TeslaTurret_TeslaCoil" new_name="FortifiedTeslaTurret_TeslaCoil" />
- And hooray, now we're no longer locked into specific xml entry names if we have typos or in general want to rename ships!
- Because of this addition, at this point we are probably not going to break savegames anymore after all. Certainly not casually. Too many good savegames for testing and bug repros have been coming in, anyway!
Version 0.762 Spreadshot
(Released August 28th, 2018)
- Savegames should be okay in this one, actually. We just were working on bugs and balance.
- Fix a null reference when enabling auto-kite.
- Thanks to HeartHunter and rocket assisted puffin for the bug reports.
- Finally give the user some feedback when they win the game. It's not great feedback, but it's something, and the game now plays the Victory music. There are still some issues with this, for example the "You Won the Game" text in the resource bar scrolls off the edge of the screen.
- A lot of people have complained about this one
- The game now properly takes into consideration damage reductions based on ships being further away from their targets when there is an incoming damage modifier of that (such as the fortified tesla turrets, etc).
- Previously, ships would just sit outside the range and not actually shoot at them, but that should no longer happen.
- Thanks to Zharmad for reporting.
- Now the game will complain about various types of AttackDistance based damage modifiers if they are set up in a way that will bork the AI or make for targeting paradoxes. Nothing was actually set up that way, previously, but it's just future-proofing for modders (and ourselves if we forget).
- Fixed a bug with incorrect overkill detection against squad-based ships since the start of the era of discovery.
- Fixed some lack of clarity with a few variable names that are shot-specific but could be confused as being more generalized. Target is now Target_IfIAmAShot and so on.
- Added post-deserialization logic tree that drives all the way down to entity orders, thus letting us belatedly link up some things.
- The game now keeps track of the amount of attacker damage incoming for a given entity, rather than the count of attackers.
- This is now used in order to prevent massively overkilling targets, and is now used in place of the "even out attackers" logic to make it so that it's "even out damage" instead. Or in the case of priorities, evening out the damage after choosing not to overkill.
- It does this in a rolling fashion that won't let stale data in there.
- Thanks to RocketAssistedPuffin for reporting.
- AI update: the AI ships will no longer retreat if there's a king unit present on the planet they are attacking unless they are outnumbered like 20:1. This makes them much more persistent at winning the game if they're not after you with overwhelming force at the time.
- Show current Hull/Shield values in the tooltip, not always the max hull/shields. Otherwise you had to try to calculate what (say) 35% of 40K is in your head quickly, which isn't much fun.
- Fixed a bug where it would throw an xml exception on load anytime we adjusted the default_should_override_saved_if_older_than_version on keybindings.
- Thanks to Ovalcircle, Badger, RocketAssistedPuffin, and windgen for reporting.
- Altered the game to use Ctrl+Num instead of Shift+Num for setting control groups. Aka to be like every other RTS, including AIWC.
- Thanks to chemical_art, Draco18s, Badger, and zeusalmighty for suggesting.
- Fixed up the tooltip for the control groups button in the dock so that it tells you the correct keybinding to use even if you've rebound the keys.
- Thanks to RocketAssistedPuffin for reporting.
- Fixed a bug where queue-based ship production was being limited by whether or not the planet of the dock/constructor was hostile or not. It would prevent mobile docks from building stuff on enemy planets, for instance.
- Thanks to zharmad for reporting.
- Selecting a hacker will now open the Hacking Menu instead of the Science menu
- Fixed a bug where all ships (yours and the AIs) were mistakenly able to target each other even when they were cloaked, thus leading to ships chasing cloaked ships. Now they can't target them, and lose target on them if they already had targeting on them.
- Thanks to RocketAssistedPuffin for reporting.
- Fixed the selection ring scale for all the various Arks to be what they were pre-pivot. It was woefully undersized in the current version, leading to them being very hard to select.
- That is what the size_scale attribute does, if anyone else is seeing ones they want to tweak further.
- Added a constructor name and description for Gyrn.
- Also made the constructor names for the other constructors more brief.
- Any ships that have the ability to build via build menus now show up as constructors that will make them appear on the sidebar.
- Thanks to RocketAssistedPuffin for reporting the need for this.
- Fixed the BuildingShipsInternally metal_flow to be properly on the actual entity definition for Gyrn, rather than accidentally under its weapon system. This had been preventing it from working properly, previously, as well.
- Thanks to RocketAssistedPuffin for reporting.
- When hovering over a constructor in the docks menu, it now shows you the BuildingShipsInternally speed in metal per second there, too.
- When the throughput of BuildingShipsInternally is missing or less than 0, the sidebar now skips showing you what would otherwise be a builder (useful for those things that become builders at higher marks, like Gyrn).
- Fixed a bug where pausing construction queues gave a message saying it was re-enabling the queue.
- Fixed the spacing of the second column in the tooltips so that shields values larger than 9 million can show without overlapping Armor. Also gave a bit of extra room for the hull column.
- Fixed a bug where you could drive yourself into negative metal using matter converters.
- Thanks to RocketAssistedPuffin for inadvertently showing us his sneakiness on this. ;)
- Matter converters now stop producing energy while your stored metal is zero.
- This is true for any ships that have a negative metal production.
- It also now shows the icon background for it having a problem on its gimbal when this is the case.
- When a ship is disabled, the reason for that is now shown in red at the bottom of its tooltip; before it wasn't always clear why it was disabled.
- Put in better debugging for any sort of modder command errors that might pop up, and also made it so that they won't execute over and over.
- Note that this hasn't actually solved the core issue yet, but it will help us find it next release.
- Thanks to HeartHunter7 for reporting.
- Raid Starships (human and AI) now use Fusion Bolts instead of Plasma Bolts for their weapon. This is giving them a bomber-like ability to bypass the personal shields of enemies, making them actually good at what their name states they are for.
- There are still more changes needed for the raid starships and many other ships; those are a work in progress. But this is a step in the right direction.
- Thanks to zeusalmighty for reporting.
- Tachyon Sentinels now have vastly less hull health and a bit less personal shielding. Bombers and raid starships and similar will take them out quite fast now, but other ships will still take a while (not SO long, though).
- Thanks to zeusalmighty for suggesting.
- Wormhole Sentinel range cut from 12000 to 3200 to better match what its description says.
- Thanks to RabidSanity for reporting.
- MLRS Turrets, Corvettes, and Guard Posts have all had their base damage reduced quite a bit, to make them not so overwhelming.
- The descriptions on the turret and guard post now match that of the corvette, and they also now have the picking-off-stragglers bonus ability.
- Thanks to RocketAssistedPuffin for reporting the balance issue with corvettes.
Version 0.761 A Badger And A Puffin
(Released August 27th, 2018)
- All savegames are going to be broken in this one, too, just a warning!
- We're just going through a very change-heavy period in the short term. Thanks for bearing with us!
- Turn the Control Group Rally green when active
- Some minor tweaks to the tutorial
- Thanks to RocketAssistedPuffin and RustyBucket for the suggestions
- Enable auto-kite, or something like it. This is available as a Setting
- Add new "Kite Master" fleet type to both Hunter and Warden fleet. Their units will auto-kite against you
- Using the "select build tab" (B key) no longer selects all the builders, since there's no reason to do that. Same with the tech and hacking tabs.
- Units that cannot move can no longer be engine-stunned, and units that have no weapons can no longer be reload-slowed. These cluttered up the UI as well as making for useless work on the CPU (though a trivial amount).
Bugfixes
- Don't allow Hacking Points to be obtained from an AI planet
- Thanks to RocketAssistedPuffin for reporting
- Fix a bug with Dark Spire Vengeance Strike notifications
- I think Puffin mentioned it?
- Human Command Station Home Cores no longer spawn automatically, to avoid confusion. We'll later make a "do you want to continue" dialog that lets you spawn one on a planet of your choice that is player-controlled or neutral, or formerly your planet.
- Shield Generators are now buildable
- Thanks to RocketAsssistedPuffin for contributing this fix
- Fix a bug where units could heal to > 100% health
- Thanks to RabidSanity for reporting
- Fix a bug where endless reconquest waves were spawning.
- Thanks to Ovalcircle (and possibly others) for reporting
- Hacking points used against this faction is now tracked in the Faction object, since minor factions can also be hacked
- Fix a number of bugs in the reconquest wave code.
- Prevent truly enormous reconquest waves from spawning, due to a bug where each reconquest wave was never clearing the previous budget
- Fix an exploit where the player could deliberately leave a low-mark planet undefended, let the AI reconquer it, then clear out the planet again. When done repeatedly this could deplete the AI's reconquest budget. Now put a cap on how frequently the AI will try to recapture a given planet (no more than once every 10 minutes).
- Thanks to a number of people for reporting this.
- Make nannocaust hacking cost hacking points
- Thanks to RocketAssistedPuffin for observing
- Don't show two raid starships in the Tech menu anymore
- Thanks to RocketAssistedPuffin for reporting
- The Ark can now be upgraded, as can your metal generators.
- Thanks to RocketAssistedPuffin for doing all the work/sleuthing for Ark upgrades
- The AI can now actually build its Raid Starships. Previously it had a built_by of the human starships bag, but it needs to be in a built_by that the AI uses (in this case BasicGuardianDrawBag). Not all AI ships have to be in a built_by category, but if they aren't directly pulled by either that or by "tags," then they won't ever appear.
- Adjusted the ModderCommand game code to take a string instead of an integer/enum, because that's the only way that modders can add things to the game truly obliviously of one another. Before the system was going to make them share a central enum, but that would have led to an inability to compile when there are multiple complex mods, and them having to use our same central DLLs. The strings approach is great so long as something that is suitably unique is used, and so long as modders don't make any frequent commands have absurdly long strings.
- If the assistance range is blank on an entity that has a metal flow set up that needs an assistance range, it now throws an error on startup so that the modder or developer knows they forgot that bit.
- The visuals for AOE effects like lightning attacks should now scale up properly to actually match the scale that is being used in-game. Been meaning to do this for a long time.
- Have not been able to test this yet, though, so if it's wonky please let us know.
- If the AOE size of something that detonates immediately is smaller than the firing range of the same unit, then it will now complain on startup so that you know to fix this, because it leads to strange results.
- Thanks to RocketAssistedPuffin and Ovalcircle how useless the Lightning units were when those values were incorrect.
- Fixed some ships that were supposedly able to claim neutrals but really were not; now they don't even pretend they can.
- Fixed a bug where only things that were specified as NOT being able to be built on enemy planets could be built there; whoops.
- Thanks to RocketAssistedPuffin, Ovalcircle, and HeartHunter7 for reporting.
- Put in a fix that definitely prevents the sudden migration of wormholes when you swap between planets, and which might prevent the same with turrets and similar immobile ships.
- However, if you still see ship icons moving unexpectedly around, a savegame and repro case would be very welcome.
- Thanks to HeartHunter7, Badger, Ovalcircle, and RocketAssistedPuffin for reports.
- Give Carrier Starships drones to spawn again. Currently they get V-Wings and Fusion Bomber drones
- Previously, the cloaking system was not explained on ships! Now it explains it like any other system, and shows how many cloaking points it has, etc.
- Thanks to TheVampire100 for reporting.
Balance
- Balance pass: Nerf fleetship damage to give turrets/Starships a stronger differentiation. Significant nerfs to MLRSs. Buffs to Starship damage.
- Thanks to a number of people for tipping me off about various OP units, including (but not limited to) RocketAssistedPuffin, Zeusalmighty, ovalcircle, zharmad, TheVampire100, and others whose names have doubtless escaped me
- Nerf the armor penetration of Concussion Corvetters to be more effective against fleetships than guardians. May need further nerfs
- Thanks to Zharmad for pointing this out
- Make more Dark Spire ships spawn on an attack
- Thanks to someone on Discord for pointing out that Dark Spire was boring.
- The human home command station now gives 50k energy instead of 30k, to make energy less tight at the start of the game. Please let us know if it's still too tight.
- Thanks to Vinco for suggesting.
- Give the Dyson Sphere its own unique units, and redo the spawning logic
- The Dyson Sphere now has 4 units. 2 Fleetships, the Sentinel and Defender (unlocked at all intensities). 1 Medium starship, the Bulwark (intensity > 4), and 1 Large starship, the Bastion (intensity > 7).
- The spawning logic is more similar to AIWC, where it just will throw units out when it has the resources to do so.
- Almost certainly needs some balance
- Give Scout Starships cloaking again
- Thanks to Mcloshiv for the bug report
- Give the Rorqual Hegira bubble shields
- Thanks to RocketAsssitedPuffin for the bug report
- New logic has been introduced into map generation that now keeps the human home command station much further away from wormholes if at all possible.
- Thanks to Vinco for suggesting.
- Engineers now have about 5x as much repair speed as before, and same on construction-speed-boost.
- Additionally, the range from which they and rebuilders can do their work has increased over 5x.
- Also, both engineers and rebuilders now have about 1.5x as much move speed.
- Rebuilders are also now able to increase in mark level, like the engineers do.
- And lastly, starting at mark 3, engineers and rebuilders now gain cloaking, making them a lot more buff. The question is... is it worth that science cost to you?
- Thanks to Mckloshiv for all these suggestions.
- Fixed the Orchid Ark's assistance range being set to 0, and thus it not working at allo for assistance purposes.
- Also triple the speed at which the orchid does its repairs and whatnot, which makes it the equivalent of a mark 4 engineer now on mark 1 of the orchid.
- Thanks to RocketAssistedPuffin for suggesting.
- The assist range of the mobile space dock and merc engineers have been increased.
- Marauder outposts no longer pretend that they can repair the engines of friendlies (they never could).
- All of the ships with tesla coils now have a smaller range of 2800, but a much larger AOE range of 2800 instead of the prior 500. Now when they fire, they should actually hit their targets.
- Thanks to Ovalcircle and RocketAssistedPuffin for reporting.
- Ships are now allowed to have zero multipliers on their damage modifiers; making them entirely immune to damage under certain conditions, for instance.
- Dark Spire Eidolon now also has the weapon jammer ability on its tesla coil.
- Military Command Stations of the player now have missile launchers.
- Thanks to TheVampire100 for suggesting.
Ships Reinvented
- Lightning Guardian is now the Fortified Tesla Guardian.
- Close range brawler that prevents enemies from hitting it if they are out of its range.
- Basically it has what used to be called Radar Dampening.
- Lightning Turret is now the Fortified Tesla Turret.
- Very short range AOE blast, but protected against attacks from outside its range.
- Exact same thing as the guardian.
- Lightning Corvette is now the Inhibiting Tesla Corvette.
- Crowd control meets fire suppression.
- It has the new Weapon Jammer ability, with 8 seconds at mark 1 and +2 seconds per mark higher, on ships with armor of less than 101mm.
- Sniper Turrets are now Tritium Sniper Turrets.
- Designed to obliterate ships with low radiation shielding from any distance.
- These have a pathetic base damage, but then a major multiplier against anything with an albedo of at most 0.3.
- Thanks to TheVampire100 for inspiring this change.
- Sniper Starship has become the Tritium Sniper Starship.
- Designed to obliterate ships with low radiation shielding from any distance.
- These have poor base damage, but then a major multiplier against anything with an albedo of at most 0.3.
- These ALSO now have a secondary ballistic cannon, which is on the weak side for a starship but good for giving it some close-in protection.
- Thanks to TheVampire100 for inspiring this change.
- Sniper Guardian has become the Tritium Sniper Guardian.
- Designed to obliterate ships with low radiation shielding from any distance.
- These have poor base damage, but then a major multiplier against anything with an albedo of at most 0.3.
- These ALSO now have a secondary missile launcher, which is on the weak side for a starship but good for giving it some close-in protection.
- Thanks to TheVampire100 for inspiring this change.
- Scout Starships are now Sentry Starships.
- Provides scout-style intel, and plays a massive role in hunting down cloaked enemies.
- The tachyon fields these generate is now 10x larger than it was before.
- These also now have a ship cap 3x larger than before.
- Their speed was a bit on the high side, though, and has been cut down to a bit more than half of what it was before.
- These have been renamed to reflect the fact that they're really much more than just scouts at this point, and occupy the main decloaking role.
- Thanks to zharmad for suggesting.
Version 0.760 Only The Start of Discovery
(Released August 24th, 2018)
- All savegames are unfortunately broken because of the extreme number of changes that have been made to the structure of the game.
- With a lot of the changes, old savegames would not have made much sense anymore, anyway. Goodness we will stop doing this at some point before Early Access!
- Exogalactic Strikeforces have been redone to make them closer to AIWC style Exos. The budget for an Exo is now split across Fleetships, Guardians or ExoLeaders (giant scary units).
- Exos no longer stack all their units on top of eachother
- Broken Golem Exo Strikeforces now start much weaker
- Add Shark options for the AI. Shark Options give the AI a bonus when they take one of your command stations (only the AI, not any other faction), so once you start losing the AI is much more able to finish the job.
- Shark A grants AIP to the AI when they kill a command station
- Shark B grants the Hunter Fleet reinforcements on command station death.
- Nerfs to the Dark Spire to prevent the Dark Spire from casually conquering the galaxy under the right (wrong?) circumstances
- Added 232 new planet names, mostly from older science fiction literature.
- Removed two planet name duplicates that we had, now leading us to a total of 713 possible planet names.
- Realistic and Simple map types now have their planets a bit more spread out.
- Base-Oriented Warden Fleets are now constrained to camp at a Warden Fleet Base and to get reinforcements at a Warden Fleet Base. So if you can destroy nearby Bases then they will have to come from further away to fight you.
- Marauders that are allied to any particular faction (ie player allied or ai allied) are no longer allowed to build Mark 3 outposts (and thus Raiders) on planets owned by their allies. So for player-allied marauders, if you want to help the Marauders build a fleet then it will require you to take more planets (and thus have higher AIP).
- Taking a planet with Mark 3 outposts will downgrade those outposts to Mark 2.
- If you have unit remains on a planet without enemy units, allow them to be repaired immediately.
- Thanks to HeartHunter7 for the suggestion.
- A few balance taps for Devourer, Nanocaust, Macrophage, and Dyson Sphere to make them at least marginally usable right now. Nothing disappoints like watching the Devourer die in 40 seconds.
- Much more work will need to be done, but these aren't obviously broken out of the box now.
- Reconquest waves only get launched if they are strong enough to capture their target. So if there are lots of weakly/undefended planets, the AI will rapidly launch a series of strikes to take the planets back. If you are turtling and all your planets are heavily defended, the AI will save up until it thinks it can break your defenses.
- Dark Spire Vengeance Generators can now be hacked to cause a Vengeance Strike (wherein every Vengeance Generator in the galaxy will simultaneously attack). So if you want to cause chaos in the galaxy, this is a good way to do so.
Tutorial
- The tutorial works again. It's not complete for all features, but it's functional!
Objectives Tab
- There is finally an objectives display again! Though it's not as complete as it was before, we're going to be adding to that soon.
- New core data has been added to the game regarding objective categories, and then objective generators.
- This is all data-driven, and lets us as well as modders add custom objectives into the game that will be seen by players as context dicatates.
- Essentially this lets us keep our complete freedom of how to define objectives using as complex and arbitrary of code as we like, but then also makes it no longer tightly-coupled to our central codebase.
- The new setup is a lot like the map types, essentially.
- The objectives tab now tells you about the following things, in categories:
- PrimeObjectives
- Destroy Known AI Kings
- Find Undiscovered AI Kings
- Scout unexplored planets
- Critical Capturables
- Critical Destructibles
- Explore Galaxy To Find Instigator Bases
- Destroy Instigator Base on [planet]
- Resources
- Collect Science on [planet with science you can collect]
- Beginner Tips
- Capture a few early planets for resources (if you have < 3 planets)
- Defend [planet] from Waves (for each planet with an adjacent Warp Gate)
- Instructions on Gate Raiding (if you have >= 3 planets with adjacent Warp Gates)
- Spend Science (if you have > 8K science)
- New Fleetships
- New Starships
- Golems For Capture
- Explore Galaxy To Find Broken Golems
- Repair Broken Golem on [planet]
- Mercenary Beacons
- Explore Galaxy To Find Mercenary Bases
- Contact Mercenary Beacon on [planet]
- Other Factions
- Find Nanocaust
- Destroy Nanocaust Hive on [planet]
- Fight Nanocaust Invasion
- Explore Galaxy To Find Lost Spire Frigate
- Rescue Lost Spire Frigate on [planet]
- Explore Galaxy To Find Dyson Spheres
- Free Dyson Sphere on [planet]
- Other Capturables
- Explore Galaxy To Find Risk Analyzers
- Handle Risk Analyzer on [planet]
- Capture Zenith Power Generator on [planet]
- Reclaim Ark on [planet]
- Other Destructibles
- Explore Galaxy To Find Astro Train Depots
- Destroy Astro Train Depot on [planet]
- Sensor Scramblers
- With every objective, and category, it gives you advice on how to proceed in a generalized fashion as well as potentially some tips for your specific circumstances.
- PrimeObjectives
An Entirely New System of Units of Measurement
- A new system of units of measurement for statistics on every craft has been created: https://wiki.arcengames.com/index.php?title=AI_War_2:_Units_of_Measurement
- As a player, you don't even need to read that page, nor do you need to understand each unit of measurement.
- However, as a modder or developer it helps you to come up with appropriate values for each field for each ship so that they will behave as expected in-game.
- For our more science-minded players, this page also provides a handy reference with real-world numbers behind it that properly addresses any lore questions that would otherwise be glossed over or seem inconsistent if you didn't know that the mass scale was logarithmic, for example.
Revised Mechanics
- Implemented the new "8 main physical stats" for all ships: https://wiki.arcengames.com/index.php?title=AI_War_2:_Units_of_Measurement
- Balance on these is preliminary at best, right now.
- These are not actually utilized super heavily by the game mechanics yet, since a lot of the new game mechanics are not yet in place to take advantage of these.
- Main new ones all over the place are armor, engine, albedo, and mass.
- Created new wiki pages to explain:
- The way special mechanics are supposed to work: https://wiki.arcengames.com/index.php?title=AI_War_2:_Modding_Special_Mechanics
- The way to mod/develop them: https://wiki.arcengames.com/index.php?title=AI_War_2:_Special_Mechanics
- How to mod sub-nodes of entities, as a related topic: https://wiki.arcengames.com/index.php?title=AI_War_2:_Modding_Sub-Nodes_Of_Entities
- Cloaking and tachyon mechanics have been revised in a new way that is very similar to what was in the game last version, but a little more refined and using the new physical stats.
- Completely untested, so far.
- Tractor beam mechanics have been revised in a new way that is very similar to what was in the game last version, but using the new physical stats.
- Completely untested, so far.
- Gravity field mechanics have been revised in a new way that is very similar to what was in the game last version, but using the new physical stats.
- Completely untested, so far.
- Bubble forcefields has been revised to be basically identical to what was in the game last version, but using the new physical stats.
- That said, all forcefields now have regen on them.
- Completely untested, so far.
- Personal shields have been implemented as a major new mechanic, based on the same underlying logic as the bubble forcefields for the most part.
- These have even faster regen on them, making them kind of like shields in The Last Federation.
- Completely untested, so far.
- Engine stun has been implemented as a completely overhauled concept of what engine damage/health used to be last version and in AIWC.
- The new version uses the physical stats, and is designed to give a more nuanced range of results from engine damage without the game-breaking nature of engine effects that caused so many ships to have infinite engine health in the first game.
- Completely untested, so far.
- Paralysis has been revised almost completely, as well, with much the same goals and moving it into using the physical attributes, too.
- Completely untested, so far.
- Ion damage has been absolutely re-concepted from the ground up. The same mechanics can be created, more or less, based on how you set up the xml values for this system. But it's a lot more flexible than before, and less on/off. A lot more weapons other than just the big bad ion cannons might actually want to use this in a different fashion at some point in the future. Mainly secondary weapons, probably.
- Completely untested, so far.
- The underlying nature of hull health and how it relates to multiple subsquads has been revised.
- This also affects vampirism, self-damage, and repairs to ships to some extent, though fairly mildly on each.
- Mostly untested, thus far.
- All of the immunity-to-this-and-that attributes have been removed from the game and from all ships, except for one: immune_to_all_damage.
- That one isn't used at the moment, but is useful if we want to create an immortal object for some reason, so it stays.
- All the rest of them are now redundant and handled either by the physical properties of ships, or by special abilities in a few rare cases (passing through forcefields, for example).
- The concepts of "defense type" (structure, polycrystal, whatever) and of weapon bonuses against specific defense types (bombers get 10x vs structures, etc) are all now gone.
- The physical properties take the place of this, although thus far most of the mechanics that will take full advantage of this are not implemented yet. So in the very short term this got more bland, but we'll be fixing that up asap. One step at a time, though, and the first was getting the data in there and converting all the existing special mechanics to use that data.
- shield_points are no longer an optional xml attribute of ships, but they can still be zero.
- Given that the nature of how metal is produced has changed entirely from the last public version to now (before it was not literally taking the amounts from ships, but instead generally basing it off some planet stats), we've had to rebalance metal quite a bit to get it back into the same ballpark it was before. The way that units generate metal, and how much they generate relative to one another, seems about right now, but will need further tuning.
- As an aside, with this change it really makes it so that losing your home human settlement or cryo pods HURTS. A lot of metal production in the early game comes from them, which is by design.
- Given the huge number of changes in how we're storing damage values (as of the last version of the game, down below, internal release only), we had to make up completely new balance numbers for shot damage.
- A lot of the reason was that when we tried to normalize out the old data (which came from several different sources including some xml and some AIWC spreadsheet values), we got wildly incorrect data because something was up with our algorithm. Balance wasn't exactly super refined before, anyway, and we're changing so many mechanics that it's even less so now, so we just made up new best-first-guess numbers so that ships will kill one another in a reasonable amount of time, but not overly fast or slow. Most battles between two squads of identical units should take about 10 seconds for the smaller ships.
- The AI Home Command Station is now properly called the AI Overlord.
- The AI Overlord now has a Phase 2 that is mobile that it should spawn immediately on death. This is much like the Avenger plot from AIWC, but it's built in as a core thing here.
- There is now a Human Home Command Station Core that gets spawned if you lose your home command station, even in single player.
- This is based on the concept from multiplayer in AIWC, but works the same in both games now. It lets you keep playing after you lose, if you wish, but with some penalties.
- A variety of the civilian ships and docks can now be built on enemy planets, thus making beachheads viable.
- There was previously a bug making EVERYTHING buildable on enemy planets, so it was viable previously anyhow. Since that bug is fixed, if there are any missing things that need to be buildable in enemy territory, please let us know.
- Hacker unit has been added, finally, under the infrastructure section along with engineers and science labs and the like.
- This lets you gather hacking points, as well as perform hacks against the enemy.
- Mechanic change: now when a ship has a multi-shot or multi-beam attacks, it cannot focus-fire multiple shots into a single target. Each shot must have a unique target, or else it simply fires fewer shots in that salvo.
- This shift helps make these units stand out more from their single-shot brethren; rather than simply having a fixed amount of DPS that they can optionally divide into multiple targets, they instead have a DPS that is greater when more targets are present. This helps to legitimately establish a more interesting role for these ships.
- Shots now move dramatically faster, and don't "home in" on targets anymore. A shot that is fired is still going to hit unless the target moves off of the current planet, though.
- As part of this, the visual tails for shots are never quite so over-dramatically long anymore.
- This change is primarily for purposes of making things visually look better, but it definitely does also affect balance as well since it prevents ships from getting off so many salvos before incoming shots hit them. This is also by design.
- Metabolization has been added as a new ability in the game. This is a lot like the Zenith Reprocessor ability in AIWC.
- If you deal enough metabolic damage to a ship when you're killing it, you get 10% of its metal cost immediately added to your own stores, maximum 5000 per death.
- A new count_to_spawn_on_death can be paired with spawns_on_death in order to create AIWC-Hydra-style units.
- Added a new immune_to_all_damage_for_seconds_after_creation tag for entities that allows for them to be completely immune to damage for a while after being created.
- This is now used to give the Human Home Command Station Core a full four minutes of invincibility after your Home Command Station (or another Core) collapses into this.
- This way you have some time to try to get things back on track and to get your command station out of the hot spot it's in, but we don't have to do anything funky in AIWC like moving you automatically to an ally's planet (and in solo play, here, you may well not even have an allied planet of course).
- A new max_engine_stun_seconds has been added to ship systems, which lets us have engine-slowing ships that make targets slower without outright stopping them.
- This will be used by V-Wings, and is different from what the Spiders do.
- There is a new Weapon Jammer ability that can be given to ships, which lets them add extra seconds onto the reload speed of ships that they hit.
- The overall maximum extra reload seconds that can be added is 20, but that number can be set to be lower with the max_enemy_weapon_reload_slowing_seconds on the weapon that has this ability (and it probably should be, in general).
- The ability is defined with base_enemy_weapon_reload_slowing_seconds_per_shot and added_enemy_weapon_reload_slowing_seconds_per_shot_per_mark.
- The ability has a further enemy_weapon_reload_slowing_to_armor_mm_less_than field, which makes it only work on enemies with certain armor thicknesses.
- Added a new Fusion Reaction ability:
- Shots from a weapon with this do X% of their damage directly to the hull of their target, bypassing any personal shields.
- Uses: base_percent_damage_bypasses_personal_shields and added_percent_damage_bypasses_personal_shields_per_mark
- Mercenary Beacons must be hacked before they can be used
- A new system has been implemented where you can specify outgoing damage modifiers on weapons, and incoming damage modifiers on ships, using the nodes outgoing_damage_modifier and incoming_damage_modifier, respectively.
- There is a huge amount of flexibility in this system, but if you're modding just do bear in mind that not everything possible makes the most sense.
- For instance, stacking too many bonuses on ships is probably not a good idea. One, at most, ought to do plenty fine! Not everything even needs one! It's a matter of whether or not we can increase the interest of a ship's role with this, not whether we can make yet more stuff to read and more mental gymnastics for the player using them.
- Also of note, it's possible to have both penalties and bonuses that you put on these. People tend not to like penalties unless it's on an enemy target, it's a psychological thing, so avoiding that when possible is a good idea. Trying to keep outgoing multipliers > 1 and incoming multipliers < 1 means bonuses.
- There are a variety of things you can check on the incoming damage side that simply make no sense to be there. Why would we care how far much armor the attacker has, for instance? Mostly these stats should be used for outgoing damage, partly for this reason, but also just because it's easier to keep track of.
- Criteria that can be checked using the based_on xml attribute:
- MaxHull: how much max hull health the defender(outgoing)/attacker(incoming) has
- CurrentHullPercentage: what percentage (0-100 as integer) hull health the defender(outgoing)/attacker(incoming) has
- MaxPersonalShield: how many max shield points the defender(outgoing)/attacker(incoming) has, but it reads as 0 if it's a bubble forcefield
- CurrentPersonalShieldPercentage: what percentage (0-100 as integer) shield points the defender(outgoing)/attacker(incoming) has, but it reads as 0 if it's a bubble forcefield or there are no personal shields
- AttackDistance: how far apart the attacker and target are at the time of shot impact
- CurrentSpeedIfMoving: current speed of the defender(outgoing)/attacker(incoming), or 0 if not moving
- Armor_mm: armor of the defender(outgoing)/attacker(incoming)
- EnergyUsage: energy consumption of the defender(outgoing)/attacker(incoming)
- Albedo: albedo of the defender(outgoing)/attacker(incoming)
- Mass_tX: mass of the defender(outgoing)/attacker(incoming)
- Engine_gx: engine strength of the defender(outgoing)/attacker(incoming)
- TimeAtPlanet: how long the defender(outgoing)/attacker(incoming) has been at this planet.
- They can be compared based on the comparison_type xml attribute:
- LessThan is just <
- GreaterThan is just >
- AtMost is a nicer way of saying <=
- AtLeast is a nicer way of saying >=
- The damage multiplier can be applied selectively using the applies_to xml attribute:
- Everything: the default, and it's just how much damage is sent over in general.
- HullOnly gives no bonus against shields of any sort, just against the hull
- PersonalShieldOnly: gives a bonus against personal shields only, not bubble forcefields or hulls.
- AllShields: gives a bonus against personal shields and bubble forcefields.
- You provide a floating-point comparison number in the xml attribute compared_to:
- This is the thing that you're comparing, for example, the max hull points of the target against.
- If the [based_on] value from the ship being examined does not pass the [comparison_type] check against that number, then it applies no damage modifier here, basically.
- And lastly, the "multiplier" float xml attribute states what the actual damage multiplier should be, assuming that the checks passed.
- There is also an added_multiplier_per_mark attribute that lets you increase or decrease that multiplier per mark level.
- There is a huge amount of flexibility in this system, but if you're modding just do bear in mind that not everything possible makes the most sense.
Revised Ships
- Bombers are now Fusion Bombers, with the following description:
- Unique to the forces of humanity, fusion bombers are excellent at damaging targets with low hull health and high personal shields. This usually means structures.
- They now start out with 60% of their damage bypassing personal shields, and that number goes up by 5% per mark level of the bombers.
- All of the other bomber-like ships, including the Nanocaust Anomaly, have also been updated to use the fusion reaction ability.
- This may well be swapped around in the future, but it fits for now.
- Fighters are now V-Wings, with the following description:
- V-Wings are a fighter-type ship particulary equipped for screening longer-ranged forces from incoming hostiles, thanks to their engine-slowing ability.
- Missile Corvettes have been turned into Concussion Corvettes, with the following description:
- Specialists at wrecking thin armor, but extremely poor against higher-armor ships.
- Note that these do not remotely form a "core triangle" anymore, unlike in the prior versions or in AIWC. These, Fusion Bombers, and V-Wings are all now human-only anyhow, so it's a matter of how they handle their workloads and not how they fight one another.
- Raptors have been updated so that they now have a bonus against ships that have been on the current planet for at most 8 seconds, making them excellent wormhole campers.
- Snipers have been updated so that they have a massive bonus against fast-moving targets that are actively moving.
- Laser Gatlings are now Ablative Gatlings, with the following description:
- Incredibly dangerous against high-albedo ships, using their own absorptive power against them.
- MLRS Corvettes now also have a bonus against ships with less than 20% of their hull health remaining, making them excellent for picking off stragglers as well as crowd control.
- Infiltrators have now become Agravic Pods, with the following description:
- Ridiculously dangerous against ships with high-powered engines. Use to shore up locations where such ships can otherwise slip past gravity and tractor fields.
Ship Icon "Gimbal" Updates
- Ships now show little circles around themselves when they are selected, making them FINALLY actually visible on the icons when you select them. This is, ironically, how AIWC did it.
- All of the various "flair" statuses for things like attack-move, defend, etc are now little backdrops behind the ship icon instead of strange tags above them.
- This is a lot more attractive and more readily visible and readable than before.
- These all have a black border, but when selected that border goes white. Making the selection status on this pretty similar.
- Ships now properly show their status on their icon when they are in hold-fire (or otherwise paused) mode.
- Ships that have not yet been fully claimed now show properly on their icons with a building background.
- Ships now have a separate health bar for their shields, so you can actually tell better what is happening during a battle now.
- Attack-move now shows up properly in the statuses of ships, like FRD and so forth do.
- Immobile ships, and ships that can't either shoot or assist, no longer show FRD status.
UI Updates
- Ship tooltips now show their shield health separately from their hull health.
- The percent sign was not showing up properly throughout most of the interface because the font we were using -- Michroma -- did not support it. We're now using a different font -- Titillium Regular -- that looks very similar but does support that, and in fact has more readable text (numbers in particular) in general.
- The search for a revised font was pretty exhaustive, and the improvement is notable.
- Updated the font in the lower left part of the UI as well.
- Updated the natural sizing and kerning offset of the strength icon, hacking icon, energy icon, etc, in their font so that its size does not have to be overriden every time and instead it fits in more naturally with text.
- Updated the various places that use text to "use extra padding," which makes the text more crisp.
- Updated the button font to be AudioWide instead of Exo2. This is more thematic and still plenty clear.
- AudioWide font now used for popup headers, as well.
- Quantico italics font used for credits screen, and that initial loading font, and the paused notice on the top bar.
- Geometry Soft Pro Regular A is now used on the sidebar for headers, etc.
- Fixed an annoying issue where tooltips would often overlap one another rather than properly only ever showing one tooltip at a time.
- Tooltip backgrounds are no longer semitransparent, and now look much more attractive and modern.
- We still have plans to add some bits of extra fanciness on these, though.
- The confirmation screens now use better graphics, similar to the tooltips.
- The background of the resource bar header is now fancier and stretches the entire width of the screen, too.
- It also includes new little inset sections where the numbers and text go, which in particular makes it more clear that the metal display isn't just sized oddly.
- The bottom left bar has also now been updated visually, although it in particular is scheduled for some more visual tweaks to make it really feel right.
- The four tabs of the sidebar, which previously were above the sidebar, have been split into seven tabs along the side instead.
- This is actually a lot less overwhelming than the other approach, because it splits out hacking and science, and docks and direct construction.
- Previously it was pretty hard to find hacking, and the build menu was a giant mess, visually.
- Additionally, this renames Ops to be Mercenaries, since that's all we have planned for that anyhow and Mercs are going to become more important.
- This is actually a lot less overwhelming than the other approach, because it splits out hacking and science, and docks and direct construction.
- Updated the visuals of the sidebars to be vastly more attractive, including much better scrollbars among other things.
- We do expect to do even more with this, but we're off to a good start with it already.
- Updated the bottom-left menu to be less wide by removing the ping and reset camera buttons (which were always "coming soon" anyway).
- This then lets us move that entire menu to be below the left sidebar, and along with that lets the tooltips move down so that they are almost flush with the bottom of the screen. This makes a HUGE difference in how obstructing the tooltips are/feel.
- This also has a mild side effect of removing some slight distracting clutter from that bottom bar. It makes the more critical components of it a lot more noticeable.
- Updated the planet hover tooltip to be more attractive, have easier to read formatting, have icons and colorization by resource color, and so on.
- The information that was displayed about individual units that you could build when you hovered over them on the sidebar was really sparse before. It now shows the full information that you get after a unit is built, but plus also some other construction-specific items.
- Additionally, it was never showing a per-planet cap properly on the build menu's tooltips. It now does, and makes it very clear if something is a planet cap or a regular cap.
- Rather than the DPS being shown as a singular number, it now shows the damage per shot and the shot reload times separately.
- The tooltips for ships now show all of the actual information about what is directly on the ship in terms of abilities -- how much of a resource is generated, what special abilities do, and so forth. This is done in a somewhat-narrative form, with highlighting for the key numbers, and with inline upgrade indicators for changes when looking at a potential tech upgrade. This is very different from the first game, where it just had a lot of techie-sounding markers on ships, and you had to consult the wiki to really know what they meant.
- In the context of this game, ships in general should not have so many different things on them that their tooltip becomes a problem, anyway. If we start running into problem cases, we can re-evaluate some of this and potentially have a condensed view or something.
- The system menu (when you hit escape in-game) has been completely redone, visually.
- The buttons are finally larger, easier to click, and attractive.
- On the system menu, there is now an About This Campaign scrolling window that currently shows you a list of factions and then some stats for each human faction.
- We'll be expanding this over time.
- You can now also see the numbers for the status effects on ships/squads when you hover over them, which is pretty useful so that you know what the heck is going on with something that is negatively affected at the moment.
- The game will now prefer to report the number of squads rather than ships in the UI, though the number of ships will still be mentioned where possible. The game is balanced at the Squad Level, not the ship level, in any case.
- Example: Instead of reporting 800 Missile Corvettes, it will now say something like "40 squads of Missile Corvettes (800 ships)"
- Thanks to Bummeri and RocketAssistedPuffin for reporting
- When a Hack is ongoing you will get a notification for it with the time left for the hack.
Bugfixes And Structural Bits
- Give the AI more turrets and fewer non-turret defenses per planet
- Correctly reinforce only "Alerted" planets, aka those adjoining enemy (or at least, non-AI) planets
- This seems to alleviate the "Fields of Tachyon Sentinels" problem
- Put in a fix to prevent a nullref exception that could happen every 30-60 minutes based on a thread race condition.
- Thanks to HeartHunter7 for reporting.
- A bunch of scaffolding work has been done to allow for multiple AIs in the game. Having multiple AIs is currently not available because the UI does not allow for it yet.
- The export of the balance stats csv file works again, and now gives a bit different data.
- There is now a special entity type of GuardPost, and all the guard posts are assigned to that (and no longer have the tag of "GuardPost", since that is now redundant).
- Guard posts are now reinforcement points, and guardians no longer are.
- Fix a few null reference exceptions in the vis code
- HumanKingUnit has been replaced as a special type with HumanHomeCommand, which is a lot clearer (that it doesn't mean the Ark anymore, which is now a different special type).
- Related to this, we found a number of places where HumanKingUnit was still being used in an Ark-like way (as a hacker, as a fleet leader), and those are all now fixed.
- Adjusted the "external data" to never initialize right from the start anymore, but instead to initialize only the first time it is used on an entity.
- This dramatically cuts down the size of savegames (less than half what it was before from a brand-new save -- 4.3MB down to 1.8MB) and also saves RAM and some CPU when new entities are created.
- This was only going to get dramatically worse over time as more factions and other custom modded pieces were added into the game, but now that's not an issue.
- As one might expect in a savegame format with lots of optional fields, a TON of the data per savegame is actually blank. We've now updated the way blank data is stored to be roughly twice as efficient, thus dropping a savegame of size 1.8MB to just 1.01MB.
- This makes saving faster and more efficient, and saves space on our webserver relating to mantis bug reports, as well as making it so people don't have to zip their savegames just to get them up.
- The last of the savegame file size improvements is now in place. This brings us down from 1.01MB to 0.875MB -- or really, finishes bringing us down from 4.3MB at the start of this version down to 0.875MB now.
- This new update stops using direct strings embedded throughout the savegame files for entity internal names and system internal names and similar, and instead writes an array of strings at the start, then writes integers instead of strings later on in the actual writing of the file. It's just a mapping lookup, basically. It's fully future-proof with adding and removing entities types to the same degree that the prior method was.
- The savings of this system will actually go up dramatically the more entities there are in a given game. The example that we have here is right after game start, but it would be far more than 20% savings in a late-game save.
- Fix a bug where the Sidebar and Notifications were reporting different numbers of ships on a planet
- Thanks to HeartHunter7 for reporting
- Fix a bug where army selection with "M" wound up being additive when it should not have been, which meant that you could wind up issuing unexpected orders
- Thanks to HeartHunter7 for reporting
- Fix a bug where control-group-rallied units could wind up endlessly rallying to each other in a circle.
- The core piece of ship autotargeting logic, ReevaluateUnitOrders, has been moved into a new external open-source class called EntitySimLogicImplementation.
- Thus more people can contribute to it, if they wish.
- Right now the logic inside of EntitySimLogicImplementation.FillPotentialTargets() is quite simple, as Badger noticed. To help move towards being able to spruce that up, we've added the following:
- priority_as_target is now on every entity, with a value from the GameData/Configuration/Balance_PriorityAsTarget xml required.
- priority_to_protect is now on every entity, with a value from the GameData/Configuration/Balance_PriorityToProtect xml required.
- priority_as_target is now used for AI's with difficulty > 4 (and everything that isn't an AI) when choosing targets. priority_to_protect is currently not used yet though.
- Ideally we can later separate out some of that logic onto a permanent background thread with no particular timetable on it like we did in AIWC, and then have it issue commands through the GameCommand interface just like a player does. But for now we can simply make everyone's autotargeting better.
- There is an importance_metric integer field on the priorities that can easily be used to determine a general level of priority for entities (higher is a higher priority, 0 or negative means ignore). However, these also have names such as ShieldGenerator or IrreplaceableAIPIncreaser and so forth, which means that the AI can actually key off of the priority names if they wish to do specific activities like take down shields or drive up the AIP or something.
- Having this separated out into separate defense and targeting priorities reflects the different ways that we think about these things. Sometimes a ship is very important to take out if you're attacking, but it's considered expendable if you're defending because it's just another piece of defensive hardware and its job is to fight until it dies. At any rate, the way things are designed right now, the people defining the xml and the people writing any AI logic both have some loosely-coupled good options on both sides.
- One reminder for anyone doing AI code: never _just_ choose the best option. Always choose from among the top 85% or so of the options, and very rarely lower than that, because that keeps the humans on their toes and is what leads to unexpected moments of "brilliance" on the part of the AI. That wiggle-room is the secret sauce that makes AIs seem alive.
Hey Testers! We Have Some Questions
- Questions for testers (now that we're breaking everything):
- How is ship damage in general? How about health?
- Do tractor beams work?
- Does cloaking work? And tachyon beams?
- Does engine damage and repair seem to work?
- Does paralysis work?
- Can command stations be upgraded?
- Does the Human Home Command Core work? (Does it get created and then does it work?)
- Does the AI Overlord Phase 2 spawn after the AI Overlord is destroyed, and does this keep the game going until it dies?
Version 0.759 Break The Sky
(Released Internally Only August 8th, 2018)
- A variety of the starship lines now are unlocked via the Advanced Research Station instead of being available for unlock directly at the start of the game.
Minor Faction Updates
- Fix some Dark Spire bugs where the Wards were self destructing, Locuses were spawning too early, etc...
- Dark Spire units now spawn next to their Vengeance Generators instead of at the center of the planet.
- The Dark Spire can now perform "Vengeance Strikes", where all the Dark Spires in the Galaxy will launch a simultaneous attack. This will happen every few hours.
- Vengeance Strikes will give you a 10 minute Notification heads up.
- If you have vision of the Devourer, you will recieve a Notification with its current location
- You will get a notification for every Astro Train on the map. Note that it won't tell you the location of the Train or the Depot unless you have vision of them.
- If the Zenith Trader is on one of your planets you will get a Notification.
- A Notification for all of these factions is a popup like a Wave Notification
- The Marauders will only attack "Sometimes" now. This is less a nerf and more a "Make the Marauders really unpredictable" tweak.
- Marauder Raiders will now aid adjacent allied planets that are under attack
- Mercenaries are Always Enabled now
- Allow Astro Train Depots to have per AIP multipliers on strength, which allows Depots to start out weaker but get stronger as the game goes on (as you also get stronger)
- Dyson units now spawn at the Dyson Warp Gate, not at the center of the planet.
Nanocaust Changes
- Reworked the way Nanocaust ships are created to allow for real balance adjustment
- Add notifications when the Nanocaust is attacking
- These are notifications like the Wave notifications
- The Nanocaust has the ability to strategically generate bonus strength for waves
- Fix a bug when saving games with the Nanocaust
- Thanks to OvalCircle and RocketAssistedPuffin for reporting
Instigators
- Add AI Instigator faction. This is a minor faction that's just "part of the AI" from the player's point of view, though their units are tagged "AI Instigators" not "AI". Instigators are Always On and there is no mention of them in the Game Lobby.
- This faction will create a base every hour or so. These bases will provide the AI with an ongoing bonus effect (at the moment, buffs to various budgets or "Spawn units that just kamikaze at the player"). You can ignore these bases or go try to kill them.
- The goal is to give the player periodic new mini-quests and objectives.
Balance Changes
- Adjusted the balance for Mark V, VI, and VII ships/structures. They were progressively getting weaker compared to their lower tiers, which generally increased at a higher rate.
- Mark II is 2x as strong as Mark I, for instance, but Mark V was only 1.25x as strong as Mark IV. Now Mark V and up are each 1.5x as strong as the mark that came before them, which matches how much stronger IV is than III.
- We can of course change this with ease again in the future, but it seems like a good plan for now.
- Metal costs for ships go up by 1.5x per mark level, rather than following the strength/hull power trend line. This makes mark II ships a particular value compared to mark I ships, incidentally. The deal of power-to-metal-cost ratio gets progressively worse as you go up in mark levels, but always remains quite positive (aka it's always a good idea to upgrade, but you get more bang for your buck upgrading something low than something high, assuming all else is equal -- which it is not, heh).
- All of the player command stations now increase the speed of all allied units within their system, as was the case in the first game. Home court advantage returns!
- The energy cost multiplier for higher mark levels has been removed. Ships cost the same amount of energy (per squad) at each mark level, now.
- Otherwise, particularly with the auto-upgrade effects that are now here, you could end up browning yourself out by upgrading a squad. Previously you could have ships inexplicably not upgrading, so that was not really improved.
- Don't worry, your energy needs increase anyhow because of ship caps going up with higher mark levels.
- That said, we will probably need to spend some time on balance with energy in general to make sure that you actually start to feel pinched every so often on it during gameplay.
- Planets now have a constant amount of hacking and science points on them.
- We might change that in the future, but it would be planet-background-themed and use different math if we did.
- There are now always 5 metal production points on player homeworlds, and between 3-8 points on other planets, making them vary in quality just like in AIWC but in a fully visual way that differs from AIW2 so far.
- The idea here with the base planet is to keep it from players re-rolling to get a better immediate start.
Ships Removed
- Tachyon Microfighters and Bulletproof Fighters have been removed as distinct entities. These will soon be things that are randomized variants or upgrades.
- The AIWC-style concept of mercenaries, which we've been calling Auxiliaries, has been removed for now.
- This simply wasn't very exciting and felt like clutter at the moment. If late-game metal buildup becomes a problem again, we have some more flexible ideas for dealing with that.
- Advanced Factories and Advanced Starship Constructors are going away for now. We'll be bringing back a different mechanic in this general area, so stay tuned. There's a better way to do this, though.
- Stealth tachyon arrays have been removed as a distinct unit. Instead, their stealth ability kicks in when you upgrade a regular tachyon array to mark IV or higher.
Ships Reinvented
- Fighters, bombers, and missile frigates are the three core triangle ships... but only for humans, now! The AI and other factions no longer get them at all. The marauders have their own version of these ships as drones, which is actually pretty unique for them. But the AI and other factions use different ships as their baseline, now.
- These ships (the base ones by the player, anyhow -- not the drone marauder-based ones) are now going to be getting some balance changes and new abilities really soon.
- The basic fleetships for the AI are now the Raider (in place of the Fighter), Armor Ship (in place of the Bomber), and the MLRS Frigate (in place of the Missile Frigate).
Ships Added
- Logistical and Economic command stations have been rebalanced a bit, and Military command stations have been added.
- The new military command stations increase the attack power of all allied ships in their system.
Bugfixes
- Fixed a bug in the macrophage where they were not using their health_change_per_damage_dealt value, since it was spelled health_change_per_damage_dealth.
- Fixed a variety of other bugs where things were not acting as they were supposed to since the pivot. That said, undoubtedly broke even more things than we fixed.
- Fixed up a few ship ranges that were set to low or negative values because we couldn't properly see them before. The Arks all had very very short gun ranges, for instance.
- Probably fixed the bug with you being able to upgrade your home command station and thus lose the game instantly because of that.
- Fixed a bug where killing Warp Gates was not correctly stopping incoming waves from that Warp Gate
- Thanks to OvalCircle for reporting
- Structures can no longer be captured on AI planets
- Thanks to RocketAssistedPuffin for reporting
- Certain text throughout the interface, such as on the net energy display, would show really strange and wrong if you had a negative number there. Fixed.
- Fixed a longstanding issue (that we just uncovered) where attribute reading from xml could silently fail even if it was supposed to verbalized failure.
- The issue was if a non-default value was passed into the Fill() methods, but then the attribute was missing. It was supposed to complain if it was default OR missing, but it was only complaining if it was default.
- Fix a bug where Astro Train Depots that were supposed to give bonuses to various AI Budgets were in fact doing nothing.
- Fix a bug where losing vision on a planet caused all ships there to visually explode
- Thanks to x4000 for reporting
- Improve engineer logic when deciding which units to repair, or which constructors to assist in building units. We now factor in how many other engineers are working so as to ensure we don't have all the engineers working on a single unit at a time.
Technical Jargon
- A new does_not_use_multipliers_from_mark_level tag has been added.
- If this is set to true, then the mark_level="Mark5" (or whatever level) tags are just ceremonial -- they show up visually to show a player how scary the unit is, essentially.
- Normally there are multipliers for the health, strength, shields, attack power, etc, etc that come from mark levels. This skips those, in other words.
- The reason for this is that sometimes you have very unique entries at each mark level (such as with the Dark Spire) that you want to have display the mark level, but which in no way inherit stats. This way, instead of having to know the multipliers and then divide all your values by them, you can just set the stats directly.
- The option to hide mark levels on ship icons has been removed, since now you can just set them to be markless and set their stats to be whatever. It's much cleaner than having two ways to do one thing.
- The structure of how ship data is stored in xml for the game to read in has been overhauled quite a bit.
- A lot of fields were previously wired up in such a way that they referenced other xml files extensively, so you'd have to know what a lot of hidden values meant in order to make sense of it at all.
- Now this is done a bit, but only for things that are easy to remember (range) or not frequently used (engine health). Basically in places where this is easier to read for purposes of understanding a scale (is 100 a big number of a small number for this field? etc).
- A lot of fields also were based around multipliers to unseen base values, again making it hard to know what the actual values would be.
- In general, things are a lot more direct now. Higher mark levels still multiply a bunch of things in order to simply be descendants of the lower mark levels, but this is less severe of something to have to learn.
- And lastly, ship systems (guns, etc) were stored in a separate file, then referenced. This had the advantage of fewer definitions (by a bit), but the big disadvantage of being harder to read a single ship or modify that ship.
- Now the system entries are actually sub-entries of the ship nodes directly, so you can see everything about a ship right in one screen, essentially, and thus make changes way easier to it.
- Overall these changes make it harder to make sweeping balance changes to the game (more repetitive work is required now), but it makes it far easier to modify individual ships, which is far more common of a task.
- Basically we were not having many modders for ships, and even Badger and Chris were kind of shooting in the dark and Keith was mostly just basing his work around what was in AIWC lately, so the prior system wasn't really working out for practical purposes. The new system was designed to take what was good about the old system, make as few changes as possible, and become more usable.
- A lot of fields were previously wired up in such a way that they referenced other xml files extensively, so you'd have to know what a lot of hidden values meant in order to make sense of it at all.
- Made it much easier to see what sub-nodes are having xml issues when you're seeing xml errors from your modding.
- The properties on GameVersions are now different, since we're breaking old savegames anyway.
- Rather than saying which versions are valid for the settings, world, and profiles, it now says which is the first one that was valid. Those markers can be moved around in the versions file as needed.
- All of the old serialization gates have been removed, and in general a lot of deserialization cruft that built up while we were not breaking savegames.
- Kind of related, we made a tutorial on how to use serialization gates: AI_War_2:_Serialization_Gates
- The last inclusions of Power in the code are now gone. Also power distribution nodes.
- There are now some V1 and V2 copies of a few ship types that look pointless in the xml, but which are a chance to have multiple randomized variants on one team, coming up. This is particularly true for things like the Abomination, etc.
- There are also some faction-specific tagged versions of various ships that are copied now, too. The tags make it more obvious what the purpose is, and you can see that built_by="Unused" is being set to zero to make sure that these variants don't show up in player build menus or random AI waves.
- Build menus no longer have the same structure as before (with all the columns, etc), and are now defined on the ships themselves.
- This makes it easier to keep track of where ships are used, although not what uses what ships. But that's fine, because we also don't want ships referenced in multiple files like this directly if we can help it (this again helps with modding, allowing modded-in ships to be inserted into build menus automatically).
- Also worth noting, we've removed some build menus for things like specific AI types, since that concept would no longer work anymore. Rather than certain AI types preferring specific ship types, they'll be getting specific bonuses or penalties more frequently from the randomizer, soon.
- Mark levels and techs as they were previously defined in the xml and code have been removed. There's a new system that is a lot simpler that does the same thing on the front-end, but is less typo-prone, requires less xml in general, and will long-term be less bug-prone.
- The concept of a "shared cap" is now gone, since we no longer have to share cap between multiple mark levels.
- Added a new max_mark_level tag in the entity xml that lets us specify that the unit is only able to be upgraded to a given mark level and no further.
- Most of the time, units can be upgraded all the way to mark 7, but it gets progressively more prohibitively expensive.
- It's also worth noting at this time that the mark_level tag now means "first mark level." If something has a mark level of 2, then it will never be present at less than mark 2. This is mainly used by some minor-faction-specific ship variants.
- Lastly, if something is set to be markless, then it can't be upgraded at all (mark-level-wise).
- Engineers no longer upgrade units, it just happens automatically (for the player). This was a waste of time for the engineers, and extra complications on our side, too.
- This does create the common situation where you'll be in battle and can upgrade your units immediately to save their health or whatever, but this isn't the worst thing; lots of RTS games do this.
- Player units are now automatically kept at whatever the highest mark is that their type has unlocked, whereas AI units start out at some mark level (from their planet mark level, or their wave mark level) and then never change it.
- Note that this is a departure for structural-type buildings such as command stations. You can't have multiple mark levels of economic command station in the galaxy at once, anymore, for instance; they'll all share the highest mark, now.
- Note that this does NOT affect the AI or minor factions; they can do what they like.
- In the test chamber, you can now specify a mark_level entry to choose what mark the ship is at. It will automatically correct itself to the nearest in-range mark level if you set something out of range for that unit.
- The build menus and tech menus are now combined into one thing that is called build menus, and this includes the following entries for the moment.
- Note that these get assigned to entities by the built_by tag, in a comma-delimited list. What lists the ship is in determines how it can be used, and by whom.
- Further note that a few ships don't use built_by at all, but still do appear in the game. These ships are instead looked up by the tag property, usually for purposes of a faction or the AI doing something unusual with them (for instance, Usurpers being in the waves AIs send to retake planets).
- Unused: assign ships to this if you have are using copy_from on a ship that you then want to be in no lists (aka that ship will be looked up by tag after the copy).
- FleetShips: ships that the player can build at space docks.
- Starships: ships that the player can build at starship constructors.
- FleetShipUnlocks: currently unused.
- StarshipUnlocks: currently unused.
- StarshipAndFleetshipUnlocks: Advanced Research Stations will choose from ships in this list when deciding what to make available to players.
- Note that for the result to actually appear in the space dock or starship constructor, you ALSO have to include FleetShips or Starships in the built_by list.
- Infrastructure: non-combat things that the player can directly place. Engineers, space docks, etc.
- Defenses: combat-oriented things that the player can directly place. Turrets, shields, etc.
- ZenithTraderUnits: whatever the Zenith Trader might sell you.
- CommandStations: whatever the colony ship has available for you to build.
- CommandStationUpgrades: any command station lines that can be upgraded in the tech menu. Pretty much identical to CommandStations for now.
- BasicWaveDrawBag: ships that the AI can send at you in waves (assuming it has the line unlocked, as with everything around here).
- BasicReinforcementDrawBag: ships that the AI can plop around its planetsn during reinforcements spending.
- BasicGuardPostDrawBag: guard posts for the AI to place.
- BasicTurretDrawBag: turrets the AI is allowed to place (assuming line is unlocked).
- BasicNonTurretDefenseDrawBag: other non-turret defenses the AI can place, but not shields.
- BasicShieldDrawBag: shields the AI can place.
- BasicShieldGuardianDrawBag: shield guardians the AI can use on occasion.
- BasicSentinelDrawBag: things that guard wormholes for the AI.
- BasicGuardianDrawBag: regular guardians, not including shields, that the AI can use.
- BasicDireGuardianDrawBag: unusually scary guardians that only get used in special circumstances and core AI planets.
- Note that these get assigned to entities by the built_by tag, in a comma-delimited list. What lists the ship is in determines how it can be used, and by whom.
- There is a new xml tag called ship_line_must_be_unlocked that can be set to one of three different values:
- LineUnlockedFromStart (default) means that anyone can use it right from the start IF it is in the "built_by" lists that the faction has.
- For instance, this default is set for Fighters and Bombers and such, but the AI still doesn't get those because the built_by does not include BasicWaveDrawBag, BasicReinforcementDrawBag, or any of the others.
- And on the other hand, various other ships for minor factions don't include FleetShips or Starships, so the player space docks and starship constructors can't construct these things.
- LineUnlockedFromStart (default) means that anyone can use it right from the start IF it is in the "built_by" lists that the faction has.
- Balance_TechCost is now being used in a new tech_cost tag on entities.
- Any entity that isn't markless must have this assigned.
- If the entity isn't used by players (such as AI-specific or faction-specific stuff) or otherwise isn't something players will see in their science tab (such as drones), then just set it to NeverPlayerControlled for the sake of clarity.
- The rest of these values are organized around the same general costs that we had previously, but without needing to have tech definitions as an intermediate step.
- These also define all of their science costs in just a single list that is planets_worth_of_science_by_ordinal, rather than having many entries for each cost type. The list starts with ordinal 0 (markless), and goes up from there to presently mark 7.
- The scaling factor on these is intentionally uneven, so they're set directly. Some things are cheaper at first and then get progressively more expensive, others are more linear, and all of them get vastly more expensive starting around mark 4 or 5.
- This also now lets us define ark_upgrade_point_costs_by_ordinal directly for the Arks.
- The costs on these have been massively increased compared to what they were in prior versions of the game.
- And lastly, this lets us set destruction_point_costs_by_ordinal directly here, too.
- Previously, this was just used by a couple of things like the mobile builder and the auxiliary space dock. Now it isn't used for that at all.
- Now, starting at mark 4, all of the lines start costing some amount of this. So even if you get a ton of science, you also have this other limiting factor on the very high-mark entity unlocks.
- It's also worth pointing out here that you can now simply upgrade your ships and structures all the way from mark 1 to mark 7 (or whatever their top cap is) at any time, without capturing anything. It's just very, very expensive.
- The concept of temporarily having mark IV ships available thanks to an advanced factory is gone. That was awkward and there are better things we can do.
- Any entity that isn't markless must have this assigned.
- There is now a min_mark_level_to_function and max_mark_level_to_function set of tags that can be applied to systems. Simply set this to 0, 4, or whatever ordinal number.
- This lets us do things like only have certain systems turn on after a ship reaches a certain mark level -- the tachyon array gaining the ability to cloak at mark 4, for instance, or the Thanatos Ark gaining it's zombification gun at mark 4.
- This gives a lot of compact flexibility.
- Added a VERY IMPORTANT new CurrentGeneralMarkLevel on the Faction object.
- It isn't used at all by player factions, but for the AI and other factions, ships will by default come out at that mark level unless told otherwise (or unless clamped otherwise by starting and max level).
- This is something we'll be incrementing for the AI so that its waves get stronger over the course of the game, and other factions are free to use this as well (though most don't really need to at the moment, since their ship levels are controlled by other things).
- For the AI, if this number is higher than the mark level of the planet a reinforcement is at, then it will use this mark level. Much as in AIWC.
- On the GameEntityTypeData class, there are now very important new MarkFor() and MarkStatsFor() methods that should be used when considering mark levels for entities that don't yet exist.
- Essentially, when an entity is to be created, we don't really know at what mark level it should be created at. Depending on if it's a player, an AI, another faction, for a wave, for a planet reinforcement, for a drone out of a specific ship... all of those cases result in potentially different mark levels.
- Thus all of that is simplified by you simply doing a few different things, and you can call these with a Faction or a PlanetFaction for added brevity of the call.
- The stats version returns the GameEntityTypeData.MarkLevelStats for the mark level, whereas the other version just returns the int for the ordinal of it. Again for syntax brevity.
- There's a version where you just pass in a faction, and it gives you the general mark level it should be. This is for things like anything to do with a player, or an AI wave or CPA, etc.
- There's another version where you pass in the faction and a planet, and for non-players that will give you the appropriate mark level for if the ship is being added to a planet as a reinforcement. Aka, the mark level of the planet, and the general mark level of the faction, both influence it. For players it is business as usual, basically the same as the other method.
- There's another version where you just pass in the mark level you want, and it clamps it if need be and hands it back to you. This is useful for drones being produced by ships, since the drone probably should be the mark level of the thing producing it (but in some cases we have something like a markless hive golem producing mark 5 hive drones, so it would try to be mark 0 but clamp to mark 5 instead).
- And lastly there's a version that is WithAdded(int) that basically says "if I had this many marks added, what mark would I be, including any clamps." This is useful almost exclusively for predicting upgraded stats on the tech tooltips.
- There are also now MarkStatsFor() methods on the EntitySystemTypeData class, matching those of GameEntityTypeData in function and form.
- This makes it much more concise and easier to get the proper data about theoretical systems that might be added in a given context. This is mostly just for the gui for placing new units, things like that.
- UnlockedAIDesigns has been removed from the AI's external data, and now it simply uses faction.UnlockedShipLines like all the other factions do. Logic is all the same.
- The metal production and energy production on planets is now more direct straight from the units that produce them, rather than being based partly on the quality of the planet.
- This is a lot more like AIWC.
- Squads with multiple subsquads were firing a shot per subsquad, all stacked on top of one another, which was needlessly heavy on the CPU and the GPU at all levels.
- It was a nice idea, and made sense to do, but ultimately was too heavy and too hard to spread out. It was mainly a visual thing, but since they were stacked you couldn't tell anyway, so it's clearly not needed from that standpoint.
- The other element of it was that squads would get weaker as they had fewer subsquads in them, but that actually wasn't fully correctly being handled in terms of shot planning and whatnot with ship DPS, etc. So dropping this function actually makes some of the ship AI slightly better.
- The game now explicitly complains if for some reason it is unable to fill a draw bag for putting entities into a given context. This would be an example of bad xml, typically, and thus a helpful debugging aid for modders and the like.
- Improved the logging on AI draw bag reading, for if there are emtpy entries ever. This will let us know when there are issues in the xml, or outright logic errors.
- In the short term this has helped us fix some code issues that were internal to this release, but longer-term it will help when there would otherwise be invisible strange behaviors from the AI. Invisible incorrectness is not so hot. :)
- AIs now properly check their effective AIP against the RequiredAIPLevel of each mark level listing. Assuming that the effective AIP is greater than or equal to that, it increases its mark level to that value. The AIs never go down in effective mark level.
- So even if you use data centers to bump the AIP back down, the effective mark level is higher for good. By design, as with the first game. Some gates just shouldn't be un-trippable.
- There is a new takes_on_color_of_the_first_ai_faction field on SpecialFactionData. When this is set to true, then the faction in question will take its color from whatever the first AI faction is set to.
- This is how the Instigators faction is now set up to work.
- There is a new takes_on_current_general_mark_level_of_the_ai_factions field on SpecialFactionData. When this is set to true, then the faction in question will increase its CurrentGeneralMarkLevel to match the highest AI CurrentGeneralMarkLevel. These factions won't ever decrease their CurrentGeneralMarkLevel.
- This is now used by all of the "I'm part of the AI but implemented as a separate faction" factions. Everything from instigators to astro trains to the warden and hunter fleets. This keeps the growth of all the parts the same across the game.
- Starships, guardians, arks, and fortresses now scale up in visual size per mark level based on a new large_ship_scale_multiplier tag on the mark level definitions.
- The scaling was previously handled per-entity-type and done by hand in the xml, leading to often inconsistent results.
- This scales the ship up visually, as well as scaling them up in their actual physical radius, which affects collisions, etc.
- The old Flagships special entity type has been removed, and a new Starships one has been added instead and is now assigned to all the starships.
- The game now checks for xml attributes that are in present in the xml but never requested by the front-end.
- This is basically typo-proofing, more than anything else. And it also helps us clear out older cruft in other cases.
- This will NOT help you find unused xml nodes, so if there's a major typo in the name of those you're out of luck and just have to notice it yourself. Node = <node> Attribute = <node attribute1="val" attribute2="val">.
- We cleared out a lot of cruft and corrected some typos, based on this. Thus fixing a few bugs we didn't even know we had just yet.
- Removed the dps multipliers from death effects (which were not even being used), and also removed the death effect defenses (which also were not being used).
UI Improvements
- When you unlock a tech, it now shows a message saying what you unlocked.
- You can now see the metal costs of things on the tech tooltips (what the old cost was and the new cost will be).
- The galaxy map tooltip for planets now shows how much science and hacking is LEFT at a planet, versus what its total was.
- Updated the controls for the plus and minus keys to match the defaults that are in the interface. They now adjust the frame size instead of the frame frequency (this speeds things up without causing extra CPU load, making it ideal for quick speedups when you want things to move faster).
- Updated the interface display for larger frame sizes to say "2x Sp." or whatever the amount is rather than "C*2", which was debugging-like and unclear. (Granted this probably was originally for debugging, it's hard to remember).
- Previously, DPS was being reported per visual thing in a squad (so DPS was divided by 20 for fighters), which was super unhelpful. It now shows DPS per squad in all cases.