Arcanaville

Arcanaville
  • Posts

    10683
  • Joined

  1. Amazing how some of these goofy errors can survive hundreds of pairs of eyes. The next update of this guide with the revisions above should be out hopefully around the new year.

    It would not be nearly as good as it is without a significant amount of contributions from forum readers, including yourself.
  2. Arcanaville

    About -Res....

    [ QUOTE ]
    [ QUOTE ]
    [ QUOTE ]
    Long long ago, in a post far away, one of the devs mentioned the way -Resistance worked. Now, What I've heard that post mentioned was that -Res wasnt actual -Res but a damage multiplier. Is this correct, or is this one of the fallacies just randomly flying around?

    [/ QUOTE ]

    Resist Debuffs are resisted by Damage Resistance.

    If your 100 damage attack hits someone with no resists, it does 100 damage.
    If that person had a 25% Resist Debuff, damage taken would be 125.

    A 100 damage attack vs someone with 50% resists would take 50 damage.
    If that person had a 25% Resist Debuff on them, damage taken would be 62.5.

    EDIT: The above assumes the Resist Debuff is resistable. Defenders debuffs are not resistable in PvP.

    [/ QUOTE ]

    Finally. Now I have something to point back to when I start making a list of why defenders underperform in PvP as far as -res goes. -dmg also seems to be affected by this as well when the damage and the resistance are the same.

    [/ QUOTE ]

    In actual fact, in a very real sense resistance debuffs only work "as expected" in the specific case of defender debuffs used in PvP. In all other cases, resistance debuffs are always "softer" than you might expect, because they are resisted (and due to the way the math works out, in effect resisted resistance debuffs look just like a damage multiplier).

    So in fact, this would specifically be one of the areas where (some) defenders have a distinct advantage in PvP, not a disadvantage. But it might point to some strong imbalances *between* defenders in PvP. Defenders without resistance debuffs (i.e. kinetics, force fields) have significantly less damage potential than defenders that do against high resistance targets; this may or may not be significant when comparing different defender sets.


    Elsewhere, I believe it was mentioned that in a non-unique quirky way, damage resistance also resists *damage* debuffs of the same type. The game engine seems to have very funky design to deal with certain related things like damage resistance and damage debuffs (think about the endurance drain/endurance recovery issue recently).
  3. Arcanaville

    Accuracy

    Weirdbeard has been graciously looking at my reported "triple-miss" problem, and based on the information he's provided to me, I have to say that without access to my files, I have to conclude there's some systematic error on my end, either in the demorecord itself, or my analysis of it. Its weird since the same scripts and techniques worked very well in other circumstances to measure accuracy and the streakbreaker reasonably well (it did confirm that the streakbreaker was working for villains, for example), but in the specific instance where I was seeing odd triplicate behavior, based on the info provided by WB, there's simply no way for what I was seeing to actually be happening. I'm prepared to conclude that, subject to getting a second look at the raw files, the triple-streak behavior has to be an error on my end.

    Normally, I'm very meticulous about measurements, and try to triple check everything before posting, and in this case, a systematic error seems to have survived *five* separate checks on my part, but an error is still an error, and I apologize to anyone relying on it to form an opinion about the tohit calculator.


    Because of that, I'm not going to say anything more about specific accuracy tests until I've had a chance to redo them all in a much more airtight fashion, which may take some time because this time I'm going to beat the numbers completely to death before I say anything at all.


    I should mention what this does for my position on the random number generator and the tohit calculator, including the streakbreaker:

    1. I've never suggested the random number generator itself was inherently streaky to the degree where it would create far out of bounds streaks on its own. Rand() has problems, but consistent streakiness is not one of them. It *can* create problems, including streakiness in certain circumstances, but they would be highly intermittent, and highly situational, and very dependent on how the random numbers were used. I don't and never did have direct evidence that the random number source was itself directly causing problems.

    2. I *did* believe that there were corner cases where the tohit calculator behaved oddly. However, my primary example of that behavor now appears to be very likely flawed, which means I no longer have unambiguous evidence of corner case oddities.

    3. I *did* have evidence that the streak breaker works, at least most of the time. I *don't* and never did have direct evidence that it failed to operate entirely, or operated consistently incorrectly in any particular situation.


    Basically, I only had evidence of corner-case oddities, and that evidence can't be trusted anymore, so I no longer have direct evidence of tohit irregularities.


    However, now that we know precisely how the streakbreaker is *supposed* to work, and can confirm whether it works correctly or not, two questions remain:

    1. Does the streakbreaker *always* function as described?

    2. If the streakbreaker functions exactly as described, does it introduce unwanted behavior, particularly to defense sets?


    I suspect the answer to #1 is "almost always" but its always possible for there to be minor bugs in it, although because we now know how it works, we can construct precise tests to test its behavior.

    I suspect the answer to #2 is that the SB, even when its working "properly" does do some non-intuitive things to defense sets at the low end (~ 20% net tohit) and in group situations (multiple attackers), but I can't say for sure if those effects are strong enough to care about.


    Again, it looks like I screwed up this particular test; if I figure out precisely how a simple hit counter could fail this badly on a particular demorecord, I'll report back. And kudos to Weirdbeard, who took the time to research this carefully and give me the data to demonstrate that an error of some kind must have taken place (almost certainly on my end).


    Yes, I do in fact feel like an idiot. The fact that my current RL assignment relies heavily on a lot of scripts processing a lot of data with absolutely zero defects is not helping my mood any. In any case, I'm going back and redoing all of my accuracy tests from scratch, including all base accuracy tests, all accuracy function validation tests, and all streak/streakbreaker-related tests, just as soon as I have a functioning system and the time. This time around, I'm releasing *all* of the raw data and scripts related to processing, so someone else can catch any stupid mistakes I might make. And I'm specifically going to go through my list of unanswered questions on how accuracy works and test them all, one at a time, until I have accurate answers for all of them.
  4. Arcanaville

    Accuracy

    [ QUOTE ]
    [ QUOTE ]
    The final formula, which I will expand out for geko as:

    (InherentPowerAccuracy + Accuracy Enhancements) x (Base ToHit + ToHitBuffs - ToHitDebuffs - Defense)

    Or if you prefer:

    (1.0 + InherentAccuracyBonus + AccuracyEnhancements) x [BaseToHit + ToHitBuffs - ToHitDebuffs - (Defense + DefenseBuffs - DefenseDebuffs)]

    [/ QUOTE ]

    Just some questions to clear things up for me:

    1) an AoE with 20% ACC penalty would be -0.2 for InherentAccuracyBonus? Burn would be around +1.0 InherentAccuracyBonus?


    [/ QUOTE ]

    If I understand the devs correctly, I believe whenever a specific power has an inherent bonus or penalty to accuracy, its an "accuracy" bonus/penalty, in the sense of the equation. So yes.

    [ QUOTE ]

    2) Where would the level difference bonus/penalty be applied? IAB or multiplied around the entire thing?


    [/ QUOTE ]

    Level differences are said to be modifications to "tohit" and therefore they alter the BaseToHit in the equation. You can think of the level modifications as defacto tohit buffs or debuffs, or alternatively you can think of the BaseToHit as being itself something that is "looked up" per target and entered into the equation. Thus, player base tohit against even level minions is 75%, whereas base tohit against +1 minions is 65% (or you can think of it as a -10% tohit penalty against +1s).

    [ QUOTE ]

    3) ACC inspiration is a ToHitBuff? Likewise, DEF insp. counts as a DefenseBuff?


    [/ QUOTE ]

    I'm certain that defense inspirationos count as a defense buff - they raise defense, and during discussions of defense stacking they were said to raise "base defense" which for the purposes of that discussion implied they offered defense against everything (all ranges, all damage types) and stacked with everything.

    I can't say with 100% certainty what acc inspirations do. I *believe* they boost Accuracy, like accuracy enhancements, but I've seen contradictory tests that people have done that seem to suggest they work one way or the other.

    Assuming that there isn't a third way they can work, there is an easy way to determine which of the two they are: tohit or accuracy. Drag a low level character (say in the 20s) to PI, and chomp four acc insps, then shoot at something. If acc insps work like Accuracy buffs, then you aren't likely to hit anything. If they work like tohit buffs (vis-a-vis Aim) then you're going to hit everything almost all the time (and get sent to the hospital mighty fast - you probably wanna run this test on the test server).

    For reasons I'm about to explain, I'm going to be (re)doing a lot of accuracy testing, so this is on my todo list, actually.
  5. Arcanaville

    Accuracy

    [ QUOTE ]
    [ QUOTE ]
    2. The streakbreaker has a very, very long worst case scenario that it can lock into. If you attack *anything*, even *once* with an attack with net 20% or less chance to hit (something with very high defense, say a drone), the streakbreaker is essentially turned off for 100 swings. Can you point to a streak of misses where you can say with certainty that for 100 swings prior to the miss streak, you definitely did not swing at any high defense targets at all?

    [/ QUOTE ]

    From WeirdBeard's post:[ QUOTE ]
    Something to note, for those inclined to note such things. Because we do the lookup based on your worst to-hit in the series, the streak breaker is a bit less aggressive about breaking streaks than it might initially appear from the table. If you miss an ill-advised attack with a final to-hit of 0.15, you would in fact be allowed to continue the miss series for another 99 attacks, even if all the followup attacks are of capped to-hit, should you be unlucky enough.

    [/ QUOTE ]

    It seems like you've misunderstood WB's explanation of figuring worst to-hit. From a logical standpoint, it would make sense to keep track of the worst to-hit only when you start a miss streak. The streakbreaker resets once a hit is registered, so shouldn't the worst to-hit too? Note that WB said that the streak breaker is "a bit less agressive about breaking streaks." I'd consider turning off the breaker for 100 swings to be overagressive. Heck, from a coding standpoint, it's certainly harder to keep track of worst to-hit within the last 100 swings rather than simply resetting everything once a hit occurs.

    [/ QUOTE ]

    Out of context, my statement poorly reflects the behavior of the streakbreaker. The intent was to point to situations were a report of the streakbreaker failing was unimpeachable, therefore I stated something much stronger than necessary.

    If, however, I stated "can you be sure that you did not swing at any low tohit targets during any long terms miss streaks" that is a tricky thing to keep track of and observe, and therefore subject to being questioned. If, on the other hand, you can say "at no time at all in the last 100 swings did I attack any low tohit targets" then there cannot be *any* reason for the streakbreaker to be in the low mode at all.

    What I should have stated is "the streakbreaker is essentially turned off for (up to) 100 misses."

    Its a stronger statement than necessary, but its also a much easier thing to set up a test to verify: simply never attack high defense targets at all during your test.


    For the record, I interpreted WBs post the same way you did: that the streakbreaker looks at the worst tohit in "the series" - meaning the current series of misses.
  6. Arcanaville

    Accuracy

    [ QUOTE ]

    Now, as far as #2 goes, that's something I'll have to look at more closely. This is the first time I've heard stated that Accuracy Debuffs/Defense are applied to my base to-hit chance before it being multiplied by my enhancement/ accuracy buffs- that's seems rather counterintuitive as it means with a high enough defense, I wouldn't matter how much accuracy I had, I'd never be able to hit.
    Not to challenge you, but I'd be very interested to see that statement documented somewhere, as this is the first Ive heard of it.


    [/ QUOTE ]

    Its been carefully tested, and also confirmed by geko when he (very broadly) described the tohit formula in his Q&A, in this thread (see the answer to #8).

    Its repeated here, annotated:

    [ QUOTE ]

    First, we need 2 things: The attackers ToHit (this includes all ToHit Buffs and debuffs),


    [/ QUOTE ]

    We infer from this that "Attackers ToHit" is the attackers base tohit, plus all tohit buffs, minus all tohit debuffs, although this is not explicitly stated.

    [ QUOTE ]

    the targets Defense (this also include all Defense buffs and debuffs). We then do the following:

    (Total_To_Hit - Total_Defense)


    [/ QUOTE ]

    In other words, the intermediate sum of ToHit - Defense is calculated *first*.

    [ QUOTE ]

    That value is clamped between 5% and 95%. That is, you can never have more than a 5% chance to hit or miss a target. So if a target's Defense is greater than the attacker's ToHit, the attacker will still have at least a 5% chance to hit.


    [/ QUOTE ]

    Floors and ceilings.


    [ QUOTE ]

    We then multiply that number by the power's total Accuracy (total Accuracy = Accuracy + the power's Accuracy Enhancements).


    [/ QUOTE ]

    What Geko is calling here "Accuracy" is also referred to as "Base Accuracy" and "Inherent Accuracy" elsewhere, and is the inherent accuracy of the *attack* (note the phrase "the power's" above). Whenever the devs say a particular power has an accuracy bonus (i.e. snipes) they are referring to this number. For all normal attacks, "Base Accuracy" = 1.0.

    Accuracy Enhancements are, of course, accuracy enhancements.

    [ QUOTE ]

    We again clamp the values between 5% and 95%.


    [/ QUOTE ]

    Floors and ceilings again.

    [ QUOTE ]

    So to sum up:
    ((Total_To_Hit - Total_Defense), 0.05,0.95 MinMax) x ACC = Chance To Hit.


    [/ QUOTE ]

    The final formula, which I will expand out for geko as:

    (InherentPowerAccuracy + Accuracy Enhancements) x (Base ToHit + ToHitBuffs - ToHitDebuffs - Defense)

    Or if you prefer:

    (1.0 + InherentAccuracyBonus + AccuracyEnhancements) x [BaseToHit + ToHitBuffs - ToHitDebuffs - (Defense + DefenseBuffs - DefenseDebuffs)]



    As a result:

    [ QUOTE ]

    1) Unless ALL lvl 48 minions have signifigant (More than 34.5%)(124.5 -34.5 still puts me at the 90% to-hit range which dictates a maximum streak of 1 miss) defense bonuses or accuracy debuffs, It holds true. Maybe it's just me, but I think this is a somewhat reasonable assumption to start from.


    [/ QUOTE ]

    It only takes about 22% defense to lower you to below 90% net tohit. (0.75 - 0.22) * 1.67 = .8851 = 88.51% (21% defense would be 90.18%). It doesn't have to be all of them, just enough of them to keep dropping you back down into the 2-miss range often enough to notice the streaks.
  7. And of course, while some are looking at the streak breaker, others have been looking at the purple patch, which apparently isn't functioning as documented. See this post for Pippy's response from pohsyb regarding the tohit percentages as scaled by level difference, which diverge somewhat from the purple patch numbers originally posted by geko, and as documented in the guide. The numbers pohsyb gives are:

    -4 .95
    -3 .90
    -2 .85
    -1 .80
    +0 .75
    +1 .65
    +2 .56
    +3 .48
    +4 .39
    +5 .30
    +6 .20
    +7 .08
  8. Arcanaville

    Accuracy

    [ QUOTE ]
    And they still haven't responded to my question:

    With 2 SO's slotted, that puts my accuracy at 75x1.66 = 124.5
    With an accuracy cap of 95%, I should always be at that vs even con minons- which the streakbreaker chart says I should have a maximum of 1 miss in a row, yet I can easily demonstrate otherwise. Why?

    [/ QUOTE ]

    If you can answer three questions definitively and unambiguously, then you have a genuine (potential) streakbreaker bug.


    1. WB already noted a special case bug: you have to hit at least once before the streak breaker engages. So any miss streaks that occur immediately upon login (or zoning, or entering missions, perhaps) don't count. Can you point to multiple miss streaks outside these cases?

    2. The streakbreaker has a very, very long worst case scenario that it can lock into. If you attack *anything*, even *once* with an attack with net 20% or less chance to hit (something with very high defense, say a drone), the streakbreaker is essentially turned off for 100 swings. Can you point to a streak of misses where you can say with certainty that for 100 swings prior to the miss streak, you definitely did not swing at any high defense targets at all?

    [note1: accuracy enhancements are proportional to net tohit after defense, so if you attack something with 30% defense, your net tohit with 2 acc SOs is actually (75%-30%) * 1.66 = 74.7%. There are things that are packing really high defense: i.e. rikti drones. whatever their defense is, its enough to lower your tohit well below 50% even with a lot of acc slotting.]

    [note2: at some point in the near past, *everything* started using more defense. a lot of reports of "accuracy" being off I believe are tracable to villains being granted more defensive powers. Consider: prior to I4, CoT scientists were not suddenly growing rock armor and making themselves difficult to hit.]

    3. Are you absolutely sure there isn't anything else that the game might be counting as a "hit?" For example, fire tanks with blazing aura turned on might be overlooking all the "hit" ticks of BA and only noticing several melee attack swings in a row. According to WB, only *autohitting* attacks are ignored by the streakbreaker; things like damage auras might throw off what someone apparently observes.


    One definitive test of the streakbreaker that would suggests a bug is to find something you *know* you have high tohit against, something you essentially never miss at, and then watch to see if you can find that double-miss against that target alone, without shooting at any other type of target at all.

    I can say that in every case where I've seen accuracy jump the rails, its happened at the end of very long attack tests. I theorized way back then that perhaps the streakbreaker was overflowing a counter or something if you actually attacked or allowed to be attacked by the same target exclusively for hours at a time: a corner case the code didn't account for.

    As to actual streakiness, as soon as I have a system capable of running CoH again, I'm going to start serious accuracy sequence tests to see if I can reproduce my old pre-I5 results, and very specifically to see if I can reproduce the streakbreaker table.
  9. [ QUOTE ]
    I would expect Cold Domination/Arctic Fog to retain it's defense bonus even when unstealthed just like Dark Miasma/Shadow Fall, and Storm/Steamy Mist do. I'm not quite high enough level to test this out though.


    [/ QUOTE ]

    The list of powers that retain their full defense even when stealth is broken comes from a post by Statesman: it isn't necessarily 100% complete, so anyone who has tested and confirmed that other "primary" powers retain their defensive bonus should let me know and I will correct the list.

    [ QUOTE ]

    In addition to the melee/range defense the above powers provide, they also have a typed defense component: Lethal,Smash,Fire,Cold, Energy, Neg. Energy. So essentually the only things they don't provide defense for are AOE psychic, AOE toxic, and AOE untyped.


    [/ QUOTE ]

    Additionally, technically because of the way defense works, such powers only fail to provide defense for attacks that *only* have AoE psi, toxic, or untyped damage. I'm unaware of an AoE psi or toxic attack that has a non-psi/non-toxic component, but if such an attack existed (say, something that did AoE psi/smash) such powers *would* defend against them, because they would work against the smashing component, and therefore against the entire attack as a whole.


    [ QUOTE ]

    It's probably also worth mentioning that Shadow Fall, Steamy Mist, Arctic Fog all provide defense to all allies within a given range of the source. I'm not certain what constitutes an ally in the PvP Free for All zones. Manuevers also provides AOE defense but it claims to be team only.


    [/ QUOTE ]

    That's a good question. Which powers affect "allies" and "foes" isn't 100% clear to me in the PvP free fire zones. It isn't directly a defense issue, but I can tell you it did *seem* like I was getting defense buffs from dispersion bubbles even from non-teamed defenders in Warburg, back when it first opened and it was much more of a free-for-all. I haven't seen anyone post specific tests of which powers buff and don't buff non-teammates, though.
  10. Arcanaville

    Accuracy

    [ QUOTE ]
    bah, edited. I give up to your persistance. You win. :-) I go back to enjoying the game instead.

    [/ QUOTE ]


    If a discussion of the mechanics of the game hurts your enjoyment of the game, then you *should* stop discussing them: that goes for anyone including me.

    Fortunately, it doesn't for me. When I go out to eat, I often ask myself "How was this prepared? Is that paprika I taste? Could I make it myself? Could I make it *better*?" It doesn't in any way prevent me from enjoying the meal.

    Probably even more relevant, I'm something of a cinema buff, so when I go to see a movie, I'm often thinking about how it was shot, how the sound was added, the cuts, the editing, the dialog, the casting, the set design, and the cinematography.

    But not when I'm actually watching it. I do that on the drive home. When I'm watching it, I'm just watching it, or at least I try to. I replay it in my head when I'm analyzing it. I look at CoH in exactly the same way.
  11. Arcanaville

    Accuracy

    [ QUOTE ]
    Reality always trumps theory.

    Looks back at the testing of a single characters view of things from the developers themselves:
    [ QUOTE ]

    That is a 75.22% overall to hit chance against an even level critter with no defense powers.


    [/ QUOTE ]

    Low order bits, high order bits, entropy, better generators, none of that theory matters because of what reality shows. Theories and guesses about their random generators being broke and the effect of streak breakers doesn't match reality which means you need to reconsider your theories. Again, rand() is fine. It produces the desired results.

    It's easy enough to get wrapped up in theory being reality, heck, I used to get wrapped up in that problem too. Theory is there to mimic reality not the other way around.

    Theory is that this game should be fun. Hope that matches reality.

    Kick back, enjoy the game for the highs and the lows. Bad streaks happend. Good streaks happen. Plenty of people see bad streaks. More people see good streaks.

    Lets be heores and kick some villanous butt!

    [/ QUOTE ]

    This is where I describe the (pretty infamous, in random number generator circles) notorious "coin-toss" bug.

    Someone writes a random number program to simulate coin tosses. It looks like this:

    function coin_flip()
    toss = rand() % 2
    if toss == 0 then return heads
    else if toss == 1 then return tails


    He runs it for a million iterations and discovers it generates five hundred thousand heads, and five hundred thousand tails.

    Exactly.

    So he gets suspicious, and has it print out each coin flip. The output looks like this:


    heads, tails, heads, tails, heads, tails, heads, tails, heads, tails, heads, tails...


    Whoops. The problem is a lot of the implementations of rand() that actually exist in reality alternate the low order bit, believe it or not. It has to do with how rand() works on a lot of systems: rand generates a pseudorandom sequence by taking the last generated number and doing a r2 = (r1 * p1 + p2) mod RAND_MAX kind of thing, and because p2 is odd, it will always change odd numbers even and even numbers odd. A lot of modern rand() generators drop the low order bit and return a 31 bit integer instead of the generated 32 bit integer, specifically because of this long-standing problem (and even LFSRs tend to have very low period low order bit cycles, and throw away the low bit as well).


    Even some of the *worst* generators will pass the test of randomness you are suggesting rand() is passing. If rand generated all the numbers from 1 to 100 in sequence, over and over again, long term tohit accuracy tests would still pass properly. In fact, they would be basically dead on perfect.


    Would that alternating coin-flip behavior get "smeared out" if a lot of people were calling it in a multiuser coin-flip system? Well, that depends on some sticky details: on most systems, rand() is not reentrant.


    [ QUOTE ]

    Theories and guesses about their random generators being broke and the effect of streak breakers doesn't match reality which means you need to reconsider your theories.


    [/ QUOTE ]

    You're currently talking to one of the only people that posted numerical tests on the streakbreaker, and the only person that has posted the results of looking at long term demorecords showing instances where the tohit calculator is absolutely, definitively, beyond any shadow of a doubt broken (I'm the person being referred to as having a demorecord of a villain doing things in triplicate over and over 44 times in a row).

    And, I've also consistently pointed out where bad streaks are *within* the limits of statistical likelyhood, instead of not, and *not* direct evidence of any problem with the tohit calculator. So I'm not just attacking the tohit calculator exclusively and without reason.


    [ QUOTE ]

    Again, rand() is fine. It produces the desired results.


    [/ QUOTE ]

    Really? What results are those that you know it produces, exactly?


    I've said "reality always trumps theory" myself a gazillion times when discussing accuracy, given how many people don't understand probability very well and come up with their own theories for it. And I myself have said that the imperfections in rand() cannot directly create the long streakiness that some people have observed. However, contrawise it *does* have failings, and those failings do crop up again and again in other software systems that attempt to rely on rand().


    Theory is not there "to mimic reality." Theory hand-tweaked to mimic reality is worthless. And we're not talking about theory, we're talking about math. You can't tweak math like you can a theory: if the calculations say X, and you haven't made an error, then X is the truth, period.


    Since I'm coming from a perspective of actually having looked, mathematically, at both accuracy and the streakbreaker, I think I'll stick with my theories for now. Since I've actually seen the source for rand(), I think I'll stick with my own opinions on how it works for now. And since I've been told by the professionals what they think of rand(), I think I'll stick with my original reply on whether rand() is "just fine" or not.


    Forgive me for being a bit terse, but there have been people that have been claiming that accuracy is broken for a lot time: most of them are almost certainly wrong in the specific claim they are making, but not necessarily all of them. And a lot of other people have taken to parroting the dev auto-response: accuracy is fine, there's no problem, and most of them have no idea whether thats true or not either. Few people actually look at things in the detail necessary to see a problem definitively *and* have the mathematical skills to demonstrate that their observations exceed statistical likelihood. So complaints about accuracy pretty much get drowned out by noise: theoretical noise, observational noise, and just plain noise. There's so much noise, I can understand why the devs don't tend to take accuracy complaints seriously.

    And yet: given the specific numbers on how the streakbreaker works, there *are* definitely regimes where the observed tohit will diverge significantly from what it ought to be: thats definite, and has nothing to do with rand() specifically. BUT, its PROOF that there were always instances where the "randomness" of tohit was being affected in a measurable way, but any measurements of that divergence would have been discarded as observer error, until now (that we have a concrete explanation for them). And interestingly, since the devs have always claimed that datamining showed that accuracy was working correctly, the implication was that whoever did that analysis actually did a statistical analysis of the streakbreaker, and had actual numbers as to what it did to accuracy - or else they couldn't have checked properly.

    And if that is the case, then the devs always had in their possession a "chart" whereby they would know that the streakbreaker might do significant things to accuracy at the low end of the chart. That's also interesting: either they couldn't have fully checked accuracy as they have been suggesting, or they knew defense was being hit harder than normal because of the streakbreaker. Or: the left hand analyzing defense didn't know what the right hand checking accuracy knew. In either case, its additional insight into how the game is designed, implemented, and then verified.


    I'm sorry, but "I think I miss too often so something must be broken" is not generally helpful, but "everything is fine, whatever you're seeing is what you are supposed to see, play on" is equally unhelpful. And if someone is going to speak authoritatively about something like the random number generator, given how confusing this topic already is, their facts should be unambiguously accurate. Especially if you're going to say something like "I can *prove* rand() is fine for MMOs." Because no one can prove that: you can only prove that a particular implementation *happens* to dodge all of its nasty effects. Or that a specific one *doesn't*.
  12. Arcanaville

    Accuracy

    [ QUOTE ]
    [ QUOTE ]
    [ QUOTE ]
    Then how is it possible to miss 3 or 4 attacks in a row while using Aim and Buildup?

    [/ QUOTE ]
    Aim and Buildup only affect the attacks you make after using them. If you missed with an attack before using Aim/Buildup, that miss is part of the miss streak tracker. Say it fell in the range where 5 misses are allowed. You can then miss the next 4 attacks no matter what their accuracy is - so the result you see is miss-Aim-BU-miss-miss-miss-miss. That's fine as far as the streak breaker is concerned. It's still an unlikely scenario, but it's working as designed.

    [/ QUOTE ]

    I had accepted this answer until I thought about it a bit. I am refering to an elec/energy blapper. Attack chain is Lightning Bolt, Power Thrust, Energy Punch, Bone Smasher and Total Focus. All attacks have 1 ACC SO in them, +3, never dropping below even level on him. So then against even con minion ACC never drops below 95%, Lt even con never below 90%. Unless I am fighting a lot of defense heavy enemies then I should not have 3-4 misses in a row.

    [/ QUOTE ]

    Remember (and this is for everyone else as well asking "how can I miss if...") based on how the streakbreaker works, if you attack even one thing that has any defense at all you could, under the right conditions, find yourself "stuck" at the lowest streakbreaker setting for the next one hundred swings.

    I.e. if you are in a high level Rikti mission that has drones in it, unless you use build up or Aim on every single drone, the streakbreaker might be effectively turned off throughout the entire mission.

    You don't have to fight "a lot" of defense heavy enemies. Just one every so often is enough.
  13. Arcanaville

    Accuracy

    [ QUOTE ]
    [ QUOTE ]
    Great, so that means Super Reflexes has a further achilles heal (not mentioned before) in that every fourth attack from NPCs will effectively 'auto-hit'.

    [/ QUOTE ]
    No, they have to miss four times in a row. And, for the streak-breaker to actually make a difference, they would have to have missed the fifth time, too. If you can get the to hit chance under 40% then they have to miss seven times for it to make a difference, and I think Elude is very capable of bringing to-hit chances down that far.

    [/ QUOTE ]

    Because the streakbreaker uses a linear breakoff table (up to 20%, when it jumps to 100), the streakbreaker will act most strongly at the lowest breakpoint above the 100 streak-mark: 20%.

    20%... hmm, base 50% to hit, 17.5% * 1.57 = 27.475% defense... 22.525% net tohit...


    hmm...
  14. Arcanaville

    Accuracy

    [ QUOTE ]

    Arcanaville makes me woozy...not sure if in a good way. ;-)


    [/ QUOTE ]

    So I guess a discussion of LFSRs is out, then. Oh well.

    In any case, even with the best versions of rand() out there, its recommended to use the high order bits instead of the low order bits. This is even (and perhaps especially) for implementations like the linux glibc version that uses state tables and LFSRs, since the periodicity of the low order bits is (relatively) low.

    but even the worst random number generator is unlikely to suddenly create very long streaks, though. However, you'd be surprised how easy it is to take a somewhat weak random number generator, and create a stupendous disaster by using it in non-recommended ways (i.e. the infamous "coin-flip" problem).

    I doubt the random number generator on its own is creating massive problems. But there can be subtle problems in how things work that amplify things. I've seen a few.
  15. Arcanaville

    Accuracy

    [ QUOTE ]
    [ QUOTE ]
    Couple clarifications.

    By critter, I mean anything run by the AI. Your pets, Skuls, exploding crates and everything in between. If it can activate a power, the streak breaker will help make it a tad more accurate.

    In the note about AE attacks, I forgot to specify that the hit guarantee is only in the case that you don't have an existing miss steak with a lower to-hit. That should have been clear from the rest of the post, but I wanted to make sure no one was confused by that omission.

    I did locate a small bug, which is now fixed internally. Essentially the streak breaker would not become active until you landed your first hit (so you have to do it yourself, no freebies). Pretty minor in the grand scheme of all things accuracy-related, but it's fixed now regardless. Note that this bug affected players and non-players alike.

    [/ QUOTE ]

    Interesting, so a Trick Arrow/Archery defender who has say, flash Arrow that has a -acc would basically not be getting the benefit of Archery's bonus accuracy from the streak breaker code? Do I understand the streak breaker code correctly?

    If this is the case then it is not surpriseing that many Archery users don't feel any more accurate useing archery than useing any other primary or secondary. Streak Breaker makes up for other sets.

    [/ QUOTE ]

    If I understand the streakbreaker correctly, *and* I understand your question correctly, then I believe what you are asking is whether a trick/archery defender that uses flash arrow against a target would, by using a lower accuracy attack first, "lock" themselves into a lower streakbreaker bracket.

    And the answer seems to be yes, based on what WB is saying about the streakbreaker code.

    However, since the net effect of the streakbreaker is measured in the single digits in most scenarios, the actual accuracy bonus of archery ought to equal or exceed it usually.

    Its more the case that the 5%-15% (~ a couple of percentage points net) accuracy bonus of archery (depending on what you are comparing to) is too small for people to "notice" at all, streakbreaker or not. After all, the average person probably doesn't "notice" the difference (accurately) between a blackjack deck that has a high count over one with a low count, unless they are an actual counter. But the difference is enough to get rich on, if you can get away with it.
  16. Arcanaville

    Accuracy

    [ QUOTE ]

    Second, there's a more significant implication here that may not have been considered. To illustrate, here's a phenomenon that I've experienced many times with my scrapper and stalker (especially in the low to mid levels): I spot a mob of say 10 white or yellow minions with maybe a LT or two. I jump in the middle and take few or no hits for 20 seconds or more, then all of a sudden - WAM - I suffer several hits all at the same time. This concern has been voiced by myself and others in the past, but it has generally been shrugged off as random bad luck, or biased observation. However, it now appears that what's happening is that during those first 20 seconds or so the misses are all legitimate, then suddenly the streak-breaker kicks in for all of them at the same time! This concentrates the damage into a very short window and makes it very difficult to deal with. I think this is completely unfair to defensive sets. I would think this problem would be even more apparent with Ice Tankers, who are supposed to have many minions attacking them at the same time.


    [/ QUOTE ]

    The streakbreaker can definitely cause this type of behavior: its been fingered as the culprit for the sudden "everyone hits at once" phenomenon in the past. Now that we have confirmed numbers for the streakbreaker and absolute confirmation as to its precise behavior, especially as it pertains to NPCs (which has always been a point of dispute on the forums despite WB's previous declaration that the streakbreaker does affect villains), this point is worth reiterating, since it can now be quantified.

    Given the numbers above, does the streakbreaker "cluster" hits from multiple sources? It almost certainly does, but how much is the question: its effect on multiple attackers is very different than its (relatively) slight behavior on a single attacker. How much clustering? Well, thats a bit trickier to analyze, and I won't be in a position to simulate its effects to Monte Carlo the thing for at least a week.

    Its worth noting that it isn't quite this simple: for the streakbreaker to kick in on all of the villains simultaneously, the implication is that all of them were unlucky enough to miss often enough to *force* the streakbreaker to kick in simultaneously. In other words, a really bad bad-luck streak on the villains suddenly turns into a bad luck event for us.

    If this happens too many times, thats tantamount to saying something is wrong with the tohit calculator, since the NPC villains would, in essence, have something to complain about if they always needed the streakbreaker to hand them a hit.
  17. For those interested in the streakbreak, a discussion about it is currently going on in the following threads:

    this one which started as a discussion on accuracy, and has Weirdbeard's post what is probably the most definitive statement about the streakbreaker that currently exists (Weirdbeard's post of a long while ago forms the basis of my understanding of the streakbreaker, and how its described in the Guide above).

    Ineffable_Bob started a separate thread to discuss it here.


    Weirdbeard confirms a couple of things that I stated in the Guide but have consistently been in some dispute, as with all things related to accuracy:

    1. The streakbreaker breaks strings of misses only, not hits.

    2. The streakbreaker works for both heroes and villains (in CoH/CoV-lingo: both players and NPCs).

    3. The streakbreaker breaks streaks based on the accuracy of attacks: its behavior isn't constant.


    Beyond that, WB gives specific numbers and the precise circumstances governing the streakbreaker, including a very specific detail that's been at least quietly theorized: a low accuracy attack can "spoil" high accuracy attacks in the streakbreaker, because the streakbreaker only looks at hits and misses, not what attacks you are using, or what targets you are fighting.

    Thus, if you swing at something with a low accuracy attack (or that itself has high defense), *that* tohit chance is "remembered" by the streakbreaker in terms of how many misses it will take to engage the streakbreaker.

    A more detailed description will be in the next version of the Guide; meanwhile I point you to the threads linked above.
  18. Arcanaville

    Accuracy

    [ QUOTE ]
    [ QUOTE ]
    [ QUOTE ]
    In another redname post several months back, it was clearly explained that aim+buildup does NOT stack. IE. if aim gives 100% to accuracy and 25% to damage, and buildup gives 100% to damage and 25% to accuracy, the total would be the combined best of both abilities, IE. 100% accuracy and damage.

    [/ QUOTE ]

    Wrong.

    [/ QUOTE ]

    I'm pretty sure +100% to both was right. But instead of just flatly stating WRONG and leaving it at that, why don't you state what the correct values would be? Are you saying both Aim+BU would give +125% to dmg and acc?

    [/ QUOTE ]


    I think Stargazer is saying, wrong, no dev ever said that.

    Build Up is +100% damage and (the generally accepted number is) +60% tohit buff. Aim is the reverse.

    For blasters, scrappers, and defenders, at least. Tanker build up (and apparently stalker build up) is +80% damage and (the generally accepted number seems to be) +50% tohit buff.

    And they've stacked since the beginning of time. The damage has always stacked. The accuracy has stacked in every instance I've had an opportunity to test: in particular, testing Aim + BU (verses each separately) against PFF in the arena (circa I3-I4), I can tell you that either they stack, or I had a remarkable coincidence of Aim+BU attacks hitting while Aim or BU alone were missing.
  19. Arcanaville

    Accuracy

    [ QUOTE ]
    OK heroes, a lot of people have many misconcenptions about random number generation systems. Lets clear some of that up...


    [/ QUOTE ]

    ok...

    [ QUOTE ]

    1. rand() or any sufficiently random number genator works fine when it's results are spread out across multiple observers. The rand() as a whole may eventually be predictive(not by a human) but when 1000's of people are picking results out of rand() at random times, the result is that each individual observer will NEVER be able to predict with any accuracy bc each individual user has NO IDEA where in the sequence rand() is and NO IDEA how many other users are picking results out of rand(). rand() on a mod of 5 is easy to predict. rand() on a mod of 100 is not quite so easy. rand() when you aren't the only one getting a sequence is impossible to predict. So drop it on rand(). rand() is fine. PM is you want a more detailed proof that rand() is fine on MMORPs.


    [/ QUOTE ]

    Sorry, this isn't correct. If "rand() or any sufficiently random number genator works fine when it's results are spread out across multiple observers" were true, then people would suggest that a good way to fix a bad generator would be to discard a random number of generated results before accepting one. That doesn't work. The problem with rand() is the pseudo-cyclical nature of the low-order bits: that will show up no matter how you consume the random numbers.

    You don't even need to PM me for the proof: if there is an entropy issue with the low order bits of the sequence generated by rand(), then the entropy e of rand() is lower than the entropy of a true random sequence R. If this is the case, then a random subset of the sequence rand() will also have a lower entropy than normal (for that matter, most non-random subsets will have the same property), ergo it will suffer the same problems with randomness.


    [ QUOTE ]

    2. random generators work against the whole system not an individual. Seeing people with experience with long streaks indicates that the system is working fine because you couldn't predict that you'd have such "bad luck". In fact, you can't predict when your bad streak will end because you can't know all the variables behind the scenes. If you can't predict what will happen then the random generation system is fine.


    [/ QUOTE ]

    There is actually a statistical definition of the term "random" and it isn't just "unpredictable." A sequence that goes 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, ... might be unpredictable, but an extremely poor random number generator because of its extremely low entropy.


    [ QUOTE ]

    3. Streak breakers are there to shield against perceived bad luck and actually reduce the randomness of the generator. When missing 99 times in a row has a 7.88e-131 chance of happening with 95% accuracy, it's still possible AND given that there are billions of sequences being burned through, it becomes probable.


    [/ QUOTE ]

    And we can calculate how likely it is, too. The odds against missing 99 times in a row when your tohit is 95% is one in 6.34 x 10^128. If all 150,000 subscribers played 24 hours a day, attacked things constantly at that tohit percentage at an attack speed of one attack per second, it ought to happen at least once every 134 million trillion trillion trillion trillion trillion trillion trillion trillion trillion years. Heck, maybe twice.


    With the number of players, and the actual playtime and play conditions, million-to-one shots are going to happen. Billion-to-one shots are eventually going to happen, but they will be lottery winners. Trillion-to-one shots are really unlikely, and anyone who sees enough of them to believe they are recurring has defacto seen something worthy of investigation. If you actually need to go to scientific notation to express the probability, then a reasonable estimate for that likelyhood is zero.


    [ QUOTE ]

    The streak breaker removes that possibility and therefore reduces the randomness of the system. Streak breakers remove huge chunks of possibilities out of the universe of what the random generator could churn out.


    [/ QUOTE ]

    Actually, based on the numbers and description provided by Weirdbeard, it does a lot more than that. The streakbreaker is actually more powerful than I thought it was, and does in actual fact skew net tohit percentages by measurable amounts. Not radical ones, but potentially noticable ones.


    [ QUOTE ]

    For the curious, study the definition between possible and probable. Think also about the scale you are talking about with a MMORP.

    [/ QUOTE ]

    Scale doesn't have anything to do with it. If the devs were using an incredibly bad random number generator, the distributing the random numbers might break up truely awful periodic behavior inherent in the generator. But if the problem is a general lack of entropy in the generator, distributing the random numbers won't, and provably cannot, improve the situation.


    As I mentioned previously, the main problem is with the low order bits of rand(), so the question is which bits are the devs using: the low order ones or the high order ones (given how rand() works, everyone tends to use only a subset of the bits).

    There is also the issue of whether or not the random generators are instanced or not, and whether rand() is the only source of "random" numbers. Rand() is a little pokey, so many times rand() is used to seed a pseduo-sequence generator that is a lot faster: usually a generator like r2 = (r1 * p1) mod p2 that is used a few times before being reseeded by rand().
  20. Arcanaville

    Accuracy

    [ QUOTE ]
    In another redname post several months back, it was clearly explained that aim+buildup does NOT stack. IE. if aim gives 100% to accuracy and 25% to damage, and buildup gives 100% to damage and 25% to accuracy, the total would be the combined best of both abilities, IE. 100% accuracy and damage.

    I am not sure if this has changed, but I would bet it hasn't... so when calculating accuracy you should seriously consider ONLY using aim OR buildup, not both. if you try to use both you will arrive at incorrect to-hit percentages.

    as to the actual numbers, I could be wrong about those, it might be 100% and 33%, not sure.

    [/ QUOTE ]

    I do not remember any such post, but I can tell you that blasters that 4-slot nova for damage pre-ED were damage-capping nova with BU and Aim: i.e. the damage component of BU and Aim at least seemed to stack just fine (Aim has +60% to damage, not +25%).
  21. Arcanaville

    Accuracy

    [ QUOTE ]
    I stand corrected.

    This was PM'd to me by a user who got the info from Pohsyb.
    [ QUOTE ]
    The streakbreaker will force a hit if there has been a long series of misses (only for heroes)

    ACC / Length of miss streak before we force a hit
    >90 / 1
    80-90 / 2
    60-80 / 3
    30-50 / 4
    20-30 / 6
    10-20 / 8
    1-10 / 100

    The random number is calculated simply by the C stdlib rand().

    [/ QUOTE ]

    [/ QUOTE ]

    Except I've actually measured the streakbreaker, and it was working for villains (and those numbers are a little different than I measured in any case).

    Someplace somewhere are the numbers I measured for the streakbreaker, measured by letting villains swing at one of my heroes (currently, that data is in a box being shipped to Ontrack).

    Also, quite a long time ago I got a PM from QA stating that the streakbreaker only broke strings of misses (not hits) and it worked for both villains and heroes alike.


    At this point, I'm of the opinion that nothing short of going to the source code will definitively state what the tohit calculator is doing, because we now have contradicting red name statements about it.


    Perhaps this is just a formality, perhaps not: perhaps it points to the fact that there is a lot of informal documentation lying around regarding the streakbreaker proposal but no actual hard spec. But the table above has two peculiarities.

    First, it has ill-defined boundaries (what does the streakbreaker do if tohit is exactly 80%?). Second, it defines what happens when net tohit is 1-10%. Except net tohit can never be lower than 5%.

    As I said, it might be just minor errors, but one thing is sure: I couldn't code in an implementation for the streakbreaker if I was handed that table: I'd want clarification on those two points (what happens at boundaries? should I interpret the fact the table extends down below 5% to mean I should use *uncollared* tohit instead of capitated tohit in my code?).

    Some place somewhere exists the literal coded definition of the streak breaker (perhaps it only exists in the code itself). It may literally take going there to get the absolute final answer.


    The C standard library rand() function generates random numbers from 0 to some maximum value that is platform dependent. There are known problems with the randomness of the standard library rand() function: in particular, they tell anyone who cares (crypto, simul, assorted other geeks) that you should avoid the function if possible, or use the high order bits if necessary (the low order bits have known entropy problems).

    If you do something like this:

    x = rand() % 100; if x < 75 then hit else miss

    ...your random numbers will be borked. You're supposed to do this:

    x = rand() / RAND_MAX * 100; if x < 75 then hit else miss
  22. [ QUOTE ]
    There are no hard numbers on defense caps, we know that there are caps out there but we don't know what they are.

    Resistance caps are fairly easy to find, from memory 90% for Tankers, 85% for Kheldians, 75% for everyone else.

    [/ QUOTE ]

    I believe Statesman hinted at what the defense caps might be when resistance inspirations were introduced, and it was hinted that the value of the resistance insps was set in such a way so that the resistance cap could be reached with about the same number of resistance insps that it took for defense insps to hit the defense cap.

    Of course, the resistance cap is different for different things, and we know from direct statements that the defense cap scales upward with level (supposedly maximizing at levels comparable to where mez resistance maxes out), but the implication from the discussion on inspirations is that the defense cap (or caps because the tanker one was said to be higher than the scrapper one just like for resistances) is numerically about 5 times higher than the resistance cap.

    That would mean that in very, very rough numbers, the defense cap at high levels for scrappers is in the range of 350-400% defense or thereabouts. In other words, if that is basically true, for all practical purposes, there *isn't* really a defense cap, since that number is so high that in I6 you are unlikely to ever have that much defense stacked on top of you, ever.
  23. [ QUOTE ]
    *applause* Very well done.

    You may want to note Nicti damage, however, which is the type of the massive critical damage Kheldians take from Voids and Quantums. Because all Nicti damage comes in conjunction with at least Negative damage, it can be defended against with +Def(Negative) or, in the case of Void melee attacks, +Def(Smashing). Positional defenses work against it as well. However, it cannot be resisted at all no matter what +Res is offered -- even from the new +Res Inspirations. It's possible Nicti damage is considered Untyped, or that it's some additional effect applied directly to Kheldians upon being hit by such a weapon that ignores the normal damage system entirely.

    [/ QUOTE ]

    Resistances are somewhat out of the scope of this guide, but with regard to Quantum blasts from Voids and Quantum gunners, are you sure that the kheldian "quantum critical" is completely unresistable? It has always seemed to me that I take considerably less damage from quantum gunners when in the tank form than human form, although I've never actually checked the numbers carefully and its been a while since I've taken my kheldian for a spin.
  24. [ QUOTE ]
    I not sure why no one else has mentioned this but FF was changed to improve stacking. Deflection Shield protects against Smashing, Lethal, and Melee attacks; Insulation Shield protects against Energy, Neg. Energy, Cold, Fire, Ranged and AOE; Dispersion Bubble will now protect against everything.

    All Pool defense have also be changed to stack with Type and Postional defenses. They are now all defense to all.

    [/ QUOTE ]

    Actually, this version of the guide specifically mentions the changes to power pool defenses and force fields. I did just notice though that it has the *outdated* change to force fields, (dispersion now protects against all instead of just AoE, and insulation shield now protects against ranged/AoE).
  25. First major update earmarked for version 1.2: Castle posted a note suggesting that Resistance to Defense debuffs *sometimes* resists magnitude (ala damage resistance), and *sometimes* acts to reduce duration of the debuff (ala mez resistance), and that most of the time (he said "95%" of the time) the resistance acts to reduce magnitude. However, there still seems to be some confusion in this matter, and I suspect the final final word hasn't been spoken on it yet.

    See this post by Castle for the actual quote. The thread contains a discussion of this particular effect.