Live data from Hacker News

Wi Flag (2002)

asheron.fandom.com

121–130 of 217 posts

Re: Wi Flag (2002)

#121
post #90

Really didn't expect to see AC at the top of HN. Asheron's Call was the first game I worked on and I remember all the times we'd joke with Wi about it and watch monsters beeline for him. It seemed like one of those "Haha sure, player perception" problems and not something that was actually real. IIRC someone did a very cursory look at the code at one point but it never bubbled up as important enough to assign someone…

AC was my first MMORPG, fond memories indeed. I remember the sheer adrenaline I got when "going red" and watching PK drama and battles unfold at the subway, dominated by a build called the "OG mage," slidecasting all over the place casting drain health until finishing with a missile spell. I would cast Blooddrinker 6 on monster weapons and giddily laugh as they sliced through new players starting out. I remember stay…

Haha "Og mage" ... yeah. The combat of AC still holds up in its janky for being fun in the context of an MMO. I spent most of my playtime on Darktide and dear lord, it made me so sweaty.

It's amazing to me how many people are still friends with their patrons/vassals from 25 years ago.

Re: Wi Flag (2002)

#122
post #82

What am I missing here? Unless all the devs were really bad at maths (unlikely if they're game devs) then this seems like a really easy bug to find all things considered? I thought maybe it was going to be some weird DB glitch or something far upstream from the algorithm selecting which player to attack, but it was literally the logic of the very algorithm you would first look at if you were aware of such an issue. T…

I would speculate the main hurdle was probably believing the players in the first place. Humans are notoriously bad at not-noticing-patterns in properly random data. And statistical bugs like this require more effort and careful attention to detail to reproduce than deterministic bugs.

Another hurdle is likely that game developer culture strongly favors integration testing over unit testing. Games are optimized for fun, not correctness, and you can't unit test fun. This specific roulette selection function would have been straightforward to unit test, and a unit test would have caught the distortion. But now imagine people keep varying how important distance is to the calculation in order to make it "feel right". Updating those unit tests is suddenly a noticeable slowdown on how quickly you can iterate on game feel.

Re: Wi Flag (2002)

#123
post #82

What am I missing here? Unless all the devs were really bad at maths (unlikely if they're game devs) then this seems like a really easy bug to find all things considered? I thought maybe it was going to be some weird DB glitch or something far upstream from the algorithm selecting which player to attack, but it was literally the logic of the very algorithm you would first look at if you were aware of such an issue. T…

Yes I came to post exactly this, and found your comment, so will reply instead. The bug doesn't seem to be obscure. It is there in the right place. Someone thinking about checking "why some players are attacked more often?" would probably choose this as the first place to double check, since it is directly related to selecting the player for attack.

Maybe the most occult part of this is figuring out that the unique IDs assigned to the players play a role.

Re: Wi Flag (2002)

#124
post #90

Really didn't expect to see AC at the top of HN. Asheron's Call was the first game I worked on and I remember all the times we'd joke with Wi about it and watch monsters beeline for him. It seemed like one of those "Haha sure, player perception" problems and not something that was actually real. IIRC someone did a very cursory look at the code at one point but it never bubbled up as important enough to assign someone…

I loved Asheron's Call, played it a lot back in the day. My friends and I were in high school at the time so we had absolutely no idea what we were doing, but that didn't stop us from running around the world goofing off. My hobby was making characters with totally insane Run and Jump skills. Once you leveled up enough you could literally leap from one end of a town to the other like Superman, it was extremely funny. The character was awful in all other regards, but I didn't care. I made another character whose sole purpose was to climb to the top of the highest cliff or building I could find, and jump off it. And there were some HIGH places in AC. I miss being able to play MMO's innocently like that rather than trying to min-max every last bit of efficiency out of everything, as embodied by WoW (another game I loved, but for different reasons).

I also really enjoyed the periodic story events that had really dramatic impacts on the world, like the shadow invasion. It was a great game, especially for its time. So thanks for whatever part you played in its creation.

Re: Wi Flag (2002)

#125
post #88

I've seen a similar mistake in a rushed "feature flagging"/phased rollout system. User IDs were random UUIDs. Let's say we want to release a feature to ~33% of users; we take the first 2 characters of the UUID, giving us 256 possible buckets, then say that everyone in the first 1/3 of that range gets the feature. So, 00XXX...-55XXX... IDs get it, and 56-FF do not. This works fine. However, if we then release another…

> That first set now has both features, and 56-FF have none. It turns out you can't draw meaningful conclusions when some users get every new feature and some get none at all. 00—1A: have feature flags A and B 1B-55: have feature flag A only 56-FF: have no feature flag So the actual gotcha here is that there is no cohort for "feature flag B only", right? This setup can actually be desirable if feature B depends on fe…

> So the actual gotcha here is that there is no cohort for "feature flag B only", right?

And that, as you add more tests, user 00 will always get the test treatment for every test. If you're running a lot of tests which introduce experimental features or changes to workflows, user 00 is probably going to find the site a lot more chaotic and hard to understand than user FF, and that will skew your test results.

Re: Wi Flag (2002)

#126
post #90

Really didn't expect to see AC at the top of HN. Asheron's Call was the first game I worked on and I remember all the times we'd joke with Wi about it and watch monsters beeline for him. It seemed like one of those "Haha sure, player perception" problems and not something that was actually real. IIRC someone did a very cursory look at the code at one point but it never bubbled up as important enough to assign someone…

I loved Asheron's Call, played it a lot back in the day. My friends and I were in high school at the time so we had absolutely no idea what we were doing, but that didn't stop us from running around the world goofing off. My hobby was making characters with totally insane Run and Jump skills. Once you leveled up enough you could literally leap from one end of a town to the other like Superman, it was extremely funny.…

Thanks! Always nice to hear people who "grew up" play it. AC having server-side physics and actually making use of them led to lots of ridiculous and emergent gameplay. I don't know how many hours I just spend idling in towns jumping from rooftop to rooftop or seeing how high I could climb up massive structures. Everytime I try to play again though, the old "you can't go home again" hits too hard and I just quietly close it back up and go back to the nostalgia.

I was on the design team, so was directly responsible for a lot of the shadow invasion stuff (if you ever saw the big bad Bael'Zharon running around in the live events, that was me!) and other patches for the first 2 years of its lifespan.

Weirdly, I work on WoW now with my career having come full circle after having not worked on MMOs since the mid 2000s. :)

Re: Wi Flag (2002)

#127

tl;dr: players get attacked based on monster targeting RNG that's supposed to take an interval [0,num_players], assign players to subintervals that are shorter or longer based on a bunch of factors, and then roll a random number somewhere in that full interval. Whoever's subinterval the number ends in, they get targetted. Instead, the code assigned subintervals and then rolled a number between 0 and 1, instead of 0 a…

Was money lost here? Everyone in this thread who played AC is speaking pretty fondly of the bug.

Re: Wi Flag (2002)

#128
post #4

I've seen a similar mistake in a rushed "feature flagging"/phased rollout system. User IDs were random UUIDs. Let's say we want to release a feature to ~33% of users; we take the first 2 characters of the UUID, giving us 256 possible buckets, then say that everyone in the first 1/3 of that range gets the feature. So, 00XXX...-55XXX... IDs get it, and 56-FF do not. This works fine. However, if we then release another…

Huh, thanks for this. Will live in my head from now. Basically, in this situation, use (user_id, feature_name) for hashing, not just the user_id.

Is there a more general term for tuple hashing? IE, math and theory around composition of hashes composed of concatenated (or otherwise combined) typed values?

Re: Wi Flag (2002)

#129

Why does weighted randomness seem so difficult for games? Are there any libraries that simplify this? I couldn't find any for JS. So I created my own "algorithms" for things like randomly choosing which type of plants spawn in the world. It weighs them by the local frequency of each land-type. Eg if there's more swamp nearby, it's more likely to spawn cattails. It's awful. Not intuitive. Weights have to be passed in…

IIRC the other solution is to make a tree structure instead of a CDF. Can't remember if it's a good solution though.

Re: Wi Flag (2002)

#130
post #94

Earlier quoted context omitted.

You stopped playing because they listened to you and fixed the bug for everyone?

I sent a patch to a bigger and more known software company, now defunct. I ended up writing some rude comments in the bug submitting form, after being forced to enter endless data about me, the company that I worked for and a lot of information about how to reproduce the error. Not proud of it, but I understand the GP: you're helping them and they treat you poorly. They included the fix in the next version of the too…

It is quite maddening to have to provide personal information to report a bug. My city stopped allowing anonymous reports of broken traffic lights, so every time I report one (much rarer now that they’ve made it harder) I always give bogus information.
Post reply on HN