Notes on new team difficulty settings
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.
|
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.
I would think he meant a local scope variable.
|
"We all lose in the end, that is the intention" --Emanuel Lasker
pohsyb,
When you say "locally" is this client-side or servers side? |
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:
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. |
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.
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. |
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.
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.
|
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.
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! |
Loose --> not tight.
Lose --> Did not win, misplace, cannot find, subtract.
One extra 'o' makes a big difference.
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.
Now you'll never misspell it again.
"Everybody wants to change the world, but nobody wants to change themselves." -Tolstoy
@Catwhoorg "Rule of Three - Finale" Arc# 1984
@Mr Falkland Islands"A Nation Goes Rogue" Arc# 2369 "Toasters and Pop Tarts" Arc#116617
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?
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*
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.
|
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.
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* |
Hatechu.
stupid firefox spell checker.
names> stupid words like misspell
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
With uninitilized variable it can be ANYTHING, any change in code...
|
They're about as close to non-deterministic behavior as you can get in computer code. Notoriously difficult to debug and impossible to predict.
Why think that, when no one generally perceived a difference until this issue?
|
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]~
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. |
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.
Why think that, when no one generally perceived a difference until this issue?
|
I don't claim to really, fully understand the drop code.
But after reading the post by Pohsyb regarding the bug...
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.
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.
|
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
Heartfelt thanks for fixing the problem devs.
And for the lesson in programming.
While it's impossible to prove now, the investigation was driven by the sense of change, not the other way around.
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!