Author Topic: Balance in the sequel  (Read 11150 times)

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Balance in the sequel
« on: December 08, 2016, 12:19:48 pm »
The Problem

Classic was hard to balance for several reasons.

One, there was a metric ton of stuff, mostly interrelated, and balancing something often meant making it OP/UP compared to other stuff that was also out of whack.

Two, players (including myself) were attached to (or repulsed by) certain units/mechanics/tactics and this tended to skew their ideas of how powerful or weak those things "should" be.

Three, there was no coherent concept in the game itself of keeping things in balance. I attempted something like it in the later years with the "Strength" measurement, more formal concepts of Cap-hp, Cap-dps, standardized attack bonuses, etc, but overall it was a set of bandaids that only moderately helped the problem.

The Goal

All that said, AIW isn't PvP. Our goals for "balance" aren't the same as a competitive game. The point isn't to constrain the power of one side or the other. The main point is to make sure there aren't things in the game that just never get used (aside from players who don't know better, or who have a personal affinity) because other things are always better. A secondary point is to make sure that your AI opponent isn't massively easier or harder for the sole reason of it randomly rolling a particular unit type.

In other words: the point is to not short-circuit the fun.

The Solution

One, we're starting with a smaller set of stuff than Classic, and in alpha/EA the set will be even smaller, so that we can work together to look at the balance as a whole and fix problems with the foundation before we build the ground floor, and fix the problems with the ground floor before we build the second floor, and so on. I'm sure there will still be lasting problems, but we can catch a lot of it.

Two, while we each still have our allegiances to particular things in Classic, it will be much easier for us to look at this as a new thing and filter our input accordingly. We'll all have to work at that.

Three, I'm working on a framework where the balance decisions are made at the scale of mechanics rather than individual ships. Other games have run into problems relying too woodenly on such frameworks, but I think it's worth a try if we don't try to make it do too much. More on this in the next section

Fourth, the modding support will let each of you try different balance decisions, and base your feedback on a more concrete basis. We're also quite happy to incorporate mods (or parts thereof) into the vanilla game if there's a consensus to do so.

Fifth, official release is slated for October. I expect to be done with the implementation phase of the design in June. Possibly earlier, if we don't hit as many speedbumps as I'm budgeting for. I won't be working as many hours at that point, but that test-and-refine phase will be critical in making this a real 1.0 instead of a beta-that-escaped (not that we've ever seen that before).

The Crazy Idea

So I mentioned a balance framework. Rather than just setting hp, dps, speed, etc values on everything and using various tools (including unit tests, balance spreadsheets, and wishful thinking) to keep those values reasonable across the game, let's start from the other end: what goals do we want to achieve with those values?

So start with some global constants (defined in XML for easy modding) :

1.1) base_hp_scale . In other words, how long do we want HP numbers to be? As in, how many digits. This may seem silly, but one of the most popular changes I ever made to classic was dividing the hp numbers by 100. People don't like unnecessarily large numbers in a game like this. At the same time, hp is fixed-point integer, so we don't want it to be too coarse lest rounding have a significant balance impact.

1.2) seconds_per_fight . Basically, how long do we want fights to last? This is used most directly to set attack power; i.e. dps = hp / seconds_per_fight . This assumes all the same ships, all in range, equal numbers on both sides... so it never really happens exactly this way, but nonetheless the the length of battles will be directly proportional to this value.

1.3) seconds_per_shot . Base rate of fire.

1.3) attack_range_to_gravwell_radius_ratio . In other words: how much of a normal-size planet can a "short range" (the default range) cover without moving?

1.4) seconds_to_cross_gravwell . Basically, how long should it take a "normal speed" ship to cross a normal-size planet?

1.5) strength_per_cap . In other words: assuming an individual ship of strength 1, what's the standard cap for that ship type?

1.6) base_science_scale. How many science points should an "average" planet yield? Like with base_hp_scale, this is mainly to control the number of digits.

