Fractal Softworks Forum

Please login or register.

Login with username, password and session length
Pages: [1] 2

Author Topic: Vent Time (as a hull stat)  (Read 9806 times)

Dark.Revenant

  • Admiral
  • *****
  • Posts: 2806
    • View Profile
    • Sc2Mafia
Vent Time (as a hull stat)
« on: May 13, 2016, 12:09:26 AM »

I have been playing around with using vent time (as in the amount of time the ship takes to vent from max flux) as a per-hull stat, largely independent of dissipation rate.

To avoid AI issues or playability/logical problems, venting speed is limited to a minimum of dissipation rate * 1.5, which means that vent-only builds do generally vent faster than other builds, but not to the extent of the current vanilla behavior.


Ideally, this would be set per-hull, but as a baseline I've assigned vent time automatically based on this formula, where N is 10/20/30/50, depending on hull size:

Vent Time = [Base Capacity + N * 200] / [(Base Dissipation + N * 10) * 2]


Here is some example data:
Hull Name
Vent Time
Min Vent Time
(Max Vents)
Max Vent Rate
(Max Capacitors)
Old Min-maxed Vent Time
(Max Vents, No Capacitors)
Old Suicide Vent Time
(Max Capacitors, No Vents)
Wolf
8.5 s
6 s
500 flux/s
4.5 s
14.2 s
Hyperion
7 s
5.8 s
760 flux/s
4.3 s
9.5 s
Brawler
7.5 s
5.6 s
600 flux/s
4.2 s
11.3 s
Afflictor
5 s
4 s
1000 flux/s
3 s
6.3 s
Hammerhead
9.1 s
6.2 s
900 flux/s
4.7 s
16.4 s
Sunder
8.4 s
7.1 s
1400 flux/s
5.4 s
11.5 s
Enforcer
10 s
6.7 s
800 flux/s
5 s
20 s
Medusa
8.3 s
6.7 s
1200 flux/s
5 s
12.5 s
Eagle
9.7 s
8.1 s
1650 flux/s
6.1 s
15.2 s
Dominator
10.7 s
8.9 s
1500 flux/s
6.7 s
17.8 s
Aurora
9.1 s
8.7 s
2300 flux/s
6.5 s
12.4 s
Gryphon
11 s
6.7 s
1000 flux/s
5 s
27.5 s
Onslaught
12.3 s
10.3 s
2200 flux/s
7.7 s
22.5 s
Conquest
8.8 s
7.8 s
3400 flux/s
5.9 s
12.5 s
Paragon
10 s
9.5 s
3500 flux/s
7.1 s
14 s
Odyssey
8.3 s
6.7 s
3000 flux/s
5 s
12.5 s


