Difference between revisions of "AI War 2:The Arrival of Fleets"
|Line 474:||Line 474:|
* The Fortress is now a form of Battlestation.
* The Fortress is now a form of Battlestation.
** Puffin: this is only kinda-sorta set up in the xml, and needs more work.
** Puffin: this is only kinda-sorta set up in the xml, and needs more work.
== Prior Release Notes ==
== Prior Release Notes ==
[[AI War 2: Early Access Starts!]]
[[AI War 2: Early Access Starts!]]
Revision as of 12:23, 21 March 2019
- The lobby interface is currently temporary, and undergoing a complete overhaul.
- It's suggested that you use the quick start option instead.
- Various bugs on mantis: https://bugtracker.arcengames.com/view_all_bug_page.php
- Multiplayer is temporarily disabled while we focus on tightening up the single-player loop.
- There are a variety of ships/units that don't have final graphics at the moment, though they all have their icons.
- We're in progress with a major revamp of some systems based on cumulative feedback in order to push the game even more towards the feel of the original game... despite further divergence from it at a mechanical level.
What's this phase all about?
After 3 months of Early Access and 2+ years of development, we've reached a point where we know what we want the 1.0 version of the game to look like. SO very much about this game already works well, but there are some major deficits coming into this phase when comparing this sequel to the original game. The aim of this phase is to close those gaps and make this clearly the superior product in terms of playability, fun factor, the amount of fun thinking-about-interesting-challenges you do during gameplay, and so on.
There's also of course still more polish and bugfixing that we want to get done, and the lobby redo is still scheduled of course (but quick starts are an awesome alternative, and have helped us to defer a final design for the lobby as we formed up some other bits of the game first), but we're feeling really good about this final sprint toward 1.0. We still do need to also finish some graphics for the existing ships, but they all have their icons.
There is some more content coming as part of this phase, kind of by definition -- fleets as a concept Change Everything in a good way -- but the focus is on taking what is a pretty awesome game with a lot of depth and pushing it to a level that we hope beats the pants off the original, finally. Stay tuned.
(Not yet released -- we're still working on it!)
We are breaking all the savegames again, sorry about that. This should be the last time for real for real, although we've said that before. It's not our practice to do this sort of thing at all, typically, but this game has been going through a lot more pre-release evolution than most of our titles have. The old savegames won't even make sense in the new version, really.
- Science Labs, Hackers and Scouts are removed. Scout functions of the Sentinel Frigate and Sentry Starship are removed.
- Sentry Starships are now per-planet cap, cannot use wormholes, are built directly (like turrets) and die to remains.
- They're effectively Decloakers from Classic, but far more convenient.
- Dyson Spheres will remain antagonized much longer after hacks.
- More hacks against a Dyson Sphere will increase the antagonization time.
- Engineers are per-planet cap, cap reduced significantly and can't use Wormholes.
- The new Combat Engineers are able to use Wormholes and are a type of Strikecraft instead.
- Mobile Space Dock and Mobile Builder are not unlockable or buildable, and are instead capturables.
- Remains Rebuilders are removed. Command Stations and Mobile Builders do this now.
- Gives some units unused voice lines, and the Dyson ships the Zenith voice.
- Engineers and other similar civilian ships now actually talk!
AI Behaviour Changes
- The AI will now be less worried about distant mobile enemy forces.
- The AI will no longer mistakenly count Guard units as Threat in some code paths
- Make some improvements to hunter/warden fleet routing logic
- Thanks to zeusalmighty for the Hunter/Warden save game
- Each AI faction now has its own Hunter/Warden fleets. The units of each Hunter/Warden will just show as "Hunter Fleet" or "Warden Fleet", but there will now be multiple fleets acting independently. The goal of this is to make those fleets much more flexible in how they deal with enemies.
- Only one Hunter and one Warden are visible in the game lobby. The other hunter/wardens will copy the colours but not the settings of the visible Hunter/Warden.
- Add a highly experimental option to the Game Lobby, "AI Civil War". This will make all of the AI factions hostile to eachother. The Warden and Hunter Fleets will remain friendly with all the AIs.
- This is intended for testing purposes and for people who like playing AIW2 as a sandbox simulator.
- The targeting code now treats XML-based importances as more important than 'amount of damage I can do'; this makes it less likely for units to ignore Command Stations and other high-value targets in favour of fleetships
- Change how overkill is calculated; only count units that are actually in range of the target
- This makes ships less likely to dance between multiple targets, unable to pick which one to attack.
- Don't throw away Distance to Target information when choosing a target
- This also makes ships much less likely to do the "can't decide on a target" dance
- Several map types have been improved by Draco.
- Thanks Draco!
- Make the Simple and Realistic map types more interesting by fixing a dumb bug in them.
- The Max/Min number of planets in the galaxy is now defined on a per-map type basis rather than a global (since some maps scale up to larger galaxies better than others)
- Some map types go up as high as 500 planets, others are capped at an AIWC-like 120 planets
- Science Extraction hacking will now show the total cost for the remaining science on the planet in the tooltip
- Requested by Ecthelon on Steam
- Hacking has been feeling a bit too easy these days, so include AIP when calculating how strong the hacking response should be for hacks against the AI.
- The formula is now NewHackingResponse = oldHacking Response + (oldHackingResponse * AIPMultiplier * CurrentAIP)
- Add the Sabotage hack
- This will kill a random NormalPlanetNastyPick structure on a planet. Many people have asked for this.
- Allow hacks to be done against planets, not just structures
- Allow hacks to be done without a local hacker on the planet
- Allow the AI to launch an attack against the player after hacking is completed
- These can be set on any hack with an XML tag. So all the previous hacking mechanics can continue to function as usual, but new options are now available.
- Fix a bug in the entity hovering ui where it was incorrectly identifying energy overdrive as an attack penalty
- Thanks to Democracy for the bug report
- Fix a bug where the Zenith Trader (Traitor!) was allowing the AI to buy way too many goodies
- Thanks to lots of people for reporting this, including Jannik2099 and Ovalcircle
- Fix a null reference exception when handling GameCommands
- Thanks to jannik for the bug report
- Fix a problem where v-wings were having damage multipliers based on buildings lack of engines
- Thanks to weaponmaster for the bug report
- Correctly flag the "Download Dyson Sphere Ship" hack as unavailable after that hack has been completed
- Thanks to Ecthelon on steam
- Fix a bug where vengeance generators were warping in already vulnerable to damage
- Thanks to WeaponMaster and zeusalmighty for the reports
- Add an Objective for hacking the Spire Archive
- Thanks to settemio for the reminder
- Only seed one spire archive per AI
- Thanks to WeaponMaster for the report
- Spire Archive isn't invulnerable to all damage, meaning it properly dies after being hacked.
- Thanks to Democracy for reporting.
- Spire Archives now show on the galaxy map.
- The Superterminal now explodes after the hack finishes, instead of using a kludgy and bug prone mechanism to prevent it from being hacked multiple times
- Thanks to Lifestrider and zeusalmighty for bug reports
- Fix a typo in the settings menu for multiple AI types
- Thanks to coldrage101 for reporting
- Cleaned up all entity names, from in the past when they changed function (i.e LaserTurret to NucleophilicTurret).
- Also cleaned up and standardised all the entity system names, and cleaned out a few that were redundant.
- This should make it a bit cleaner to work with in future, as there's no weird cases of there being a WidowGuardian, which is really the Paralysis Guardian, but it shows up as the Widow in all the internal files!
- The Widow Mine is now the Paralysis Mine, and the Grenade Launcher fleetship is now Grenade Launcher Corvette - seeing as it has the Corvette icon and all.
- Sentinel Frigates are now Sentinel Gunboats.
- Anything in future, like Lightning Torpedo Frigate will use the term Gunboat instead.
- Fleetships are now called Strikecraft, and Starships are now called Frigates.
- Space Docks are now simply called Factories, Mobile Space Dock is Mobile Factory, and the Starship Constructor doesn't exist at all now.
- Both Strikecraft and Frigates come out of the same building.
- Not a rename, but a recolour. Human Resistance Fighters and Marauders have a primary green that shows up better in game, and matches what it is in the lobby.
- Thanks to TechSY730 for reporting.
- Adds the "Harasser" variant of the MLRS Corvette.
- Adds the "Porcupine" variant of the Pike Corvette.
- Adds the "Ablative Troll" variant of the Ablative Gatling.
- Adds the "Dagger" variant of the Raider.
- Adds the "Gunbot" variant of the Autocannon Minipod.
- Adds the "Velociraptor" variant of the Raptor.
- Adds the "Stalker" variant of the Eyebot.
- Adds the "Tripper" variant of the Sniper.
- Adds the "Railpod" variant of the Sniper.
- Adds the "Pulsar Punk" variant of the Pulsar Tank.
- Adds the "Aggressor" variant of the Agravic Pod.
- Adds the "Mirage" variant of the Space Plane.
- Adds the "Hydra" variant of the Vanguard.
- Adds the "Zapper" variant of the Inhibiting Tesla Corvette.
- Adds the "Terrier" variant of the Spider.
- Adds the "Molotov" variant of the Grenade Launcher Corvette.
- Adds the "Ranger" variant of the Sentinel Gunboat.
- Adds the "Medic Gunboat" variant of the Sentinel Gunboat.
- Adds the "Absorber" variant of the Vampire Claw.
- Adds the "Thief" variant of the Etherjet.
- Adds the "Paralyser" variant of the Stingray.
- Adds the "Cluster" variant of the Auto Bomb.
- Adds the "Nanoswarm" variant of the Auto Bomb.
- Adds the "Persuader" variant of the Parasite.
- Tesla-class structures (Guardians, turrets, etc) now reduce incoming damage from far away by 99% instead of 100%. This allows the targeting code to identify Tesla units as potential targets (instead of ignoring them as if they were Invulnerable). Units in FRD (and minor factions) should now be able to actually attack Tesla turrets.
- Many people have complained about this, including TechSY730 and Democracy.
- Ark Energy Overdrive is removed for now. Find another place for it (likely in a changed form).
- Sniper damage bonus requirement reduced from speed 1200 to 1000.
- Sniper: Starting bonus multiplier 5x -> 8x.
- Space Plane gets the damage resistance to anything beyond range 4600 instead of 5600 now.
- Basically you have to be closer to it to do full damage. Also means that when using Pursuit, they try to stay beyond that.
- MLRS units have half the shots per salvo, but reload in half the time.
- Helps them retarget more often.
- MLRS units get their damage bonus at 30% enemy hull remaining, instead of only 20%.
- Vanguard, Pulsar Tank: Albedo 0.7 -> 0.3.
- Vanguard, Pulsar Tank, Inhibiting Tesla Corvette, Grenade Launcher Corvette: Mass 0.21x -> 0.3x.
- Vanguard: EngineGx 8 -> 7.
- Raptors, Autocannon Minipods, Space Planes, Agravic Pods, Vampire Claw, Raid Frigate, Warbird Frigate, Eyebot, Stealth Guardian: Albedeo increased to 0.7.
- Concussion Corvette, Sentinel Gunboats, Snipers, Siege Frigate, Tritium Frigate, Warbird Frigate, Tritium Guardian, Concussion Guardian, Plasma Guardian: Armour reduced to 40.
- Concussion Corvette: Shields 2,800 -> 1,800, EngineGx 8 -> 14.
- Vampire Claw: Armour 40 -> 70, Life Leech reduced from 1.5x to 1x.
- Raptor: EngineGx 7 -> 10.
- Raptor Hull: 2900 -> 1900.
- Stingray, Etherjet, Metabolizing Gangsaw: EngineGx 7 -> 14.
- Inhibiting Tesla Corvette only applies reload penalty to armour below 60.
- Siege Frigate: Damage 2500 -> 25,000, spreads it among targets instead of hitting 10 for full damage, range 10,100 -> 12,000.
- Grenade Launcher Corvette, Vanguard, Pulsar Tank (main gun only): Range changed to 4200.
- Grenade Launcher Corvette, Vanguard: Speed reduced to 400.
- Grenade Launcher Corvette: Hull 1,000 -> 1,400, shields 1,000 -> 1,600, EngineGx 8 -> 7.
- Grenade Launcher Corvette, Inhibiting Tesla Corvette: Armour increased to 110.
- Inhibiting Tesla Corvette: Shields 2,000 -> 3,000.
- Etherjet: Damage 30 -> 20.
- Fortified Tesla Turrets have a similar damage bonus to Ablative Gatlings now.
- Makes them a bit more interesting, and also some room for other changes.
- V-Wing: Hull/Shields changed from 500/3500 to 2000/2000.
- Pike Corvette: Armour 50 -> 70, range 8,000 -> 6,000, shields 200 -> 800, speed 700 -> 500.
- Eyebot: Hull/Shields 1,000/1,000 -> 800/800, armour 50 -> 60.
- Agravic Pod: Armour 50 -> 70.
- Dark Spire get a bit less energy if they're the ones that killed something.
- Nucleophilic Guardian: Armour 90 -> 50, albedo 0.7 -> 0.3.
- Concussion Guardian: Hull/Shields changed from 20,000/20,000 to 10,000/30,000, EngineGx 12 -> 14.
- Spider Guardian, Paralysis Guardian: Speed 1,400 -> 400.
- Spider Guardian: Range 15,000 -> 8,000, Armour 90 -> 40.
- Paralysis Guardian: EngineGx 13 -> 7, Armour 90 -> 110, range 8,000 -> 5,000.
- Grenade Launcher Guardian: Albedo 0.4 -> 0.3, EngineGx 14 -> 7.
- Pike Guardian: Armour 50 -> 70, EngineGx 14 -> 7, range 8,000 -> 6,000.
- Tractor Guardian: Albedo 0.7 -> 0.3.
- Gravity Guardian: Albedo 0.7 -> 0.4.
- Reintroduce the Plasma Turret.
- Closer to Heavy Beams than the rest.
- All Turrets except Beam and Plasma have 10% lower health, but 15% greater damage in exchange.
- Turrets felt like they slap the enemy to death slowly while outlasting everything. This is minor, but speeds it up a tad.
- Slow the increase in cost for Science hacking multiple planets
- Thanks to Ecthelon on Steam for the suggestion
- Add Achievements for winning a game with each AI type enabled
- Add Achievements for winning a game with some of the Minor factions enabled
- Add Achievements for winning a game with various galaxy sizes
- Add Achievements for controlling a given number of planets in a game
- Add Achievements of the form "Have > X Metal/Energy/Hacking points"
- Note that the above types of Achievements can be added to the game with only XML changes
- TODO: Add a UI to show the player which Achievements have been earned
Big List Of Game-Tech Changes
- The science and hacking scales, which were 1000 and 15 previously, have now been removed.
- Now there are science and hacking amounts per planet, and those are now 2000 and 30. Same as before, but more directly set now.
- Similarly, the starting science and hacking amounts are now just set directly rather than being a matter of a multiplier. This just makes things more clear.
- The Balance_TechCosts stuff, xml and otherwise, has been removed.
- A new TechUpgrades table has been added instead.
- This has the ability to have fleet-specific upgrades and upgrades that benefit ships in a variety of fleets.
- Ark Upgrade Points and Destruction Points are both confusing and have been removed from the game as a concept.
- But never fear, something very similar with a clearer name and purpose is being added back: Fleet Experience Points.
- Formations, which were in early versions of AI War 2 and tied to control groups at the time, have been renamed Fleet Formations and are actually coming back!
- This is pretty exciting, as they can have custom code of whatever manner, so if you have some way you want to organize things, you can set it up that way. We may not do much with this for a while, but it's a huge returning tool.
- Build Queue Policies, which were in early versions of AI War 2 and tied to control groups, are being phased out. Along with the metal budget policies.
- Also the underlying old style of build queues are going away.
- can_only_be_placed_on has been removed, as it no longer really needed.
- Same with sensor ranges and sensor scramblers.
- cap_is_per_planet has been removed, and fleet_membership has been added instead. It has the values: CrossPlanetary (default), and Planetary.
- cannot_traverse_wormholes has also been removed, and now anything that is Planetary simply can't cross away from the current planet.
- can_be_built_on_enemy_planets has been removed, as that is now something that is based around the fleet that the type belongs to at the time. It's all contextual now, in other words.
- testing_ship_line_unlocks_to_start_with has been removed, since the unlocks don't really work that way anymore.
- Same with starting_unlocked_ship_lines.
- Colony ships have been removed from the game, since that was a level of indirection that was not needed.
- Similarly, hackers are gone, as are mobile builders in the classic sense.
- Starships are now called Frigates, including in the codebase itself. Docks are now called Factories in the codebase.
- Design Template Servers in the codebase are now gone. The concept of warheads, in the codebase, is now gone.
- In the SpecialEntityType lookup, the differentiations for Golems and Arks are now both gone. Instead they are both just classed as Flagships. From a mechanical stantpoint there's now no difference between them in a general way.
- Additionally, things like mobile builders are gone in a special type sense, and are now just considered Battlestations.
- Each mobile fleet of the player, which is centered around a flagship of whatever sort, now calculates a list of all the Factories (formerly Space Docks) that are on the same or adjacent planets to the flagship. These are the docks that will produce units for that factory.
- Rather than being inferred from the build menu (in a rather inefficient way, actually), drones, are now a new SpecialEntityType.
- A variety of data that was previously specified various ways (am I a command station, etc) in the xml has all been normalized to use the SpecialType now.
- The MetalFlowPurpose of BuildingShipsInternally is now FactoryConstructionForPlayerMobileFleets instead.
- EntityContentsRecord, which has been used only for drones for a while now (wellll... mostly), has been removed entirely. Drones are now handled as fleets like anything else.
- "BuildMenus" are now gone, and their (unused) build patterns.
- The way that these are handled is now as FleetDesignTemplates instead.
- For organization of the Build part of the sidebar, there are now BuildSidebarCategory tables.
- These handle odd cases like command stations, command station upgrades, and the Zenith Trader a little bit better than before.
- These are separate from the Fleet Design Templates, since these are about UI organization, which is different from the underlying data providers now (before those were unified in a way that was not helpful).
- drone_build_menus has been removed, and now is replaced by fleet_design_template_i_use_for_drones.
- built_by and tech_cost have both been removed, and are now replaced by:
- fleet_design_templates_i_am_part_of, tech_upgrades_that_benefit_me, and build_sidebar_categories_i_am_part_of.
- build_menus has been removed, and is now replaced by the following pair: fleet_design_templates_i_grant_one_of and fleet_design_templates_i_always_grant.
- Really key new limitation for drones, for the sake of sanity and not having nested fleets. This really only applies to player ships, in the main:
- The drone producer must also be the fleet leader. So if we're talking about a player ship, it needs to be the Battlestation or Flagship of a fleet, and not something like a random Frigate as part of it.
- On the AI and NPC sides, they don't really use fleets the same way normally, so anything that is a drone generator just becomes in charge of a new Drone fleet type.
- This is probably going to be the source of some "fun" bugs. It will start spewing errors like crazy when this happens (once per second per ship that has this issue during gameplay), if it happens. It's possible to set this up with bad xml, basically.
- Player profile stuff relating to choosing a default Ark type is now removed under the hood. It hasn't been on the front-end for quite some time now.
- Note that a lot of the stuff with Arks having a story and a portrait image are thus now gone, although again this isn't new on the front-end. Arks simply have a new role now.
- There is a new List<RefPair<GameEntityTypeData, int>> AIReinforcementPointContents on squads, which basically replaces the main usage of the EntityContents that was previously there in a non-drones capacity.
- This allows for reinforcement points to continue to accrue reinforcements as they always did, without it getting odd or into a Fleet-based situation.
- The reason for this being separate is that this was a smaller amount of code, to be honest, and also it doesn't have anything in common with being a fleet once the ships are actually deployed.
- Any ships that are attempted to be used as drones but that have a type that isn't special_type="Drone" now won't actually be built.
- I'm sure THAT won't ever confuse anyone...
- For drones, their squad caps are now used to define how many drones of their type can be held at a given drone fleet.
- Aka, a drone producer can now produce one cap's worth of whatever type of drones it has within its fleet type.
- All that business with max_drone_strength_in_caps and max_drone_strength_in_caps_added_per_mark_level is thus gone. It was confusing an indirect, holy cow.
- Optional new multiplied_frigate_ship_cap_for_drones (FInt) and multiplied_nonfrigate_ship_cap_for_drones (FInt) have been added, which let you make certain types of drone controllers stronger than others.
- You can have multiplied_nonfrigate_ship_cap_for_drones="1.5" to make it so that all of the caps for any of its non-frigate-style ships are now 1.5x more than baseline, for one example.
- Given that most ships that would be drones are either frigates or strikecraft, but that strikecraft are not super well defined in code (kind of being "it's a strikecraft if it's not something else"), this lets us be a little more specific than just having an overall multiplier, without going crazy wuith multiplier counts.
- SquadCap is now GeneralSquadCap, since that's now more of a guideline than anything else. It's now a lot more fleet-specific.
- StrengthPerCap has been removed, since that's no longer... something that makes any sense in the new system. It was based around SquadCap.
- The Remains Rebuilder has been removed, and the RebuildingRemains metal_flow has now been granted to all of the player command stations and the player mobile builders. It's no longer something that is assist-line-distance-based, nor is it something that requires a dedicated unit to run around doing things with.
- This is one of those streamlining bits that people have requested for a while, but Chris in particular was noting that engineers and rebuilders need to be two separate functions (and they do). But making this instead essentially work like claimables and "just happen" solves the issue that people were complaining about without getting into territory of making the AI for the engineers likely to be bonkers.
- Later we will need for all of our battlestation types to have this, most likely, or things will get funky at times. This last is a note for Puffin.
- Some confusing stuff in metal flows with recipients versus potential recipients has been simplified into simply one list (for squads), and now also has a separate list for fleet memberships.
- There may have been some bugs in this area previously, but the code was so hard to read it's hard to be sure. If there were bugs, they should now be fixed.
- The various types of "ships rally to X location after construction" are now gone, with instead all the ships from docks rallying to their fleet centerpiece, whereever that may be.
- This is highly automated and much more the default thing we want to have happen.
- During direct placement of things like turrets, the mark level is not drawn on the icon, at least not for now.
- It's not clear that this is really needed anyway, and right now it's mildly difficult to calculate. Remind us to add this back in if it bugs you (ArcenPlacementGimbal.cs).
- Okay... BuildMenus really were being used ALL OVER THE PLACE for a bunch of different purposes.
- ai_ship_groups_i_am_part_of has been added, with a new AIShipGroup class that goes along with it. This should make things a little more clear in the xml and code, despite it being mildly duplicative with the fleet design templates. Odds are fair that those will continue to diverge anyway.
- TryToSpendBudget_CPA has had some updates to how it deploys ships from itself, since the way it stores ships is different from the start. This may or may not cause demonic fumes to erupt, so let us know.
- The gameplay settings for automatically building remains rebuilders and setting them to auto-FRD are both now gone, since so are remains rebuilders.
- The gameplay settings for "brave scouts" is also now gone, since scouts are also being removed and rejiggered.
- Design Template Servers have been removed. They were not exactly exciting, and they don't make sense in the new method of AIs working with unlocked ships/
- UnlockShipLineForAI() has been removed, as AIs don't work that way anymore, either.
- ship_lines_to_start_with and ship_lines_forbidden have been removed, as we're going to handle that aspect of AIs a bit differently, too.
- The ability to choose your starting bonus ship type has been removed from the lobby, as that is yet another thing that no longer makes any sense in the new tech/fleet setup style of the game.
- Schematic Servers (formerly ARSes) have been removed. Those also no longer make sense in the brave new world that is the new setup for fleets, etc.
- The idea of CorruptedAIDesigns has been removed, as that was something that people weren't really using and it doesn't fit well with the new approach to AIs and fleets.
- The concepts of destruction points and Ark Upgrade Points are both gone, and replaced by Fleet EXP instead. This works similarly to both of those other things, in that if your fleet centerpiece is on a planet with an enemy ship that dies to your forces, then that fleet gains some EXP. More for big-ticket items.
- The keybind for "select all scouts" has been removed, since scouts are removed.
- SelectNextUnitType and SelectPreviousUnitType have both been removed, as they were buggy like crazy in general, and also don't really make all that much sense in the new workflow of things.
- The default serialization style for things the game saves is now Byte arrays rather than the char arrays. This will make savegames vastly smaller than before, although not as legible (as if they were before) to edit by hand.
- This is great for a variety of practical reasons, but among them it causes fewer transient garbage collector allocations. And it also makes it so that large integer numbers are no longer something that make the savegame larger. Rather than one char's worth of bytes per digit in the number (1-6 bits, per UTF-8 specs), it now just has a fixed 4 bytes for the number regardless of how many digits it has.
- This breaks all the previous savegames, but they were already broken anyway.
- Player profiles and settings are still using char arrays so that they can be edited by hand as desired.
- There was previously a "too smart for our own good" method for "compacting" integers down that were used as primary keys. This could cause all sorts of bugs when used incorrectly, and aside from known bugs that this fixes, we happened to see a few other bugs in passing as we were removing it.
- Note that this was needed almost exclusively because of the char arrays serialization that we were using. Now that we're using byte arrays, this compacting is not just bug-prone it's actually not any more efficient in the first place. So it's really good to have that out of there in general.
- Thanks to DEMOCRACY_DEMOCRACY for reporting a particular bug caused by this.
- Items that are truly deprecated, but that we still want some record of for whatever reason, are presently moved into a new GameData/Pre900Deprecated folder.
- This way we still have the xml, but the game never looks at it. Normally the purpose of deprecating something is to make sure that savegames that are older can still be read in. With 0.900 we're breaking the savegames anyway, so clearing out the deprecated stuff is only natural.
- is_bonus_ship has been removed, as the concept no longer has any relevance in the new fleet style of unlocks.
- The general TechUpgrades xml data no longer has anything about fleet-specific upgrades in it, since that wouldn't make a whole lot of sense anyhow. Those will be handled through the interface elsewhere.
- The initial techs have been added, and applied to ships and turrets and whatnot.
- This is, at best, a first pass for now. However, there are are present 14 distinct techs that you can upgrade that are more ship-abilities-focused, and which are generally shared between strikecraft, frigates, and turrets. This is the general intended design, even if exact matchings aren't correct or ideal right now.
- The costs here are also potentially bonkers for real-world use. Additionally, there is a maximum number of times a given tech can be researched, and that is usually set at 4 right now, kind of arbitrarily. That does NOT mean that the max tech level of a ship is 4, however.
- Ship tech levels are a combination of all the techs that benefit them (some have more than one), as well as any upgrades to the tech level of their specific fleet. So some are much easier to get to a VERY high mark now, whereas others are almost impossible to do.
- There is now a new UpgradeMeFromFleetOnly tech that isn't shown on the menu, but which we use in cases where we want to denote that this IS something we can upgrade, but only at the fleet level rather than the ship level.
- This is used for things like command stations, engineers, economic production units, and forcefields. That makes these things a lot more location-dependent in terms of how high quality your ships of those sorts are. This should be pretty interesting, actually, and it takes them out of contention for the main science upgrade costs more.
- Overal the goal here is fewer science upgrades happening, but each one having a much larger impact. We may have gone too far in that direction with this first setup of the data, but at this point it's all an xml-based issue.
- Note that all of these techs are based around upgrading all the ships that you have that subscribe to this tech via tech_upgrades_that_benefit_me, and that crosses fleets.
- Badger: it would be nice if this benefitted mercenaries, although it's not clear right now if that's the case that it would. If it's a separate faction then it would not, probably. If mercs are their own faction, then I probably need to build a general way in that says "hey I inherit whatever techs from the player" on a per-faction-definition basis.
- Puffin: I did base this loosely around your classes/roles document, but this is meant to be... slightly both more and less granular than that document, and to be multi-categorized in many cases. So your document is still relevant (mainly for fleet design), but it's just semi-related to this specific use.
- It's also worth noting here that some ships/turrets/whatever have multiple tech_upgrades_that_benefit_me, and those are going to go up in tech quality FAST by comparison to their peers. Assuming that players unlock techs synergistically. So some of the ones like the Light, Heavy, etc, might need to be a lot more expensive than they are right now.
- As noted already, the balance here is a bananas basic proof of concept right now, and I'm sure broken in a thousand ways. The only purpose of me throwing this together at the moment was to give a proof of concept unified design philosophy to look at, even if details are really wrong. This gives Puffin and others a chance to actually make it make a lot more sense while I move on to work on other things.
- Note that the EXP concept doesn't come into play at ALL with these sorts of techs. These are purely science costs. The EXP is fleet-based stuff instead, and may not cost any science at all (fleets that auto-upgrade would be nice). But also spending some science on a specific fleet's upgrading would be nice, so that's something that will likely be possible. How that works at the planet level is still TBD, I have two different possible models for that and haven't been able to choose between them yet.
- Also please note that for an individual ship/turret/whatever type, there's no risk of it going above its max mark level, which is either 7 or is explicitly defined as something lower, or is markless. If it subscribes to 2 techs that each have 1 upgrade, it would naturally be mark 3, unless it's capped at mark 2 in which case it will sit at mark 2. And if its fleet is also upgraded 3x, then it would be mark 6, unless it was capped lower.
- A general note: This overall tech system has way fewer decision points than the old one, which is good because that makes them actually something that you can contemplate. However, as a byproduct of that, you'll often get some secondary stuff upgraded that you cared less about, and that actually provides opportunities for you to make new use of them in interesting ways if you so choose. Also also, you're a lot more likely to have really wide mark level disparities between parts of your empire (different planets and fleets), which is more in keeping with the first game albeit from a completely new angle. This is exciting.
- Another general note: the overall ship caps per fleet will only be whatever they are, but the idea is to have larger effective ship caps for players by the late game because of a proliferation of fleets. In some cases in the late game you'll also have some fleets that are incredibly technologically superior to the AI, and other fleets that are incredibly behind the times. How this exactly plays out will be interesting to see from players, but in a theoretical sense there's nothing wrong with that; we may just have to adjust some balance dials over time to keep things from being TOO extra weak or strong, and/or to make the AI really reactive to overly-advanced forces if those exist. Here again this is an opportunity for more gameplay, rather than a real challenge in a negative sense.
- The Mobile Builder is now the Basic Battlestation.
- Puffin: This is something that we'll want to actually make copies of and have 4-5 variants that actually have unique qualities, and ditch the basic version.
- The Mobile Factory is now the CombatFactory.
- Puffin: We may want a couple of variants of this, up to you. One that is more heavy on the factory-ish nature of itself, and one that is more about spawning a metric ton of combat engineers, for instance?
- The Fortress is now a form of Battlestation.
- Puffin: this is only kinda-sorta set up in the xml, and needs more work.
- On factions, there is now a InheritsTechUpgradesFromPlayerFactions serialized bool that should be set to true for any factions that the designer wishes to recieve all of the upgrades for the player techs.
- Aka, if two players each have upgrades to Tech A, then the faction will get the largest of the two, not the combined value of them.
- Badger: this should be set to true on Mercenaries. I haven't done that bit yet.
- Implemented GetCanUnlockTech, which is based around the concept of GetCanUpgradeOrUnlockShipLine from pre-0.9, but is based on the new logic instead.
- Similarly, implemented UnlockTech, which replaces UpgradeOrUnlockShipLine.
- The ship_cap_multiplier actually works now in the new system. It won't increase the caps for anything with a cap of 1, though, just FYI. It also can't be used to reduce the cap.
- Puffin: We need a better name for AdvancedFactory, and should adjust the code and xml accordingly to have the new name. It's confusing now in general because of our nomenclature changes and because it's the same name as something from the first game but works differently.