1.7) base_fuel_scale. How much fuel capacity should an "average" planet provide? Ditto about digit count. (we'd also have similar numbers for power, but I'm focusing on mobile military rather than purely-defensive military in this post)

1.8) base_metal_scale. How much metal should an "average" planet produce per second? Ditto about digit count.

2) Next, define the mark levels and their relative strengths and costs, for example (I'm guessing at a lot of these costs) :

<mark name="MarkI" strength_multiplier="1" planets_worth_of_science="0.65" planets_worth_of_fuel="0.15" planet_seconds_of_metal="30" />
<mark name="MarkII" strength_multiplier="2" planets_worth_of_science="1.20" planets_worth_of_fuel="0.3" planet_seconds_of_metal="70" />
<mark name="MarkIII" strength_multiplier="3" planets_worth_of_science="1.65" planets_worth_of_fuel="0.3" planet_seconds_of_metal="120" />
<mark name="MarkIV" strength_multiplier="4" planets_worth_of_science="2.00" planets_worth_of_fuel="0.3" planet_seconds_of_metal="180" />
<mark name="MarkV" strength_multiplier="5" planets_worth_of_science="2.20" planets_worth_of_fuel="0.3" planet_seconds_of_metal="250" />

(Note: "planet_seconds_of_metal" is a weird way to put it, but for example "60" means that building the cap from scratch would fully consume one average planet's metal output for a full minute; or 4 such planets for 15 seconds, etc)

3) Next, define the items in a series of categories:

3.1) Granularity: spectrum from "swarmers" to "low-cap ships". Examples:

<granularity name="Swarmer" cap_multiplier="4" hp_and_dps_multiplier="1.2" />
<granularity name="MildSwarmer" cap_multiplier="2" hp_and_dps_multiplier="1.1" />
<granularity name="Normal" cap_multiplier="1" hp_and_dps_multiplier="1.0" />
<granularity name="MildLowCap" cap_multiplier="0.5" hp_and_dps_multiplier="0.9" />
<granularity name="LowCap" cap_multiplier="0.25" hp_and_dps_multiplier="0.8" />

(note: with the removal of the old armor mechanic, and with partially-destroyed squads being repairable back to full count, it's not a given that swarmers are worse than low-cap anymore; but we'll see: this framework will let us adjust for changes like that quickly)

3.2) Durability: spectrum from high-hp to high-dps. Examples:

<durability name="GlassCannon" hp_multiplier="0.25" dps_multiplier="2" />
<durability name="MildGlassCannon" hp_multiplier="0.5" dps_multiplier="1.5" />
<durability name="Normal" hp_multiplier="1" dps_multiplier="1" />
<durability name="MildTank" hp_multiplier="1.2" dps_multiplier="0.9" />
<durability name="Tank" hp_multiplier="1.4" dps_multiplier="0.8" />

3.3) Speed: spectrum from slow to fast. Examples:

<speed name="Blitzer" speed_multiplier="4" hp_and_dps_multiplier="0.5" />
<speed name="Fast" speed_multiplier="2" hp_and_dps_multiplier="0.75" />
<speed name="Normal" speed_multiplier="1" hp_and_dps_multiplier="1" />
<speed name="Slow" speed_multiplier="0.75" hp_and_dps_multiplier="1.25" />

(note: movement speed is probably the one stat that was most buffed for "quality of life" reasons; slow ships annoy the player. I'm not sure anything lower than "Normal" would get used for standard mobile-military ships; probably reserved for things like Fortresses and AI-only stuff)

3.4) Range: spectrum from short to long to infinite. Examples:

<range name="Sniper" range_multiplier="999" dps_multiplier="0.2" />
<range name="Long" range_multiplier="4" dps_multiplier="0.3" />
<range name="Medium" range_multiplier="2" dps_multiplier="0.6" />
<range name="Short" range_multiplier="1" dps_multiplier="1" />

