Lag Reduction Suggestion: Converting SPA 383 Procs

Discussion in 'The Veterans' Lounge' started by Sancus, Mar 12, 2021.

  1. Sancus Augur

    Since procs were adjusted to cast concurrently, the number of procs from each spell cast and melee swing has grown significantly. The February patch had some changes to reduce spell proc rates under specific situations. This is a good first step (balance ramifications notwithstanding). That said, one of the primary reasons that procs have been added is that they are one of the few ways to meaningfully increase caster DPS. There are a number of other SPAs that augment caster spells, but they are all focuses that do not stack with themselves. This makes procs one of the only methods for increasing caster DPS that avoids stacking issues, with the significant downside that adding numerous procs contributes significantly to lag. I think a good solution to alleviate lag and add more design space for casters would be to create an SPA, normalized for cast time, that stacks and adds damage to spells themselves.

    Current Problem from In-game Data

    To quantify the frequency of procs a bit, I took a look at a 90 second Sontalak burn after the February patch. I had 29 direct damage spell casts and 235 proc hits from casting procs, a ratio of about eight procs per spell cast. Of those 235 proc hits, 133 were from SPA 383 procs, most of which are worn. Here is a breakdown in a table:

    [IMG]

    It’s worth noting that some of the Surge of Ice procs hits were from melee procs from my primary, but the rest are all entirely spell procs (I did not have Assaulting Type 18/19 augments equipped). I didn’t have Restless Focus on, which would’ve added another 15-20 SPA 383 procs. These procs cumulatively made up a significant amount of my damage – 17% of my overall damage and 23% of my damage from spells (the remainder being pets). This is not Mage specific; all casters (and likely all players) derive a significant amount of their damage from procs.

    Solution

    While reducing proc rate does certainly reduce the number of hits from these procs, this issue can be fixed more comprehensively by adding a different option for augmenting caster DPS via items and buffs that stacks. This would simply be a new SPA that adds a flat amount of damage, but one that stacks with itself. At the very least, this SPA would need to be applied pre-crit, as procs can currently crit. Another option would be to apply this directly to base damage a la SPA 413, which has some potential advantages described below.

    It is actually fairly easy to replace SPA 383 procs with a damage addition to the base spell mathematically. The one complication is that SPA 383 proc rate is normalized for cast times. This can be accounted for by normalizing the new SPA for cast time too. Spell Damage is already normalized for Cast + Recast; the same formula would apply without the Recast component.

    Cast Time Normalization Math

    To go into a bit more of the math, let’s take Rallos Zek Acolyte’s Casting Ice, which casts Surge of Ice I (5,000 base damage). The proc rate for spells with a cast time less than seven seconds is calculated as (Cast_Time – 1) * 0.167, with a floor of 25%. The formula used by SPA 383 for spells with cast times greater than seven seconds is Cast_Time / 7, though that's not particularly relevant in modern EQ. That said, let’s look at two scenarios:

    Instant Cast Spell: 25% of the spell casts will proc Surge of Ice I, which does 5,000 damage before modifiers.

    Mindrift (4s Cast Time): (4 – 1) * 0.167 = 50.1% proc rate. 50.1% of the time, Surge of Ice I will proc and do 5,000 damage before modifiers.

    Add a new SPA that adds 5,000 damage normalized for cast time. It could apply Damage * (Cast_Time - 1) * 0.167, with a floor of 25%. The following would occur:

    Instant Cast Spell: This spell uses the floor of 25%. The 5,000 damage Base1 value for this new SPA would add 1,250 damage to each cast of this spell.

    Mindrift (4s Cast Time): This spell uses a 50.1% modifier. The 5,000 damage Base1 value would add 2,505 damage to each cast of this spell.

    In both cases, this would average out to the same pre-modifier DPS. Note that, again, this assumes the Base1 value of the SPA 383 focus is 100, which it is for nearly all modern procs. The only relevant exception is Composite Reinforcement, but that can likely stay as an SPA 383 proc. The Shawl proc has a Base1 of 80, but it procs a buff anyhow.

    Accounting for Modifiers

    The next thing to consider is that procs are modified. The biggest thing is that they crit, which this new SPA would need to do as well. They are also focused by Twinproc (21%), certain foci like Season’s Wrath (20.5% avg), and Spell Damage. This could be handled by a conversion, in which a multiplier would need to be applied to current proc damage values. A 1.458x multiplier would account for Twinproc and Seasons Wrath. Spell Damage is a flat damage addition and therefore cannot be approximated with a multiplier. To account for that, 1,000 damage would be added to every converted proc, as players are hitting around 4,000 SD and SD has a 25% multiplier for procs.

    The conversion formula would therefore be: Round(Proc_Base * 1.458) + 1000. For the aforementioned Surge of Ice I proc, the 5,000 base damage would be converted into a focus that adds 8,290 pre-crit damage to spells, normalized for cast time.

    The other option to account for modifiers is to do no conversion, but to instead apply this damage directly to the spell base damage a la SPA 413. This would allow the damage added to be focused, which would make up for the loss of worn modifiers.

    Accounting for DoTs

    DoTs also proc SPA 383 procs. There are a few options for additional conversion steps:
    1. Apply the damage to the first tick of the DoT. I don’t know if that’s feasible code-wise, but I think would be best to retain the additional “bursti-ness” of procs for those classes.
    2. Divide the damage by the base duration plus one, like other damage amount modifiers
    3. Divide the damage by the post-extension duration plus one. This would better account for extension, though would be a loss if mobs died before DoTs finished ticking.
    In general, DoTs have more foci (since SPA 124 crits and most classes have large SPA 413 AA foci), so applying this new SPA directly to DoT base damage would probably be too much. That said, it certainly should still at least crit, and likely some middle ground would need to be reached to account for the loss of the aforementioned modifiers (Season's Wrath, Twinproc, and Spell Damage).

    Fury of the Gods

    The primary other consideration is Wizard Fury of the Gods. This ability adds 4,500 crittable damage to all spells including procs. I'm not going to devote additional time in this post to suggest solutions, as there are better people to do that. That having been said, were this to be adjusted, balance changes would definitely have to be made to account for a significant loss in proc volume for the Wizard class.

    Conclusion

    Hopefully this post shows that SPA 383 procs contribute to a significant number of casts in raid instances, and that a mathematically equivalent SPA can be created to add additional design space while reducing lag. This would take some work, but it would be positive for casters as a whole and should be within the realm of feasibility.

    There are a number of other procs and swarm pets that likely should be reduced or removed to alleviate lag issues, but this post is narrowly focused on creating a better alternative to adding numerous SPA 383 procs.
    Kendeth, Ulrin, WonderRanger and 48 others like this.
  2. Cragzop Cranky Wizard

    Honest question:

    After the first decrease in procs and the lack of reported "lag is better" messages afterwards, will this do anything for lag, raid or in general?

    I understand the game will make fewer calculations (and I'm all for that in general). Simplifying calculations behind the scenes so real numbers can easily be obtained by players is good.

    But I feel like the proc thing has so far proven to be ... less than expected ... as far as a lag fix panacea. I was really hoping by now we'd have one of those Dev/Producer timeline posts on 'Here's the plan to fix lag' by now. But we don't. In fact, we have exactly *zero* posts about lag from devs.

    I trust Sancus to have a plan that is fair (given what he knows ... there may be something he isn't privy to) pretty implicitly. So I'm not against anything he said above.

    But none of this matters if we don't fix the lag. We're losing logins of folks due to lag. Eventually we will lose them all together and EQ will lose paying customers.
    Maedhros likes this.
  3. Jhenna_BB Proudly Prestigious Pointed Purveyor of Pincusions

    Where's the "Love" button?
    RPoo, IblisTheMage and Sancus like this.
  4. Sancus Augur

    The first decrease in procs had a targeted effect on a few classes, but overall it led to a relatively small reduction in total spell/hit volume in raids. This change also has a limited scope, but would affect more procs in far more situations than that initial change. It has the added benefit of creating design space for casters that doesn't rely on adding additional procs, which is good for the game long-term, lag or not.

    This is not intended to be a magic bullet to fix lag, but to the best of my understanding, the developers do still believe that spells (and by extension procs) are a major contributor. This is one of the better ways to reduce the quantity of procs in raids without having significant balance ramifications.
    Ulrin, Skuz and Astral64 like this.
  5. Szilent Augur

    No one ever said panacea.

    You did this very same thing in the wizard crit thread.

    The proc nerf was one small step to fix one narrow thing, smoothing out the lag between burn & non-burn scenarios and reducing lag randomness. No one ever said panacea, you're making that up and then putting it on people who were never even aiming at such a dramatic result.
    Skuz and Sancus like this.
  6. yepmetoo Abazzagorath

    What about changing all those type 18/19 effects to be essentially like type 3 augs? Where they add to the damage of the actual spell without causing any additional process. Balance values on it as needed.
  7. Szilent Augur

    that's precisely the text of Sancus' post.
  8. yepmetoo Abazzagorath

    I'm saying you don't need a new SPA at all or functionality.

    Just have the exact same effect of any spell/dot damage type 3, but instead of being limited to spell X, it applies to all spells that meet the criteria.

    No need to deal with cast times or anything else, just balance the numbers as needed. Now, does that effect stack? Unsure on that question.

    My main concern would be, if you're having to calculate all that stuff (scaling to spell cast time, creating those additional process checks), that isn't changing the things the devs are worried about with regard to procs and lags (processes server side), you're just having less lag client side.
  9. Mookus Augur

    Great ideas and well thought through.

    But I have to question the concept of casting and casting prices are more to blame than cuisinart melee and melee procs and melee adps calcs. After observing an unfettered dev melee bias, I can’t help but feel like it’s just more of that.

    Now of course this is supposedly just the first incremental test to address lag. And yes they could also do their due diligence toward a compensatory fix along the lines of what Sancus laid out here.

    But I’m just sitting around doing even less dps for now. Just like I’ve been sitting around for years waiting for some semblance of wizard class balance being addressed.

    It would be nice if a dev could communicate where things are going here and how far.
  10. Yinla Ye Ol' Dragon

    If they did this they would need to do some major rebalancing. At the moment each proc has its own chance to be resisted, lumping them all into 1 would mean every cast will have far more potential for DPS loss if that spell is resisted. I also don't see lag reducing much changing procs, they will still have to do calculations to add the proc damage to the spell each cast. Removing checks on spell types I would have thought would reduce.

    Scrapping type 3s or the focus AA for each spell would help reduce the number of calculations going on. As I understand it, its the calculations causing the issues not the procs themselves.

    I don't see us seeing much reduction in lag until they get rid of all the trash mobs and do something with swarm pets. I would have thought these were impacting the lag more than procs.
  11. Sprained wrist hurts New Member

  12. Ezbro Elder

    Funny thing is that class balance is one of the most important factors in a game like EQ, and devs are being so silent about what they are doing, plan to do, or how they are going about it. A frustrated player base can see overpowered SKs and Necros, and underpowered monks and wizards for instance. Many of these very obvious problems have been going on for years! We get no indication on how they are handling this. This is a major fail of communication, and means the community manager role at daybreak forums is a major deception/stalling tactic or a blatant failure. If you have developer shortage, we can understand that, but you still have to have a plan right? What is the plan??
  13. Beimeith Lord of the Game


    Type 3 augs are actually focus effects that are limited to 1 spell (or in some cases a group of spells).
    As with all focus effects, only the highest value takes effect.

    Simply put, they don't stack.
    Sancus likes this.
  14. Szilent Augur

    [IMG]
    Duder, Maedhros, Skuz and 2 others like this.
  15. Jaylnn Gnomish Bog Jogger

    Not trying to derail, but honest question. If they cant handle forum lag, how do we really expect them to handle in game lag.
    Bobbybick likes this.
  16. Beimeith Lord of the Game


    Damage calculations themselves really shouldn't be the problem since computers can handle billions of these a second.

    As I understand it (which may be limited) the problem is that spells have hundreds/thousands of other operations besides the actual math they have to do.

    Just off the top of my head they have to check:

    • Can you see the target?
    • Are you in range to target?
    • Do you have enough Mana to cast the spell?
    • Do you have enough Endurance to cast the spell?
    • Is there a Mob Type restriction (undead/plant/etc.) on the spell and is your target that Mob Type?
    • Are you Inside/Outside and is the spell restricted to Inside/Outside?
    • Are you in fast regen/combat/out of combat/ and is the spell restricted to fast regen/combat/out of combat?
    • Is the Mob immune to any spell effect on your spell? (mez/snare/charm/etc.)?
    • Are you silenced?
    • Are you mezzed?
    • Are you charmed?
    • Etc.
    Now this is by no means a complete list and some of these might be skipped for certain situations, but I expect the list is at least a few hundred (maybe a few thousand) long and a large portion have to be gone for for EACH spell, and each proc counts as a separate spell.
    Wulfhere, Kelset, Skuz and 3 others like this.
  17. Joules_Bianchi A certain gnome

    Just out of curiosity, does spamming Free to play accounts popups all night and opening browsers and directing them to a sales web page they never clicked on cause unnecessary server traffic and lag?
  18. Ezbro Elder

    They good now?
  19. Xyroff-cazic. Director of Sarcasm

    I haven't been on a free to play account for a long time, but I believe you can just minimize the first pop-up and you won't get any more for that session.
  20. Jumbur Improved Familiar

    Wouldn't it be much more efficient to move ALL the crit and proc calculations to the client, where it just sends the combined damage result to the server instead?

    The only downside is that you can't see other player's crit/proc-rate, but only their total damage.