The results have been positive:
  • Capacitors seem more useful and impactful
  • The gap between tribal-knowledge player-optimized builds (minimized capacity, maxed flux vents) and AI loadouts is smaller
  • Less of an overwhelming advantage for having maxed tech/combat
  • Capacitor builds are viable (previously, it wasn't smart to go beyond 1:1 parity with capacitors and vents)
  • Frigates and destroyers can survive much longer, and are more viable in mid/late-game combat (due to the above)
  • Balancing is generally easier, since vent times are more predictable

The main disadvantage is that venting is often automatic death as a solo frigate, due to how powerful Harpoons and Atropos are (and Hurricanes - but you probably won't win against a Gryphon/Apogee/Astral/Conquest in a lone frigate anyway).  Note that this is already the case, unless you max-out vents in your build in vanilla.

As a result, it seems wise to nerf or at least adjust those missiles...



Code
package data.scripts.everyframe;

import com.fs.starfarer.api.combat.BaseEveryFrameCombatPlugin;
import com.fs.starfarer.api.combat.CombatEngineAPI;
import com.fs.starfarer.api.combat.ShipAPI;
import com.fs.starfarer.api.combat.ShipAPI.HullSize;
import com.fs.starfarer.api.input.InputEventAPI;
import com.fs.starfarer.api.util.IntervalUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SSP_VentSpeedPlugin extends BaseEveryFrameCombatPlugin {

    private static final float BASE_VENT_MULT = 2f;
    private static final String DATA_KEY = "SSP_VentSpeedPlugin";
    private static final float MINIMUM_VENT_BONUS = 1.5f;
    private static final float VENT_MULT_BASE_STAT = 1f;

    private static final Map<HullSize, Float> mag = new HashMap<>(5);

    static {
        mag.put(HullSize.FIGHTER, 0f);
        mag.put(HullSize.DEFAULT, 0f);
        mag.put(HullSize.FRIGATE, 10f);
        mag.put(HullSize.DESTROYER, 20f);
        mag.put(HullSize.CRUISER, 30f);
        mag.put(HullSize.CAPITAL_SHIP, 50f);
    }

    private CombatEngineAPI engine;
    private final IntervalUtil interval = new IntervalUtil(0.25f, 0.5f);

    @Override
    public void advance(float amount, List<InputEventAPI> events) {
        if (engine == null) {
            return;
        }

        if (engine.isPaused()) {
            return;
        }

        interval.advance(amount);
        if (!interval.intervalElapsed()) {
            return;
        }

        List<ShipAPI> ships = engine.getShips();
        int size = ships.size();
        for (int i = 0; i < size; i++) {
            ShipAPI ship = ships.get(i);
            if (!ship.isAlive()) {
                continue;
            }

            float baseCapacity = ship.getMutableStats().getFluxCapacity().getBaseValue();
            float baseDissipation = ship.getMutableStats().getFluxDissipation().getBaseValue();
            float trueCapacity = ship.getMutableStats().getFluxCapacity().getModifiedValue();
            float trueDissipation = ship.getMutableStats().getFluxDissipation().getModifiedValue();
            float ventRateBase = BASE_VENT_MULT * trueDissipation;

            float ventTime = (baseCapacity + 200f * mag.get(ship.getHullSize())) / ((baseDissipation + 10f * mag.get(ship.getHullSize())) * BASE_VENT_MULT);
            float ventRate = Math.max(trueCapacity / ventTime, MINIMUM_VENT_BONUS * trueDissipation);
            float ventMultChange = VENT_MULT_BASE_STAT * (ventRate - ventRateBase) / ventRateBase;

            ship.getMutableStats().getVentRateMult().modifyFlat(DATA_KEY, ventMultChange);
        }
    }

    @Override
    public void init(CombatEngineAPI engine) {
        this.engine = engine;
        interval.forceIntervalElapsed();
    }
}
Logged

Deshara

  • Admiral
  • *****
  • Posts: 1578
  • Suggestion Writer
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #1 on: May 13, 2016, 02:57:50 AM »

I have always thought that making vents benefit forced venting and capacitors hurt it makes the game skew way too hard in one's favor and also makes resistant coils not much more helpful than the distributor, when they should be a tool to make strike craft able to mount weaponry above their capacity for assault utilization in exchange for their ability to defend themselves between alpha payloads
Logged
Quote from: Deshara
I cant be blamed for what I said 5 minutes ago. I was a different person back then

Thaago

  • Global Moderator
  • Admiral
  • *****
  • Posts: 7233
  • Harpoon Affectionado
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #2 on: May 13, 2016, 08:36:35 AM »

Nice! I would be in favor of having a per ship class vent speed, possibly with modifiers by skills and hullmods. What kind of AI problems were you thinking by introducing the minimum, the calculations of vulnerability for missile targetting?
Logged

Dark.Revenant

  • Admiral
  • *****
  • Posts: 2806
    • View Profile
    • Sc2Mafia
Re: Vent Time (as a hull stat)
« Reply #3 on: May 13, 2016, 08:47:30 AM »

If venting is too poor of a choice (i.e. Vent rate is barely an improvement over passive dissipation, it throws a lot of decisions out of whack.
Logged

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 24157
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #4 on: May 13, 2016, 10:16:00 AM »

I've been thinking about this a bit recently, as it's come up in a couple of other places.

Adding a new stat to ships comes with a cost. There are already quite a few stats to keep track off, and if anything, I'd like to reduce the number of stats, not increase them. This one in particular could either be a "new stat" if it made its way onto the ship stats tooltip, or a "hidden mechanic" if it didn't, but regardless, any new stat/mechanic had better pull its weight.

Looking at the benefits, it seems to me like most of this could be addressed in more direct ways.

  • The gap between tribal-knowledge player-optimized builds (minimized capacity, maxed flux vents) and AI loadouts is smaller

Most AI builds go for this anyway, right? If not, there's either a reason (phase ship, needs a bit more capacity/non-combat ship, needs more defense) or it should probably be adjusted to max vents prior to capacitors.

  • Less of an overwhelming advantage for having maxed tech/combat

My nerf bat hand is getting itchy just talking about this.

  • Frigates and destroyers can survive much longer, and are more viable in mid/late-game combat (due to the above)

If that's desired, this seems like it could/should be accomplished by directly buffing the survivability of frigates and destroyers.

  • Balancing is generally easier, since vent times are more predictable

I'm not sure I see that. On the one hand, you can throw whatever dissipation and capacity amounts you want on a hull and it won't result in extreme active-vent rates. On the other hand, you now have to keep in mind what the active-vent-dissipation rate is, as it's a new balance consideration. You can't just count on it being a multiple of the regular dissipation rate (and thus, pretty much ignore it). This seems more difficult, not easier.

  • Capacitor builds are viable (previously, it wasn't smart to go beyond 1:1 parity with capacitors and vents)
  • Capacitors seem more useful and impactful

This one, I think, is the big one. Correct me if I'm wrong, but it feels to me like the driving force behind this idea, and other similar suggestions, is the desire to see capacitors and vents be more equal choices in a wider range of situations when refitting a ship.

Question is, why?

It feels like this change would, in the pursuit of making the choices more competitive, make them more similar by making capacitors fiddle with the rate at which you get rid of flux.

Capacitors are already useful in certain situations. They're generally edge cases (or you've already maxed vents), but even so, it's not a balance issue - it's just a question of how often you get one vs the other. (Edit: in some sense, that is a balance issue, but what I mean here is it's not something that's making the rest of the game unbalanced in any way.)

Let's take a step back and look at what the design role of having vents/capacitors in the game is. It's, quite simply, "so that there's somewhere to dump excess/unused OP, so that a ship design never ends up with an awkward amount of unused points." It ends up being more than that in the case of vents - and there's often enough OP to go around to max vents - so capacitors generally end up being the "leftover OP dumping ground". But, well, that's precisely what they're there for.

Finally, if we *really* wanted to bring them into more parity, I think a way to do that - without making the more similar - would be to bump up the base flux dissipation rates on ships, and the flux cost of weapons. Or to reduce the flux capacity of ships. That's probably more trouble than it's worth, though... but imo less trouble than adding a new stat.
« Last Edit: May 13, 2016, 10:18:23 AM by Alex »
Logged

Tartiflette

  • Admiral
  • *****
  • Posts: 3529
  • MagicLab discord: https://discord.gg/EVQZaD3naU
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #5 on: May 13, 2016, 10:55:03 AM »

Let's take a step back and look at what the design role of having vents/capacitors in the game is. It's, quite simply, "so that there's somewhere to dump excess/unused OP, so that a ship design never ends up with an awkward amount of unused points."

I think this is where I and many other players will disagree: Capacitors are somewhere to dump a couple leftover OPs, but Vents certainly aren't! Personally I always start by maxing vents then eventually remove some if I really needs it to fit one last weapon or a very necessary hullmod.

This has been driven by the frankly excessive buffs upon buffs to the missiles in the past few patches: Now venting is as much a death sentence as overloading since every single ships in range will unleash hell as soon as either happens. And the only parade for this is to spam-vent, a tactic that only work for the player, or fit AI ships to have the shortest vent time possible, thus max vent and no capacitors.

I also like DR's implementation idea because it isn't a new stat, but rather a new calculation of the existing vent rate. Granted it's somewhat more complex, and it probably should be added to the info card since it's such an important derivative stat. Right now it require a simulation to find out empirically, which isn't really ideal considering how vital it is.

With more flux capacity without suicidal vent times, some new alternative builds would finally become viable, like very high capacity, very high flux weapons that can handle more than a couple of shots.
Logged
 

Alex

  • Administrator
  • Admiral
  • *****
  • Posts: 24157
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #6 on: May 13, 2016, 11:02:52 AM »

I think this is where I and many other players will disagree: Capacitors are somewhere to dump a couple leftover OPs, but Vents certainly aren't! Personally I always start by maxing vents then eventually remove some if I really needs it to fit one last weapon or a very necessary hullmod.

Which is why I said exactly that in the next sentence :)

This has been driven by the frankly excessive buffs upon buffs to the missiles in the past few patches: Now venting is as much a death sentence as overloading since every single ships in range will unleash hell as soon as either happens. And the only parade for this is to spam-vent, a tactic that only work for the player, or fit AI ships to have the shortest vent time possible, thus max vent and no capacitors.

Yep, very much so. <pats nerf bat>

I also like DR's implementation idea because it isn't a new stat, but rather a new calculation of the existing vent rate. Granted it's somewhat more complex, and it probably should be added to the info card since it's such an important derivative stat. Right now it require a simulation to find out empirically, which isn't really ideal considering how vital it is.

Right, "new stat" vs "hidden mechanic". Either way, it's a non-trivial price.

With more flux capacity without suicidal vent times, some new alternative builds would finally become viable, like very high capacity, very high flux weapons that can handle more than a couple of shots.

Is this good? This sounds like it's a balance issue, creating a player-only-exploitable way to punch way, way above the ship's weight. It doesn't sound like something the AI would be able to handle. And if it *could* handle it, then that'd be the way to go for just about everything.

I'll say again that this feels like it makes capacitors better by blurring the lines between capacitors and vents. Essentially, the choice becomes more balanced by becoming less distinct.
Logged

xenoargh

  • Admiral
  • *****
  • Posts: 5078
  • naively breaking things!
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #7 on: May 13, 2016, 12:13:05 PM »

I still like the Capacitors-as-Hard-Flux-drain idea better; it's cleaner under the hood and it's not a new ship stat, just a UI tweak showing that drain, while accomplishing most of the same goals.

The other way to approach this issue would be to make the one Hull Mod that touches Venting time (Resistant Flux Conduits) more attractive; it's already OK for poorly-shielded ships that face EMP, now that that's a thing, but it's not quite enough in most cases.

Programming the AI to also be aware of Vent time and do some calculations about when to vent-spam might be helpful, too.

I'm certainly not in favor of "nerf missiles, plz"; they aren't that big of a threat atm to a properly-kitted-out fleet, frankly, and Pilums are already useless; the only missiles I think are actually all that dangerous are Swarmers, Sabots and heatseekers, because the first is a DPS-reducer of excellence as well as a cheap fighter counter, the second is the best alpha in the game, period, and the third is a constant DPS drain. 

The only area where missiles might need a nerf is the way that Missile Specialization works; it gets a bit excessive there with Swarmers, if you have enough platforms pumping them out.

But I think all of the "missiles are OP" talk is largely wrong, frankly; my fleets don't die to missiles.
Logged
Please check out my SS projects :)
Xeno's Mod Pack

Megas

  • Admiral
  • *****
  • Posts: 12159
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #8 on: May 13, 2016, 12:30:46 PM »

Quote
The other way to approach this issue would be to make the one Hull Mod that touches Venting time (Resistant Flux Conduits) more attractive
Resistant Flux Conduits is already very attractive due to the faster venting.  It is #3 in my list of must-have hullmods, with #1 being Augmented Engines and #2 being ITU.
Logged

xenoargh

  • Admiral
  • *****
  • Posts: 5078
  • naively breaking things!
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #9 on: May 13, 2016, 12:34:16 PM »

I agree, for player ships where you want to vent-spam.  For AI ships, not so much, but that sounds like a fixable problem, AI-side; I'm going to look at that one when i next get a chance to look at my AI.
Logged
Please check out my SS projects :)
Xeno's Mod Pack