3.5) Rate of fire: spectrum from geologic-time-scale bombs to frequent rocket salvos. Examples:

<rof name="ExtremelyLow" rof_multiplier="0.125" dps_multiplier="1.5" />
<rof name="VeryLow" rof_multiplier="0.25" dps_multiplier="1.25" />
<rof name="Low" rof_multiplier="0.5" dps_multiplier="1.15" />
<rof name="Normal" rof_multiplier="1" dps_multiplier="1" />
<rof name="High" rof_multiplier="2" dps_multiplier="0.85" />
<rof name="Misery" rof_multiplier="4" dps_multiplier="0.75" />

(note: with the removal of the old armor mechanic, high-rof is presumably now just better all around, hence the dps tradeoff. If I'm wrong, it's easy to change)

3.6) Damage mitigation type: none (i.e. structure/hp), armor, evasion, shields

<defense name="Armor" durability_multiplier_vs_noncounter="5" durability_multiplier_vs_counter="0.3" dps_multiplier="0.8" />
<defense name="Evasion" durability_multiplier_vs_noncounter="4" durability_multiplier_vs_counter="0.35" dps_multiplier="0.9"  />
<defense name="Shields" durability_multiplier_vs_noncounter="3" durability_multiplier_vs_counter="0.45" dps_multiplier="0.75" />

The multipliers are "goals", not actual stats in the game; those will probably be achieved by a combination of three things:
- incoming-damage % reduction (against non-countering shots) on the ship with this defense
- hp % reduction on the ship with this defense
- dps % reduction on the ships countering this defense

(note: there are other distinctions between the three defenses, like evasion also reducing engine/reclamation/etc damage and having a further innate resistance to AOE, and shields protecting a wide area; not sure yet how/whether those will be represented in the xml)

3.7) Fuel cost: spectrum from fuel-hog to fuel-efficient. Examples:

<fuel_cost name="High" fuel_multiplier="1.5" hp_and_dps_multiplier="1.15" />
<fuel_cost name="Normal" fuel_multiplier="1" hp_and_dps_multiplier="1.0" />
<fuel_cost name="Low" fuel_multiplier="0.5" hp_and_dps_multiplier="0.85" />

3.8) Metal cost: spectrum from expensive to cheap. Examples:

<metal_cost name="High" metal_multiplier="1.5" hp_and_dps_multiplier="1.1" />
<metal_cost name="Normal" metal_multiplier="1" hp_and_dps_multiplier="1.0" />
<metal_cost name="Low" metal_multiplier="0.5" hp_and_dps_multiplier="0.9" />

Next, we need to make a series of decisions for each ship type:

4.1) strength_multiplier . Normally this will be 1, but for example we might want a cap of mkI starships to only be half as strong as (and cost half the science of) a standard cap, but have mkIIs be normal, and mkIIIs be twice as strong as (and cost twice the science of) a normal mkIII cap, and have mkIVs be 4x as strong and expensive as a normal mkIV.

4.2) Pick one of each of the above categories, with the exception that it can pick zero or more defenses and zero or more counters-defenses, though only very rarely would a ship type have more than one defense or more than one counter (both sets of multipliers would apply, leaving the base hp and/or dps very low for that strength).

4.3) shots_per_salvo . Often this will be 1, but some ships achieve their rate of fire through multiple shots at once. This field won't change the rate of fire; the number of seconds per salvo will be adjusted to maintain that.

4.4) ships_per_squad . How big the units are, in terms of ships. This is largely an interface thing, but if you have a standard cap size of 200, and a ship type with that standard size and a ships_per_squad of 20 then a full cap will be 10 controllable units (each containing 20 of that ship).

4.5) What special abilities the ship has and what the costs should be for that in terms of hp and/or dps. Anything that shows up a lot should probably be moved into one of the tradeoff categories above.

To take an example: the Fighter

