Notes on new team difficulty settings


Abigail Frost

 

Posted

Quote:
Originally Posted by UberGuy View Post
While the bug has existed, I suspect the behavior we saw it cause in I16 has not actually been widespread. There are many ways this can happen. Particularly if your uninitialized structure is created on the stack and not the heap (which a local variable would be), there may have been close to deterministic values in memory where the uninitialized variables were mapped.

While it's impossible to prove now, the investigation was driven by the sense of change, not the other way around.
I suspect that, since many of us noticed lower rates. The build may have simply led to the unknown value of the unititialized variable being different.

BTW, I appreciate the open posts from devs about some of the i16 bugs. It's a lot more satisfying to hear "uninitialized variable" than some mysterious obfuscation like you get at some places.


A game is not supposed to be some kind of... place where people enjoy themselves!

 

Posted

Quote:
Originally Posted by Siolfir View Post
I was thinking "locally" meant "in a function that's off on its own instead of where the most of the other structs were declared/initialized" as opposed to server vs client. I could be wrong, though.
"Locally" in this context typically means "pushed onto the stack". It can mean a section of heap memory devoted to the routine, but in general it means it disappears when it is no longer needed.

Recovered memory is then reused for something else, which is why reinitialization, or the lack thereof, can be a problem. You get whatever was stored the last time you entered the code, or even a totally different section of code altogether.


 

Posted

Quote:
Originally Posted by Stray Kitten View Post
I would think he meant a local scope variable.
That is correct


"We all lose in the end, that is the intention" --Emanuel Lasker

 

Posted

Quote:
Originally Posted by Canis_Lupus View Post
pohsyb,

When you say "locally" is this client-side or servers side?
This is most definitely in the server code.

A "local variable" is a variable declared inside a function, as opposed to global variables that can be accessed by all functions (assuming this is written in C/C++).

By default, local variables are not initialized to anything: they have whatever values were in the memory assigned to them before the function was called. Local variables are "on the stack."

That means that previous functions that were called set the value of the variable's memory to some value. If the sequence of function calls changed, or additional local variables were added to some of the functions previously called, then the value that the uninitialized variable has now could very well be different from what it used to have. It may have always had the same value in the past, due to some fortunate accident, and now it essentially has a random value.

I actually nailed the cause of this, but can't really claim credit because I listed several other possible causes as well:

Quote:
Originally Posted by Rodion View Post
There is something wrong, but I doubt it's as simple as "mission drop rates are wrong."

...

Under some circumstances it seems to be falling through all the cracks and giving no reward at all. This could be the result of some incredibly complex series of tests that fail, or as simple as an uninitialized variable.


 

Posted

The balance of the universe is once again intact!