Megas

  • Admiral
  • *****
  • Posts: 12159
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #10 on: May 13, 2016, 12:49:52 PM »

I'm certainly not in favor of "nerf missiles, plz"; they aren't that big of a threat atm to a properly-kitted-out fleet, frankly, and Pilums are already useless; the only missiles I think are actually all that dangerous are Swarmers, Sabots and heatseekers, because the first is a DPS-reducer of excellence as well as a cheap fighter counter, the second is the best alpha in the game, period, and the third is a constant DPS drain.  
Explain why Swarmers are so great?  I tried them in huge frigate fleets in 0.65, and while they did damage, they did not kill big ships.  Swarmers were only useful in that they passed through allies.

I get Sabots are good (I use them as unblockable anti-hull), but doesn't the AI waste them on shields?

"heatseekers" are Salamanders?  Yes, those are good, they are my go-to missile if I need an endurance option.

Why are Pilums useless?  With max Missile Specialization, they are powerful enough that AI blunders into them.  (When I solo the simulator with Dominator or Onslaught, several enemy ships manage to allow themselves get hit and die to a stack of Pilums.)  Aside from that, isn't saturating the field with tons of Pilums (without Missile Specialization) still a viable tactic?

The missiles that kill my AI ships most, once flux is sufficiently high, are Harpoons enhanced by Missile Specialization because they are ubiquitous and fast.
Logged