strength_multiplier = 1
shots_per_salvo = 1
ships_per_squad = 10
granularity = normal
durability = MildTank
speed = normal
range = short
rate of fire = normal
damage mitigation = evasion
countered damage mitigation types = armor
fuel cost = normal
metal cost = low
special abilities = none

And I would work out the final multipliers from that but I've gotta run :)


There would still be the ability to override pretty much any stat at a per-ship-type basis, to let modders do what they want, but the idea would be for vanilla to pretty much stick with the above except for unique units.


Thoughts?
« Last Edit: December 08, 2016, 04:12:36 pm by keith.lamothe »
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline kasnavada

  • Hero Member Mark II
  • *****
  • Posts: 986
Re: Balance in the sequel
« Reply #1 on: December 08, 2016, 12:46:31 pm »
I like this, as it would enable to switch the balance of an entire "line" of ships in a single move. The modding documentation would have to be a bit time-consuming to write, but worth it I think.

I have an addition to propose though, I'm suggesting to that each "stat" as a "commented" number of "points" associated with it.

=> High fuel consumption => 1 point.
=> Mid fuel consumption => 2 points.
=> Low fuel consumption => 3 points.

=> Low speed => 1 point
=> Mid speed => 2 points.
=> High speed => 3 point.
=> Teleport => 5 point.

Those would be "comments", not to be used in game. So when someone creates a new ship from scratch, he has basic guidelines (15 points total for humans example) so he can balanced ships in a few tries. Of course, it would still have a possibility to be OP, but it's a start.

Offline Draco18s

  • Resident Velociraptor
  • Core Member Mark V
  • *****
  • Posts: 4,251
Re: Balance in the sequel
« Reply #2 on: December 08, 2016, 01:06:51 pm »
Looks good.
+1 to the nominal idea of "build points" even if it's a very coarse estimate.

(The 3.8 section, btw, has the same XML as 3.7)

Largely lines up with how I designed some Proc-Gen tower defense towers.  Basically I had categories (what kind of firing pattern does it have, it's a radial burst, a cone, a line, bullets...how does it aim, does it try to lead the target, does it aim directly at it, is it fixed placement (player decides and it doesn't change), if an AOE tower, does it try to hit large groups....does it inflict some sort of status effect, does it have some sort of other effect, e.g. status effects linger for longer, do shots penetrate and hit multiple enemies, can it only hit ground/flying enemies, maybe it has life steal....finally what elemental damage type was it) and every option had a set of modifiers associated with it, so every tower started at some normalized base, then every chosen option would modify the values.  Eg. Cone AOE converted "range" to "aoe radius" and halved damage, while bullets increased range a lot, doubled damage, and improved rate of fire.  Making the tower try and "lead" a target reduced rate of fire, but increased range (and it was more accurate, obviously), and so on.

You'd get some interesting results out the other side and while there were mechanically "better" options (Fire element was good at high damage, Spirit element was good for long-lasting status effects, Lava for AOE...) there was still a good balance because a pure optimal result almost never came out.  Things were too randomized for it to happen.

Same thing here: just because there is a way to make a mechanically "optimal" ship doesn't mean that any given single unit in the game puts all of those effects together.  Rather, all of the options are balanced against one another and ships are built from a collection of those options in interesting ways.  And if one option ends up being overly powerful, then it can get scaled down and every unit utilizing that option will be affected ("speeds are too fast, lets reduce those").  Or an option can get swapped out ("speeds are globally fine, but this unit is very fast, so lets give it a higher fuel cost instead").

Offline Vyndicu

  • Sr. Member
  • ****
  • Posts: 319
Re: Balance in the sequel
« Reply #3 on: December 08, 2016, 02:05:28 pm »
So far I am liking what I see here.

The only problem I can think of is that some units may not "fit" quite right. I realize that they may not come back. I am merely using them as an examples of ships that don't fit "neatly" on the new triangle balance concept for AI war 2.

