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 missing, as we need to redo it.
- 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 so that you have a really good sense of discovery.
Version 0.759
(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!
- 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.
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!
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.
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.
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?