View Issue Details

IDProjectCategoryLast Update
0020168AI War 2Gameplay IdeaSep 25, 2018 11:08 am
ReporterChris_McElligottPark Assigned ToChris_McElligottPark  
Severityminor 
Status resolvedResolutionfixed 
Fixed in Version0.775 Unit Stacking 
Summary0020168: automatic strength calculation
Description-automatic strength calculation
-show strength in tooltips
-way to add to strength and set strength multiplier for ships that are outliers
TagsNo tags attached.

Activities

Chris_McElligottPark

Sep 25, 2018 11:08 am

administrator   ~0049470

* The concept of a strength multiplier (for visual display purposes) on the mark level is gone. There is now an attack multiplier instead, like the hull multiplier that exists there.
** As the mark levels go up, we're now introducing ever so slight of a creep to the attack compared to the hull values. This makes battles between two mark 7 ships take very slightly less time than their mark 1 counterparts battling would. The effect is super duper slight, though.

* There used to be a required "strength" integer on all units. That has been removed, and strength is auto-calculated now.
** The existing field was renamed to old_strength, and its sole purpose is for a comparison point when manually looking at the GameEntityReferenceData.csv export in the PlayerData folder.

* The GameEntityReferenceData.csv export in the PlayerData folder now has the strength field moved up to column D, and then has the "old strength" in column E, and the difference between the two (new-old) in column F.
** Note that this csv file is used just for populating the wiki, or for people to use as a direct reference. It's an export only, it has no gameplay purpose directly. It gets generated every time you launch the game.
** So if you're balancing a unit, you can make some changes in xml, then run the game and check out your updated csv file. Tip: if you're using excel, be sure to close the csv file before you run the game, because excel locks the file from external editing while it's open.

* The way that strength is now calculated is very simple, and it is NOT multiplied by mark level anymore.
** In other words, it recalculates this independently at each mark level, rather than calculating at mark 1 once and then multiplying for the higher mark levels.
*** This means that there can be some WILD swings in the strength of a unit at higher mark levels if it gets extra guns at higher mark levels. Just something to bear in mind. The export presently only writes the mark 1 versions of units.
** The formula, per mark level, is simply: ( (hull health at that mark level) + (shield health at that mark level) + SUM( DPS of each weapon at that mark level) ) / 200. Minimum 1.

* What exactly does the "strength" value affect?
** It affects the values shown in the interface to the player, which is important to decision-making but not actual gameplay.
** It affects the values that the AI and other factions use to calculate risk and opportunity when considering planets to attack or defend. So this DOES affect AI/NPC behavior quite a lot if it thinks that something is much stronger or weaker than it is in reality.
** It affects the "cost" of units that the AIs and NPCs pay in order to purchase units for waves, reinfocements, etc. Where the player spends metal, AIs and NPCs spend strength budget points.
*** This also applies to how mercenary units determine what to bring with them; they have a strength budget that gets randomly allocated to their allowable units when you hire them.

* With this in mind, it is sometimes going to be desirable to multiply the strength value to get a different number.
** Usually this is because there is some other factor going on with the unit. The DPS calculation does not take into account any multipliers to outgoing or incoming damage, for example. It doesn't take into account any strange special effects like zombification.
** Therefore, to allow for human fine-tuning of the strength calculations, we have a strength_multiplier field that can be set to a floating-point-style number (actually a fixed-int on the inside).
** This can be set to adjust units to be valued as more or less threatening, plus more or less expensive to the AIs/NPCs to purchase.
** One good example is Snipers -- they come out with a strength value of 3, because their base attack speed is very very low. However, they have a 10x attack multiplier against fast targets, and that isn't reflected at all. So we added a strength_multiplier="2" to make them show up a bit more appropriately.
** On the flip side we have Scouts, which come out with a strength value of 25, which is ludicrous. They have no guns at all, but a lot of shielding; so they're weak to anything that fires through shields... plus anything that shoots in general. For now we've set a strength_multiplier="0.3", putting them at a final strength of 8.
** Note that we HAD internally talked about using a strength override instead of a strength multiplier, but because we're calculating these values per-mark-level rather than at the base and multiplying, that really isn't possible. This approach also makes it so that changes to units with a multiplier are automatically reflected, whereas if it was a flat override that would not have been the case.

Issue History

Date Modified Username Field Change
Sep 6, 2018 10:33 am Chris_McElligottPark New Issue
Sep 6, 2018 10:33 am Chris_McElligottPark Status new => assigned
Sep 6, 2018 10:33 am Chris_McElligottPark Assigned To => Chris_McElligottPark
Sep 25, 2018 11:08 am Chris_McElligottPark Status assigned => resolved
Sep 25, 2018 11:08 am Chris_McElligottPark Resolution open => fixed
Sep 25, 2018 11:08 am Chris_McElligottPark Fixed in Version => 0.775 Unit Stacking
Sep 25, 2018 11:08 am Chris_McElligottPark Note Added: 0049470