IE: Units that does "weird/wonderful" things like reclaimer damage, self-replicating viral shredder, scapegoat, devastator (only can target starship or large targets), regenerator golem, and nebula champion ship. Superweapons by their own definition are absurd already anyway so I suspect they could fit here to a lesser degree.

So my question is how do they fit in the balance outline you have here?

Offline Atepa

  • Jr. Member
  • **
  • Posts: 59
Re: Balance in the sequel
« Reply #4 on: December 08, 2016, 02:19:30 pm »
I think it would definitely be a good way to not only save your sanity when it comes to balancing things, but also help out with moders later on. I like the idea of points as well, if for no other reason to start getting a feeling for how strong various ships would be compared to each other overall. Something that may seem under powered because it has low DPS, may actually be a very good ship, just not a combat ship, it's role is something that is less noticeable.

Offline Squashyhex

  • Newbie Mark III
  • *
  • Posts: 44
Re: Balance in the sequel
« Reply #5 on: December 08, 2016, 02:31:43 pm »
The only problem I can think of is that some units may not "fit" quite right. I realize that they may not come back. I am merely using them as an examples of ships that don't fit "neatly" on the new triangle balance concept for AI war 2.

IE: Units that does "weird/wonderful" things like reclaimer damage, self-replicating viral shredder, scapegoat, devastator (only can target starship or large targets), regenerator golem, and nebula champion ship. Superweapons by their own definition are absurd already anyway so I suspect they could fit here to a lesser degree.

So my question is how do they fit in the balance outline you have here?

I believe, though I may be wrong, that that would be covered by what keith mentioned at the end:

the idea would be for vanilla to pretty much stick with the above except for unique units.

This does look like a good way of dealing with it, since re-balancing could be done almost instantly without hassle and new ships (without "unique" features) should be fairly easy to accomodate.
"Space, the final frontier. These are the voyages of the Star Ship Enterprise. It's continuing mission: to explore strange new worlds; to seek out new life and new civilisations; to boldly go where no one has gone before."

Offline Lord Of Nothing

  • Full Member Mark II
  • ***
  • Posts: 174
Re: Balance in the sequel
« Reply #6 on: December 08, 2016, 04:29:04 pm »
Hmm. Interesting, and looks workable at first glance. How do the larger ships, such as AI guardians, Spireships(Stretch-goal permitting) fit into this framework? I get that they're going to be low cap, slow, but where abouts is the "really big, nasty ship" factor coming in? The strength_multiplier section? That one seems not quite as well explained as the rest of the section, but maybe that's me not looking at it the right way.

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Balance in the sequel
« Reply #7 on: December 08, 2016, 04:36:03 pm »
Back now, so here's a fuller example.

First, the globals (leaving out speed/range for now, since absolute numbers in those are harder to process theoretically) :

base_hp_scale = 100
seconds_per_fight = 20
seconds_per_shot = 1
strength_per_cap = 200
base_science_scale = 3000
base_fuel_scale = 10000
base_metal_scale = 200

The categories have the same values as in my OP.

Though I realized on further thought that setting "goal" numbers for the defenses was setting up both some hopelessly-constrained math and a lack of clarity. So I'm going back to a slightly earlier model of having each defense have three numbers that affect your durability:
- how much % non-countering damage it blocks
- how much % of your hp it costs you (i.e. it's really expensive so your ship can't be as big for the same cost)
- how much % of the enemy's dps does it cost him to counter your defense (i.e. a large chunk of the counter-weapon's metal/space budget is consumed by the countering mechanism, so it can't be as powerful as big dumb bomb)

And an additional number that helps us balance defenses against each other: how much % of your own dps does it cost to have the defense? I.e. the defense system itself takes up space/metal that could otherwise have gone to weapons systems.

So here's my current guesses:

Having armor:
- protects you from 80% of non-countering damage
- costs you 40% of your hp
- costs you 20% of your dps