xenoargh

  • Admiral
  • *****
  • Posts: 5078
  • naively breaking things!
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #11 on: May 13, 2016, 01:23:47 PM »

Quote
Explain why Swarmers are so great?  I tried them in huge frigate fleets in 0.65, and while they did damage, they did not kill big ships.  Swarmers were only useful in that they passed through allies.
Because, in big fleet fights, the amount of Flux the AI fleet expends trying to shoot them down is significant, as is their tactical displacement as they do the "missile dance".

Pilums are useless without Missile Specialization 10, and then they're still pretty lame compared to Swarmers for costs.  I don't think they're anything like viable as saturation weapons atm; they're simply too slow right now.

Everybody says Harpoons are super-dangerous, but I don't get why; the AI's use of them is predictable, they are easily countered, and in big-fleet fights where missiles are being countered well, they simply don't matter.
Logged
Please check out my SS projects :)
Xeno's Mod Pack

Megas

  • Admiral
  • *****
  • Posts: 12159
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #12 on: May 13, 2016, 01:58:53 PM »

Okay, so AI gets pinned down by Swarmers.  They are distractions, not damage dealers.  Salamanders seem more effective at that role.

Harpoons are dangerous because when a ship gets high flux, multiple ships launch a barrage of them at the ship.  Several frigates launch harpoons, a Dominator can launch a dozen with three medium Harpoon pods.  No way the target can shield tank them all.  If the missiles do not have missile specialization, there is a chance for the target to back off or have someone else stop them.  If the Harpoons are backed by Missile Specialization 10, the missiles are so fast and strong that the target is dead.