Now to watch yummy prices drop (:

p.s Pohsyb, I wuv chu :')


Global: @NR
POHSYB: We've been in this meeting for six hours. Can I go back to my box?
BLUE STEEL: No.
Pohsyb sighs.

 

Posted

Quote:
Originally Posted by ChaosExMachina View Post
I suspect that, since many of us noticed lower rates. The build may have simply led to the unknown value of the unititialized variable being different.

BTW, I appreciate the open posts from devs about some of the i16 bugs. It's a lot more satisfying to hear "uninitialized variable" than some mysterious obfuscation like you get at some places.
Both very good points. I would suspect that this has been a problem for some players/characters since i9 first came out, with greater and lesser effects depending on what else was happening along the way. For whatever reason, the current version happened to cause the effect to be wider than it had been in the past.

As far as the cause of the behavior, I absolutely agree. I absolutely love that the Dev team here is comfortable enough in the overall product that they're willing to be this forthcoming, ranging from Synapse saying that they were looking at things still to him stating they'd found something but he wanted Pohsyb to explain it, all the way to the exact nature of the bug from Pohsyb. I may still have my concerns about the "perception issue" description, but it's quite obvious that even having said that, Synapse and crew kept digging in to things to be sure they were dealing with it properly.

Well done, Devs. Especially Synapse and Pohsyb.


 

Posted

Quote:
Originally Posted by pohsyb View Post
That is correct
That's what I figured, thanks much for clarifying it to be certain.


 

Posted

Quote:
Originally Posted by UberGuy View Post
One thing I have learned playing this game is that people are actually quite sensitive to even small changes in existing patterns when they actually experience the patterns frequently. I once had a long debate here with Arcanaville because I did not believe this to be true, but experience here has taught me otherwise.
Back in my heavy CounterStrike days, I could "feel" when badguys would be waiting for me around a blind corner. My friends called me crazy, my enemies called me a cheat.

As it turns out, my brain picked up on some very subtle clues. My cruddy video card would drop a few Frames Per Second when confronted with the opposing forces, and my Pavlovian response was always "DANGER!". I can't tell you how long it took to figure that out, but it definitely took help from some open-minded people. Upgrading that machine gave me mixed emotions...no more sixth sense.

You get the right information, move it in it's correct place, and even the strangest theories have some validity.


 

Posted

Quote:
Originally Posted by OPTICAL_ILLUSION View Post
Dear Synapse and Pohsyb,

Please check into PvP recipe drop rates as well. They seem awfully low and drop inconsistantly per character.

Just as an example, I have 2 toons with roughly the same kill count but...

Hero- 5 PvP recipes.
Villain- 1 PvP recipe.

Something is definately wrong or this is just additional proof that you hate Villains.


Thanks!
The odds are very small that your number of drops on each character compared to the next will be the same even if your kill counts are similar. We are talking random numbers here. If they were the same, I'd say there was something wrong with the code. Keep playing and you'll see the numbers get closer together.


Loose --> not tight.
Lose --> Did not win, misplace, cannot find, subtract.
One extra 'o' makes a big difference.

 

Posted

Quote:
Originally Posted by TopDoc View Post
Hopefully it'll be on test today, and pushed live this coming Tuesday along with fixes to the 4 broken TFs.
In my estimates there are 5 TFs/SFs that require fixes:
Hess
KHTF
MoBSF
STF
RSF


 

Posted

Quote:
Originally Posted by Chaos Creator View Post
Repeat after me:
pohsyb is the backwards byshop.
pohsyb is the backwards byshop.
pohsyb is the backwards byshop.
pohsyb is the backwards byshop.

Now you'll never mispell it again
Mis spell, not mi spell.
Mis spell, not mi spell.
Mis spell, not mi spell.

Now you'll never misspell it again.


"Everybody wants to change the world, but nobody wants to change themselves." -Tolstoy

 

Posted

Quote:
Originally Posted by NordBlast View Post
In my estimates there are 5 TFs/SFs that require fixes:
Hess
KHTF
MoBSF
STF
RSF
Regular BSF needs the MM power to work, its not just the Masters version



@Catwhoorg "Rule of Three - Finale" Arc# 1984
@Mr Falkland Islands"A Nation Goes Rogue" Arc# 2369 "Toasters and Pop Tarts" Arc#116617

 

Posted

so this drop rate issue is affecting everything in game? not just mission right? Because farming on the crim wall, not in a mission, it seems like drop rates are really low there too. To clarify is this a universal issue or one that just applies to missions?


 

Posted

Quote:
Originally Posted by pohsyb View Post
This was caused by an uninitialized variable, in this case specifically it was a structure declared locally when awarding a drop table.

About four function calls deeper, something was using a member of that structure to determine if you were fighting something grey (no drop). Uninitialized variables can be anything, but often have tendency to be zero, which would not cause a problem (actually any positive value would not matter).

This bug as been in since Issue 9 and was not caused by specifically by anything related to I16 (Whenever code is changed the tendencies of uninitialized variables can change). I suspect the changes made with I16 caused drop rates to be closely scrutinized.

So does that mean this bug could have (plausibly) been affecting some characters, (at least a rare few) for quite some time now?

Like, I always felt there were a couple of my (fairly numerous) alts - that almost never got anything but common recipes - and sometimes not even very many of those...

As far as the semi-recent "change" in the code that might have caused this - I'm gonna guess it was something related to adding in the chance for a Pool C/D Drop from Bosses.

I'm no code-monkey... But, that seems like a recent enough "add" to the drop code to be a plausible cause, that and the discussion thread about them where some people reported they've never gotten any of them "yet"...

Which at the time, would've seemed to have been long enough for people to have gotten at least as many of these as they did Purples or PvP recipes.
That and the repeated questions about "What is the Drop rate on these?" =(Pool C/D recipes from Boss kills) supposed to be - vs. - what people were perceiving it to be.

IDK, who all remembers the main thread on that, but it sounds pretty familiar to this one, no? *shrug*


Quote:
Originally Posted by Arcanaville View Post
City of Heroes didn't fail, City of Heroes was killed. If a 747 dropped on your house, you'd say you were killed, not you failed to find a safer dwelling.
"The U.S. is in no more danger of coming under Sharia law than it is the rules of Fight Club." - Will McAvoy.

 

Posted

Synapse, Pohsyb, and any other Paragon Studios team member who helped track this down,

THANK YOU! Thank you for tracking down what had to be (for me) a massively disappointing and frustrating bug. (Someone on one of our global channels actually called me crazy for THINKING there was a bug.)

And any other members of the community who discussed the possibilities (no matter how unlikely they might be) and helped test those possibilities, good jorb!


Arc# 92382 -- "The S.P.I.D.E.R. and the Tyrant" -- Ninjas! Robots! Praetorians! It's totally epic! Play it now!

Arc # 316340 -- "Husk" -- Azuria loses something, a young woman harbors a dark secret, and the fate of the world is in your hands.

 

Posted

Quote:
Originally Posted by Cardiff_Giant View Post
So does that mean this bug could have (plausibly) been affecting some characters, (at least a rare few) for quite some time now?

Like, I always felt there were a couple of my (fairly numerous) alts - that almost never got anything but common recipes - and sometimes not even very many of those...

As far as the semi-recent "change" in the code that might have caused this - I'm gonna guess it was something related to adding in the chance for a Pool C/D Drop from Bosses.

I'm no code-monkey... But, that seems like a recent enough "add" to the drop code to be a plausible cause, that and the discussion thread about them where some people reported they've never gotten any of them "yet"...

Which at the time, would've seemed to have been long enough for people to have gotten at least as many of these as they did Purples or PvP recipes.
That and the repeated questions about "What is the Drop rate on these?" =(Pool C/D recipes from Boss kills) supposed to be - vs. - what people were perceiving it to be.

IDK, who all remembers the main thread on that, but it sounds pretty familiar to this one, no? *shrug*
With uninitilized variable it can be ANYTHING, any change in code...


 

Posted

Quote:
Originally Posted by Chaos Creator View Post
Repeat after me:
pohsyb is the backwards byshop.
pohsyb is the backwards byshop.
pohsyb is the backwards byshop.
pohsyb is the backwards byshop.

Now you'll never mispell it again
Delicious irony is delicious. Your spelling and grammar enforcement badge has been revoked pending review of how and why it was issued in the first place


 

Posted

Hatechu.

stupid firefox spell checker.
names> stupid words like misspell


 

Posted

Quote:
Originally Posted by Cardiff_Giant View Post
As far as the semi-recent "change" in the code that might have caused this - I'm gonna guess it was something related to adding in the chance for a Pool C/D Drop from Bosses.
Why think that, when no one generally perceived a difference until this issue?


Blue
American Steele: 50 BS/Inv
Nightfall: 50 DDD
Sable Slayer: 50 DM/Rgn
Fortune's Shadow: 50 Dark/Psi
WinterStrike: 47 Ice/Dev
Quantum Well: 43 Inv/EM
Twilit Destiny: 43 MA/DA
Red
Shadowslip: 50 DDC
Final Rest: 50 MA/Rgn
Abyssal Frost: 50 Ice/Dark
Golden Ember: 50 SM/FA

 

Posted

Quote:
Originally Posted by NordBlast View Post
With uninitilized variable it can be ANYTHING, any change in code...
QFT. With uninitialized variables, completely unrelated changes to the code can trigger them. They're often tickled by changes to address space layout, the state of variables set in a completely unrelated function (re-used heap or stack space), different compiler optimizations, etc.

They're about as close to non-deterministic behavior as you can get in computer code. Notoriously difficult to debug and impossible to predict.


 

Posted

Quote:
Originally Posted by UberGuy View Post
Why think that, when no one generally perceived a difference until this issue?
Because the explanation doesn't really work for people that don't have experience with programming of any type (and don't understand the linked Wiki page). It's kind of hard to conjure up a suitable analogy or metaphor for it as well.

Bad Attempt at Doing So:
In a room of 100 people, you've been told to get a message from "Jaime". Unfortunately for you, you don't know who "Jaime" is, if they're male or female, or even if they're human. Additionally, you can't even verify if it's the right message.
So, it's not impossible that you'll find the right "Jaime" and that they'll have the "right" message but it's pretty damn unlikely.

In CoH's case, "Jaime's" message could have been replaced by any other subsystem currently making use of their place.


Blue: ~Knockback Squad on Guardian~
Red: ~Undoing of Virtue on [3 guesses]~

 

Posted

Quote:
Originally Posted by LostHalo View Post
Because the explanation doesn't really work for people that don't have experience with programming of any type (and don't understand the linked Wiki page). It's kind of hard to conjure up a suitable analogy or metaphor for it as well.

Bad Attempt at Doing So:
In a room of 100 people, you've been told to get a message from "Jaime". Unfortunately for you, you don't know who "Jaime" is, if they're male or female, or even if they're human. Additionally, you can't even verify if it's the right message.
So, it's not impossible that you'll find the right "Jaime" and that they'll have the "right" message but it's pretty damn unlikely.

In CoH's case, "Jaime's" message could have been replaced by any other subsystem currently making use of their place.
Maybe a toolbox analogy would be better?

You have a set number of toolboxes, we'll use 100 again, that various people use to store stuff throughout the day. When someone is through with that box, they free it up for someone else to claim, then remove their tools when someone needs to put their stuff in it. This is sort of like, someone claiming it, but the other person's stuff not getting removed, so you don't know if what's in there will be usable or not. For a long time, the other person using that box used the same general tools as you, so it wasn't a big deal, but recently something changed and a new person started using the same box, but they used a mostly different set of tools.


 

Posted

Quote:
Originally Posted by UberGuy View Post
Why think that, when no one generally perceived a difference until this issue?
Well, it was mostly just speculation on my part.
I don't claim to really, fully understand the drop code.
But after reading the post by Pohsyb regarding the bug...
Quote:
Originally Posted by pohsyb View Post
This was caused by an uninitialized variable, in this case specifically it was a structure declared locally when awarding a drop table.

About four function calls deeper, something was using a member of that structure to determine if you were fighting something grey (no drop). Uninitialized variables can be anything, but often have tendency to be zero, which would not cause a problem (actually any positive value would not matter).

This bug as been in since Issue 9 and was not caused by specifically by anything related to I16 (Whenever code is changed the tendencies of uninitialized variables can change). I suspect the changes made with I16 caused drop rates to be closely scrutinized.

Well, from what I gathered, it seemed (IMHO) to be a "likely suspect" - so to speak, why?
Because:
1. Its a semi-recent change to "drops" - specifically recipe drops.
I was thinking this could be the change to the code, that might have seemingly put - said errant "uninitialized variable" into the "structure" of the "drop table"

2. The unknown but apparently very low rate % chance for these to drop, might have responsible for putting a "zero" (or whatever) in a place that was previously unused - or "not called on"?

3. Again, I'm kinda straining a bit to get my head around the general coding & bug mentioned - trying to put it into something resembling a meaningful context - that I might then actually understand.
4. Example - maybe the bug is "set off" by killing a grey boss mob & and getting a successful "percentage roll" that would award a recipe from the Pool C/D table - IF the boss wasn't grey...
I have no clue which of these it checks for first, or how that works at all really. I was just guessing based on my (admittedly limited) understanding of the whole mess.

5. In this old thread linked below - there is a good deal of perceived wonky-ness in how these drops are supposed to work, comparing the people's various experiences getting them (or not), as it were.
Pool C Boss Drops
http://boards.cityofheroes.com/showthread.php?t=131724

This disparity between people's perceptions of recipe drops - was one of the first things to spring to mind when reading the current thread today.

Does this make a little better sense now? And TBH even if it doesn't - I don't know how else to explain what I was thinking.


Quote:
Originally Posted by Arcanaville View Post
City of Heroes didn't fail, City of Heroes was killed. If a 747 dropped on your house, you'd say you were killed, not you failed to find a safer dwelling.
"The U.S. is in no more danger of coming under Sharia law than it is the rules of Fight Club." - Will McAvoy.

 

Posted

Over time there have been one-zies and two-zies that have posted in response to the "purple topic de jour"... that they've never received a purple drop...despite running nothing but there 50s through ITFs or STF/LRSFs or newspapers.

I'd always dismissed their cries as noise or hyperbole, but maybe they were legitimate concerns afterall.

From what I understand (in light of the data posted herein), random being random and all...some people have been severely affected while some have barely been affected.


Repeat Offenders

 

Posted

Heartfelt thanks for fixing the problem devs.

And for the lesson in programming.