Countering armor:
- costs you 60% of your dps


Having evasion:
- protects you from 70% of non-countering damage
- costs you 30% of your hp
- costs you 15% of your dps

Countering evasion:
- costs you 50% of your dps


Having shields:
- protects you from 60% of non-countering damage
- costs you 20% of your hp
- costs you 25% of your dps

Countering shields:
- costs you 40% of your dps


Now let's look at potential stats for the triangle.

Bomber
strength_multiplier = 1
shots_per_salvo = 1
ships_per_squad = 5
granularity = MildLowCap (hp*0.9,dps*0.9)
durability = Normal
speed = normal
range = short
rate of fire = ExtremelyLow (dps*1.5)
damage mitigation = armor (hp*0.6, dps*0.8 )
countered damage mitigation types = none
fuel cost = high (fuel*1.5, hp*1.15 dps*1.15)
metal cost = high (metal*1.5, hp*1.1 dps*1.1)
special abilities = none

So a cap (100, in 20 squads of 5) of MkI bombers would get:

HP = base_hp_scale * strength_per_cap * 0.9 (MildLowCap) * 0.6 (armor) * 1.15 (high fuel) * 1.1 (high metal)
= 100 * 200 * 0.6831
= 13,662 hp, or 136.62 hp per bomber or 683.1 hp per squad

DPS = ( base_hp_scale / seconds_per_fight ) * strength_per_cap * 0.9 (MildLowCap) * 1.5 (ExtremelyLow rof) * 0.8 (armor) * 1.15 (high fuel) * 1.1 (high metal)
= ( 100 / 20 ) * 200 * 1.3662
= 1366.2 dps, or 13.662 dps per bomber or 68.31 dps per squad
The bomber would fire 1 shot every 8 seconds, doing 109.296 damage per shot.

Fighter
strength_multiplier = 1
shots_per_salvo = 1
ships_per_squad = 10
granularity = normal
durability = MildTank (hp*1.2, dps*0.9)
speed = normal
range = short
rate of fire = normal
damage mitigation = evasion (hp*0.7, dps*0.85)
countered damage mitigation types = armor (dps*0.4)
fuel cost = normal
metal cost = low (metal*0.5, hp*0.9 dps*0.9)
special abilities = none

So a cap (200, in 20 squads of 10) of MkI fighters would get:

HP = base_hp_scale * strength_per_cap * 1.2 (MildTank) * 0.7 (evasion) * 0.9 (low metal)
= 100 * 200 * 0.756
= 15,120 hp, or 75.6 hp per fighter or 756 hp per fighter squad

DPS = ( base_hp_scale / seconds_per_fight ) * strength_per_cap * 0.9 (MildTank) * 0.85 (evasion) * 0.4 (anti-armor) * 0.9 (low metal)
= ( 100 / 20 ) * 200 * 0.2754
= 275.4 dps, or 1.377 dps per fighter or 13.77 dps per squad
The fighter would fire 1 shot every 1 seconds, doing 1.377 damage each shot. Given this math it would probably need to fire more slowly, or the hp scale would need to be bumped up to avoid a major change in dps due to rounding 1.377 up or down to an integer.

Missile Corvette
strength_multiplier = 1
shots_per_salvo = 1
ships_per_squad = 5
granularity = LowCap (hp*0.8,dps*0.8 )
durability = MildGlassCannon (hp*0.5,dps*1.5)
speed = normal
range = long (dps*0.3)
rate of fire = VeryLow (dps*1.25)
damage mitigation = none
countered damage mitigation types = evasion (dps*0.5)
fuel cost = high (fuel*1.5, hp*1.15 dps*1.15)
metal cost = normal
special abilities = none

So a cap (50, in 10 squads of 5) of MkI missile corvettes would get:

