Difference between revisions of "AI War 2:The Era of Discovery"

From Arcen Wiki
Jump to navigation Jump to search
Line 66: Line 66:
 
* 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).
 
* 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.
 
** 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.
 +
 +
* 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.
  
 
=== Tutorial ===
 
=== Tutorial ===

Revision as of 11:56, 16 August 2018

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.
  • 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.760

(Not yet released -- we're still working on it!)

  • 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.
  • 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.
  • 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
  • Fix a few null reference exceptions in the vis code
  • 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.
  • 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.
  • 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.

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
    • New Fleetships
    • New Starships
    • Golems For Capture
    • Mercenary Beacons
    • Other Factions
    • Other Capturables
    • Other Destructibles
      • 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.

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.
  • 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.

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.
  • 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.

Hey Testers! We Have Some Questions

  • Questions for testers (now that we're breaking everything):
    • Is the Dark Spire Eidolon's lightning attack the eater of worlds? Aka does it do too much damage?
    • Do tractor beams work?
    • Does cloaking work? And tachyon beams?
    • Do any ships seem to have way too little health or attack or range?
    • Does engine damage and repair seem to work?
    • Does paralysis work?
    • Can command stations be upgraded?

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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.

Prior Release Notes

AI War 2: The Pivot