In 0.65, only the enemy flagship had this, and my strategy was teleport to flagship with Hyperion, destroy it with Reapers before the flagship can do anything, and let my fleet mop up the rest.

Today, my strategy is to solo EVERYTHING with one flagship.  Not only because it protects the AI from itself, but also because it consumes less resources deploying one battleship than the rest of my fleet combined to crush a simulator-sized extended battle.
Logged

Deshara

  • Admiral
  • *****
  • Posts: 1578
  • Suggestion Writer
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #13 on: May 13, 2016, 03:49:21 PM »

Are resistant coils actually good? Every time I sit down to min max vent-dependant ships I find that the OP cost of the hullmod doesn't give as much vent time as plain vents do which I don't feel is right, it just makes it another distributor but with fewer use-cases. Like, the fact that resistant requires active use and a dropping of all defenses should make it more OP efficient than it's passive cousins, vents and distributor
Logged
Quote from: Deshara
I cant be blamed for what I said 5 minutes ago. I was a different person back then

Megas

  • Admiral
  • *****
  • Posts: 12159
    • View Profile
Re: Vent Time (as a hull stat)
« Reply #14 on: May 13, 2016, 05:59:27 PM »

They are if you rely on flux-hungry weapons such as blasters and/or vent spam frequently.
Logged
Pages: [1] 2