HP = base_hp_scale * strength_per_cap * 0.8 (LowCap) * 0.5 (MildGlassCannon) * 1.15 (high fuel)
= 100 * 200 * 0.46
= 9,200 hp, or 184 hp per corvette or 920 hp per squad

DPS = ( base_hp_scale / seconds_per_fight ) * strength_per_cap * 0.8 (LowCap) * 1.5 (MildGlassCannon) * 0.3 (long range) * 1.25 (VeryLow rof) * 0.5 (counter-evasion) * 1.15 (high fuel)
= ( 100 / 20 ) * 200 * 0.25875
= 258.75 dps, or 5.175 dps per corvette, or 25.875 dps per squad
The corvette would fire 1 shot every 4 seconds, doing 20.7 damage per shot.


Effective CapDPS:

Bomber vs Bomber = 1366.2 * 0.2 => 273.24
Bomber vs Fighter = 1366.2 * 0.3 => 409.86
Bomber vs Missile Corvette = 1366.2 * 1 => 1366.2

Fighter vs Bomber = 275.4 * 1 => 275.4
Fighter vs Fighter = 275.4 * 0.3 => 82.62
Fighter vs Missile Corvette = 275.4 * 1 => 275.4

Missile Corvette vs Bomber = 258.75 * 0.2 => 51.75
Missile Corvette vs Fighter = 258.75 * 1 => 258.75
Missile Corvette vs Missile Corvette = 258.75 * 1 => 258.75


Leading to the conclusion that Bombers win vs everything. Again. These guys are annoying ;) But at least it's obvious.

In this scenario, probably the first numbers to change are to make the dps-cost of countering-a-defense a lot lower, and to nerf the dps boost of a low rate-of-fire.

But in practice, with less first-draft balance numbers in play, numeric analysis would need to be combined with playtesting to warrant a change.
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline keith.lamothe

  • Arcen Games Staff
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 19,505
Re: Balance in the sequel
« Reply #8 on: December 08, 2016, 04:43:11 pm »
On a point-based system to guard against hyper-minmaxed ships: good idea.

Quote
IE: Units that does "weird/wonderful" things like reclaimer damage, self-replicating viral shredder, scapegoat, devastator (only can target starship or large targets), regenerator golem, and nebula champion ship. Superweapons by their own definition are absurd already anyway so I suspect they could fit here to a lesser degree.
Basically we either try to assign a value (say, to get Reclamation you have to pay 75% of your dps) or we assign some kind of fudge value to that ship type's strength, hp, or dps. Any serious imbalance involving a unit with a fudge value would attract extra scrutiny ;)

Quote
How do the larger ships, such as AI guardians, Spireships(Stretch-goal permitting) fit into this framework? I get that they're going to be low cap, slow, but where abouts is the "really big, nasty ship" factor coming in? The strength_multiplier section?
strength_multiplier, yea. Since the AI pays directly in units of Strength, it works out.
Have ideas or bug reports for one of our games? Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline Vyndicu

  • Sr. Member
  • ****
  • Posts: 319
Re: Balance in the sequel
« Reply #9 on: December 08, 2016, 04:57:43 pm »
Based on the second post.

I might suggest moving away from "cost A%, b% of x, y to counter z,w model".

Since it is "still possible to min-max" high rof but peashooter (not that very different from say laser gatling) to take a loss in per-shot damage in return to counter something for little trade-off.

Since most of your "damage" comes from high number of shots not the actual per-hit damage. 50% less damage to counter something seem like a "steal" since they already do far less damage.

Same is converse also true of swarmer's hp. They are going to attract LOT of overkill one-shots might as well gain something for "free" with penalties to hp.

Offline Chthon

  • Sr. Member Mark II
  • ****
  • Posts: 398
Re: Balance in the sequel
« Reply #10 on: December 08, 2016, 05:42:30 pm »
Being computer science, the first thing that comes to mind for balance is to use a binary search. You set an upper and lower rational bound, and try the number in the middle. If people complain it's too high, you pick halfway between that and the lower bound, and the first becomes the upper bound. Likewise for too low. You do this until you narrow in on a good place.

Then again, this probably won't work as you'd need objective data to use this.

I'll think more on this.

Offline Cyborg

  • Master Member Mark III
  • *****
  • Posts: 1,957
Re: Balance in the sequel
« Reply #11 on: December 08, 2016, 10:07:13 pm »
This needs careful thought.  I can't help but think that the divisor needs to be the inverse of firepower, because that is the measuring stick by which the AI makes attack (or not) decisions.
Kahuna strategy guide:
http://www.arcengames.com/forums/index.php/topic,13369.0.html

Suggestions, bugs? Don't be lazy, give back:
http://www.arcengames.com/mantisbt/

Planetcracker. Believe it.

The stigma of hunger. http://wayw.re/Vi12BK

Offline Bognor

  • Hero Member
  • *****
  • Posts: 570
Re: Balance in the sequel
« Reply #12 on: December 10, 2016, 04:57:45 am »
Having evasion:
- protects you from 70% of non-countering damage
- costs you 30% of your hp
- costs you 15% of your dps

Countering evasion:
- costs you 50% of your dps

Wait up... So a regular ship does 100% dps against other regular ships but 30% dps against ships with evasion.
 
And a ship that counters evasion does 50% dps against regular ships and 50% dps against ships with evasion (I'm assuming "countering evasion" means ignoring evasion and dealing regular dps).

So compared to regular ships, ships that counter evasion do half as much dps to regular ships (50% is half of 100%) and two-thirds more dps against ships with evasion (50% is two-thirds more than 30%). 

i.e., Half the dps against most ships in the game and two-thirds more dps against a certain subset of ships.  Doesn't seem worth it.  cf Classic in which 6x hull multipliers were common, corresponding to +500% dps.


(note: with the removal of the old armor mechanic, high-rof is presumably now just better all around, hence the dps tradeoff. If I'm wrong, it's easy to change)
Well high-rof minimises overkill but low-rof maximises alpha-strike.  A big advantage of Zombards is the ability to inflict 30 seconds' worth of dps within moments of engaging the target.  I guess whether minimising overkill or maximising alpha-strike is more valuable is something only playtesting will reveal.  On the other hand, without the old armor mechanic, high shots_per_salvo should be an outright advantage as it minimises overkill.
Your computer can help defeat malaria!
Please visit the World Community Grid to find out how.

Offline Bognor

  • Hero Member
  • *****
  • Posts: 570
Re: Balance in the sequel
« Reply #13 on: December 10, 2016, 06:54:22 am »
The more I think about it, the more I think maximizing alpha-strike is going to be more important.

Consider a 20 second fight survived by a cap of fleetships.  If the fleetships fire once every second, they'll fire at t=0, 1, 2, ... , 20, which is 21 times, so they'll inflict 21 seconds worth of dps.  If they fire once every 10 seconds, they'll fire at t=0, 10, and 20, which is 3 times, so they'll inflict 30 seconds worth of dps.  So the lower rate of fire lets them inflict 43% more damage.  Plus, by inflicting 10 seconds worth of dps right at the start of the battle, they'll inflict enemy casualties early, quickly reducing enemy dps and therefore friendly losses.
Your computer can help defeat malaria!
Please visit the World Community Grid to find out how.

Offline MaxAstro

  • Sr. Member Mark II
  • ****
  • Posts: 345
  • Love, Peace, and Calvinball
Re: Balance in the sequel
« Reply #14 on: December 10, 2016, 11:55:15 am »
@Chthon: I seem to recall Arcen is well known for using an almost exact opposite sorting method for balance - set an upper and lower rational bound, set the balance to be slightly higher than the upper bound, see who complains, make a drastic shift in the opposite direction, see who complains, continue until you find a balance point everyone is happy with.  :P