Main Menu

New efforts!

Started by Ironwolf, March 06, 2014, 03:01:32 PM

Arcana

Quote from: LateNight on April 14, 2016, 03:27:51 PM
Actually there's two parts to this, one is hover and why it was useful in regards to knockback - I'm aware of it happening but unsure exactly why.

That leads us to the second part, Arcana and Codewalker have alluded to it, and I'm asking for a definitive answer as to what it is and if it has any relation to the hover "bug".

Also, was the issue itself a bug, or was it a previously unknown mez effect?

But thanks for playing.

Let's take a step back and talk about mez.  Mez effects are intrinsically designed to impede the player, but the precise way they do that is important for this discussion.  Holds, for example, don't just "make you unable to act."  They very specifically do two things: they cause the game engine to ignore your movement commands (i.e. wasd commands to move foward, left, right, etc) and they also cause the game to ignore your commands to activate powers.  These two are separate incapacities, at least in broad strokes, because different mez effects affect these in different ways.  If we colloquially say that a mez effect can block you from moving or block you from activating powers (not precisely true, but close enough here) then holds do both, immobilizes only block you from moving, stuns do the reverse blocking you from activating powers but letting you move (but forcing you into the stagger) etc. 

Mez effects are generally associated with what are called "booleans" because unlike, say, your health or your endurance, these values are intended to be true/false indicators.  Generally, less than zero means "no" and greater than or equal to zero means "yes."  Your intrinsic hold attribute is -1.  If someone stacks mag 1 hold on you, that value increases to -1 + 1 = 0, and you are held.  If you have mag 10 protection that is just a -10 buff to the hold boolean: it becomes -11.  You now need mag 11 hold stacked on you to get held.  The game has special code to "mez" you when your booleans are true: you're held if your hold boolean is true, you're slept if your sleep boolean is true. That's how the mez system basically works.

Knockback is a weird bird.  Codewalker probably knows more about the precise way KB was implemented in the client and server, but for discussion purposes this is probably good enough.  KB uses some of the same "machinery" as mez: there's a state variable just like mez booleans, and protection buffs subtract from that, and KB attacks add to that.  But the value isn't handled precisely like a boolean true/false.  Instead, there's two possible things that can happen when your KB value rises above (or equal to) zero.  From zero to 0.75, you experience knockdown.  Above 0.75 you experience knockback.  Knockdown is a close relative to Knockback, but it is different in whether KB magnitude dictates a throw distance.  In knockdown, you just fall down.  In knockback, you are thrown a certain distance and then fall down.

More importantly, KB is not a mez.  Mezzes, as defined above, directly impair the ability for the player to either move or activate a power.  KB doesn't do that.  Instead KB does two things.  First, if there exists a valid one for the current state of the player, a KB animation is played.  Second, the physics engine is told about the KB so it can do its thing regarding tossing the target a certain distance in accordance with the KB magnitude.  There are other complexities here like the ragdoll code which I'm going to gloss over here.  Point is, KB only does two things: physics, and animation.  It does not tell the powers system to impair the target, so it is not a mez.

So why is it that you can't attack when you are being knocked, at least until you get back up?  That's actually the animation system rooting you.  When the animation system is playing an animation, those animations are flagged with different tags.  One of them specifies whether the animation is interruptible.  For example, if you are in the middle of a running animation and decide to shoot a power bolt, the game checks to see if that animation can be interrupted.  It can, when you fire that power bolt it stops playing the run and starts playing the power bolt casting animation.  In the early days of the game players would often complain that when they activated a power there was no visible animation.  The power activated, but they didn't see anything.  Most of that had to do with a combination of timing errors and uninterruptible animations.  If the animation you were playing wasn't interruptible, it would skip playing anything else.

The important flag here is the ROOTED flag.  The rooted flag tells the animation system that when you are playing this animation the game should ignore player control commands.  ROOTED is why when you activate an attack you can't move at the same time.  It isn't the powers system that enforces that, it is actually the game client that does that, because of the ROOTED flag.  All power activation animations are flagged as ROOTED, so you can't move while shooting.  You also can't activate powers when other powers are playing their initial animations, but there's an overlap there: during the cast time of a power, you can't activate another power.  So there are actually two different things preventing you from doing anything while you're attacking: the powers system won't let you activate a power during the cast time of another power, and the client won't let you do anything at all while you are ROOTED.

KB animations are flagged ROOTED.  That's what makes it impossible for you to attack while being knocked.  In effect, you're stuck as if you were activating a power.  Until the ROOTED part of the KB animation finishes playing, you can't act.  But it is the animation system that must do this correctly.

Hover has a designated KB animation: you do a backflip.  However it was accidentally not flagged as ROOTED.  So when you are hovering if you are hit with a KB power and you experience KB, there's nothing to stop you from attacking.  KB itself is not a mez: it doesn't impede you from attacking.  The thing that is intended to do so, in the animation system, isn't flagged to do that.  So while you can be thrown by KB - but Hover's inertia reduces KB throw distance to very small values - and you can *look* like you're being knocked because you are thrown into a visible backflip - none of that prevents you from attacking or activating any other powers.  And that's why Hovering granted effective KB immunity.  It wasn't exactly the power that was doing that, it was the fact that KB knockdown animations were different when hovering, and one of them was bugged.

This was not intentional.  While it was not flagged rooted the animation was flagged uninterruptible, which meant if you activated a power - like say power bolt - while in mid-backflip you would continue to see yourself flip but a power bolt would fly out of your tumble without a power bolt cast animation - because the game can't play that animation because it is currently playing an uninterruptible animation.  It is the fact that the animation is flagged uninterruptible that proves the unrooting was not intentional.  If someone intended you to be able to break the KB, they would have made the animation interruptible so if you attacked you saw your attack animation.

As I mentioned, this is really the tip of the iceberg for a fundamental problem with City of Heroes powers design, and that is that what a power looks like has a major impact on how it functions, moreso than in most other MMOs, but CoH designers weren't taught to consider that carefully.  In fact, they were told the opposite: that while there were informal rules that should be followed for what a power looked like, that wasn't critical to how powers performed.  In fact in both mechanical and mathematical ways the animations of a power and those related to a power could dramatically affect how powers worked and how useful they were.  I had been trying to sell the devs on the notion that DPA - the damage a power did per activation-second of its rooted animation time - was the critical determiner of the strength of that attack, and its damage scale or even its DPS over its firing cycle were comparatively worthless.  But it wasn't until the first Claws revamp that I was able to gain traction with that idea.

From there I discovered that amazingly the rooted animation times for many powers was *longer* than their cast times.  In other words, to oversimplify a bit, Castle could make a power have DPA of 1.0, but then BaB could change it to have an effective DPA of 0.85 if he made the animation just a little bit longer than the cast time.  A lot of attacks were in effect weaker than designed, going all the way back to release.  And then I discovered that because of the MALE/FEM/HUGE animation separation, sometimes males and females could have different effective DPA for the same attack.  In other words, if you played a female alt she could be doing less damage than a male alt with an identical build.  And it was almost always the case that the female animations were slightly longer (to make them more "girly", it seems).  Female alts had an invisible damage penalty.

In a lot of ways the CoH engine is a complex monster that distributes the way the game works across lots of systems in non-intuitive ways. And it is not like the devs were unaware of how these individual bits worked. But until I came along I don't think the devs tended to think as holistically as they should have.  When they started thinking that how a power looks is critical to its utility to players (particularly attacks) a lot of changes started happening in how new powersets were designed and how older ones were revamped.  It is not a complicated idea, but it took some time to take hold.  I don't know how much of that I'm responsible for and how much was just the devs themselves learning how their own systems worked over time, but I'm pretty sure my contribution was non-zero.

I'm not even covering the complexity that is the animation system, which makes this even more wacky.  In brief, powers don't tell the game engine to "play the KB animation" directly.  Instead, they send a set of bits to the animation system, and (to simplify a bit) the animation system looks for the animation that has the best match to those bits, and plays that.  When it works, it works, but it is very easy to accidentally create an animation intended for one thing that also happens to be a good match for another situation, and then you discover that when a player activates Elude while dropping (like say in the middle of a superleap jump) instead of backflipping they do the whirlwind animation.  That was a real bug.  Given how important animations are to whether the player is rooted, whether KB has the effect intended, how strong attacks are, it might seem amazing that predicting exactly what animation will play when the player does X while in situation Y is non-trivial.  But the animators at Paragon didn't just need to be able to make pretty animations.  They also had to keep this entire system straight in their heads, because otherwise if they were not careful they could easily create a giant mess of animation weirdness.

Codewalker

Quote from: Codewalker on April 13, 2016, 11:38:27 PM
Maybe this will suffice... The p---- -u--- would not be --o-e---d if the -n--t- had the -A---O-- s-----c-- --t -e-.

The power queue would not be processed if the entity had the CANTMOVE sequencer bit set.

CANTMOVE is of course the name of the sequencer flag that prohibits movement. It used to be a sticky state bit and was eventually promoted to a binary flag, probably because it's used so much -- the bit was left around for compatibility though.

Most importantly, the power queue - the mechanism though which all powers pass as they are activated, does nothing while CANTMOVE is set on the player. That's the source of Arcana's overlap. During the activation of a power, the currently executing power itself is in the active queue slot, so no other power can be moved into that slot. Once the activation time (cast time from the power definition) is elapsed, the active slot empties out. However, if CANTMOVE is set from the animation system, the engine will not move the next power from the queue slot into the active slot.

As she implied, it actually gets a lot hairier than that when you start to look beyond simply forgetting to set CANTMOVE and at some of the edge cases that still existed as of even Issue 24. I could sometimes bypass rooting by moving diagonally while hovering, but it was not 100% reliable. Some combinations of jumping could do that as well. Most likely those were cases of certain sequencer segments not being able to be preempted by a power animation, probably either incorrect priority or interrupt group membership.

The biggest headache of working with sequencers isn't the system itself, which is fairly straightforward. Implementing a mostly complete sequencer can be done in a couple hundred lines of code. Rather it's the haphazard way that animations were added to the data over the years, sometimes with no apparent rhyme or reason. As more states and interrupt groups were added, the interactions between them become exponentially more complex. At some point it must have been clear that it was impossible to fix without taking everything back to the drawing board, so they had to just add on even more layers of dark magic to work around the problems. That's where the pagans got involved.

LateNights

I remember a post you made about DPA not long before shut down (at least that's when I read the post, not sure when it was made), so it's kind of funny to have almost come full circle...

I think I might have been aware of it somewhat - I used combat jumping on every toon, and would often try to use cj to cheat an animation to gain a small movement advantage, in doing so I became aware of the root effect, and often it felt as though the root was slightly longer than the animation as I was unable to jump for that small moment afterwards - at the time I mostly put that down to me gaining confidence in my abilities and becoming impatient as a result - so if it's true that's kinda neat too.

So was "rooted" the answer you and Codewalker were looking for when you were giving hints to something a few posts back?

Edit: seems Codewalker has just confirmed as much while I was typing :D

Still, I wonder about the cj "issue" I had?

Arcana

Quote from: Codewalker on April 14, 2016, 08:04:57 PMI could sometimes bypass rooting by moving diagonally while hovering, but it was not 100% reliable. Some combinations of jumping could do that as well. Most likely those were cases of certain sequencer segments not being able to be preempted by a power animation, probably either incorrect priority or interrupt group membership.

I made this video (with unfortunately crappy resolution) to demonstrate 100% reliable unrooting of shadow maul under certain conditions.  The location of the video is not random: one thing I noticed was that uneven terrain tended to create situations where unrooting could be done more reliably.  To the best of my knowledge, whatever was causing this particular version of unrooting was never fixed in the game: I could do this right up until shutdown.

Arcana

Quote from: LateNight on April 14, 2016, 08:06:30 PMSo was "rooted" the answer you and Codewalker were looking for when you were giving hints to something a few posts back?

Specifically, that KB doesn't directly prevent players from acting, it is an animation effect (or more precisely a feature implemented in the animation sequence data) that is the true cause of KB causing players to be unable to act.  That's what makes KB particularly weird - and not a real mez.

So why did Poison Trap have way more damage mitigation than originally intended?  Because for giggles the devs implemented a feature of PT where the affected critters look like they are gagging on the poison and sometimes vomiting.  Guess what?  Those were uninterruptible animations that rooted the NPCs.  You have to do that because NPCs are always trying to move around or do stuff, so if you allowed them to interrupt that animation and do something else you'd never see those animations.  But in doing that, they in effect were preventing the NPCs from attacking.  "Vomit" is a pseudo-mez: while doing that you can't do anything else, which means it is functioning almost like a (non-detoggling) hold.  And that animation is not a short one.

So while the trap had only a tiny 2% chance to hold the targets per second, it had a far higher chance of causing them to vomit on the ground which prevented them from attacking.  I can imagine the animation team saying "wouldn't it be cool if" and the powers team saying "yeah that sounds consistent with the power so go for it" and slipping through the cracks was the fact that the animation team just essentially turned a 2% hold into a 50% stun.

LadyVamp

Tubbius?  What's the verdict?  You got the job?
No Surrender!

JoshexProxy

Quote from: Arcana on April 14, 2016, 08:56:30 PM
Specifically, that KB doesn't directly prevent players from acting, it is an animation effect (or more precisely a feature implemented in the animation sequence data) that is the true cause of KB causing players to be unable to act.  That's what makes KB particularly weird - and not a real mez.

So why did Poison Trap have way more damage mitigation than originally intended?  Because for giggles the devs implemented a feature of PT where the affected critters look like they are gagging on the poison and sometimes vomiting.  Guess what?  Those were uninterruptible animations that rooted the NPCs.  You have to do that because NPCs are always trying to move around or do stuff, so if you allowed them to interrupt that animation and do something else you'd never see those animations.  But in doing that, they in effect were preventing the NPCs from attacking.  "Vomit" is a pseudo-mez: while doing that you can't do anything else, which means it is functioning almost like a (non-detoggling) hold.  And that animation is not a short one.

So while the trap had only a tiny 2% chance to hold the targets per second, it had a far higher chance of causing them to vomit on the ground which prevented them from attacking.  I can imagine the animation team saying "wouldn't it be cool if" and the powers team saying "yeah that sounds consistent with the power so go for it" and slipping through the cracks was the fact that the animation team just essentially turned a 2% hold into a 50% stun.

that's what I was trying to say, when I said "in effect it's a hold"; a pseudo-hold. This seems now like it's a limitation of the engine, like the character rig can't do more than one animation at a time because all animations effect all bones on loc, rot and scale even if they don't, I can imagine using a timer from the 2% hold then after that wears off though they are still on the floor vomiting raise an arm to do something. of course that would mean splitting the animation into several parts and prioritizing when each needs to be superior to the other to remove activation conflicts. of course that would mean making a whole slew of animations, some of which it'd take the animator to figure out how it should look, like 'kick while vomiting' or 'hay-maker while vomiting'.

Arcana

Quote from: JoshexProxy on April 15, 2016, 12:35:08 AM
that's what I was trying to say, when I said "in effect it's a hold"; a pseudo-hold.

The problem was that I had no problem with describing the effect as a kind of hold per se, but rather that you ascribed it first to the KB and then second to the physics engine when the key idea relevant to why Hover apparently provided protection against KB was that the KB itself had no pseudo-mezzing effect: that effect was due to the resultant animations, and that was something Hover didn't do correctly.

When talking about KB colloquially, calling KB itself a pseudo mez is reasonable.  But if the question was "do you actually understand how KB actually worked, and could you explain how Hover could offer protection against KB when it has no inherent KB protection" then kinda close is just wrong.  And it is hard to extend benefit of doubt that it was a colloquial slip when you corrected that with another error - that the KB effect that prevented actions was a physics engine effect.  That didn't happen until the broken gravity problem caused rag doll to go completely batty, and only really for NPCs.

Given the multiple errors in your description, I became compelled to state for the record that holds don't do only what the cantmove rooting does for KB knockdown animations.

Tubbius

Quote from: LadyVamp on April 15, 2016, 12:19:01 AM
Tubbius?  What's the verdict?  You got the job?

No word yet.  :(  They said I would likely hear back by the end of the week or the start of next week.

JoshexProxy

Quote from: Arcana on April 15, 2016, 02:55:04 AM
The problem was that I had no problem with describing the effect as a kind of hold per se, but rather that you ascribed it first to the KB and then second to the physics engine when the key idea relevant to why Hover apparently provided protection against KB was that the KB itself had no pseudo-mezzing effect: that effect was due to the resultant animations, and that was something Hover didn't do correctly.

When talking about KB colloquially, calling KB itself a pseudo mez is reasonable.  But if the question was "do you actually understand how KB actually worked, and could you explain how Hover could offer protection against KB when it has no inherent KB protection" then kinda close is just wrong.  And it is hard to extend benefit of doubt that it was a colloquial slip when you corrected that with another error - that the KB effect that prevented actions was a physics engine effect.  That didn't happen until the broken gravity problem caused rag doll to go completely batty, and only really for NPCs.

Given the multiple errors in your description, I became compelled to state for the record that holds don't do only what the cantmove rooting does for KB knockdown animations.

fair enough, that works.

Vee

Quote from: Tubbius on April 15, 2016, 04:41:06 AM
No word yet.  :(  They said I would likely hear back by the end of the week or the start of next week.

If it doesn't work out there's good money to be made selling 'vomit is a pseudo-mez' t-shirts, assuming Arcana didn't trademark it yet.

Arcana

Quote from: Tubbius on April 15, 2016, 04:41:06 AM
No word yet.  :(  They said I would likely hear back by the end of the week or the start of next week.

Are you trying to get hired by a Korean university?  I hear those Koreans have weird superstitions about hiring educational professionals within a month of the spring equinox.  Or are you just saying this because you're covered by NDA and can't tell us the university actually closed back in 2014?

LateNights

#23792
Quote from: Vee on April 15, 2016, 06:54:46 AM
If it doesn't work out there's good money to be made selling 'vomit is a pseudo-mez' t-shirts, assuming Arcana didn't trademark it yet.

Yeah, she's like Batman.

She has lots of "trademarks" going at the same time...

Quote from: JoshexProxy on April 15, 2016, 06:01:56 AM
fair enough, that works.

From what I've learnt in my short time speaking with Arcana (which at times I adore), don't speak directly to her but instead approach the subject as if everyone on planet Earth may actually benefit from what she has to say (In this thread at least), because you'll get an answer much closer to what you wanted rather than an education in what you may have already known plus what you "meant" to ask...

To be fair, sometimes it's warranted that a baseline is found - most universities begin teaching people effective communication as a baseline no matter what you study (it's considered civilised) - but I empathise with you in that sometimes it's frustrating to hold a more formal conversation than you may have wanted.

Some perspective - my Grandfather is a war veteran (Vietnam), and has his doctorate in Psychology - my Grandmother was a hairdresser.

They don't have problems communicating...

Quote from: Tubbius on April 15, 2016, 04:41:06 AM
No word yet.  :(  They said I would likely hear back by the end of the week or the start of next week.

Best of luck good Sir!!

ukaserex

QuoteFemale alts had an invisible damage penalty.

What? That's...just ... I mean... wow. I'm going to assume the math played out that it was negligible- too minor to notice.

But, still, wow.
Those who have no idea what they are doing genuinely have no idea that they don't know what they're doing. - John Cleese

LateNights

Quote from: ukaserex on April 15, 2016, 02:42:40 PM
What? That's...just ... I mean... wow. I'm going to assume the math played out that it was negligible- too minor to notice.

But, still, wow.

Honestly, part of me agrees that it's somewhat true - at least physically - but that alone is never the only measure of a hero is it?

But...if it was intentional it's at the very least cheeky...

Still, did you say Huge also had an advantage?

Tubbius

Quote from: Arcana on April 15, 2016, 08:47:06 AM
Are you trying to get hired by a Korean university?  I hear those Koreans have weird superstitions about hiring educational professionals within a month of the spring equinox.  Or are you just saying this because you're covered by NDA and can't tell us the university actually closed back in 2014?

Funny, Arcana.  Thank you for the morning smile.  :)

Codewalker

Quote from: LateNight on April 15, 2016, 03:41:13 PM
But...if it was intentional it's at the very least cheeky...

I very much doubt affecting damage output was intentional. We're talking back in the days that the power designers had absolutely no idea of the effect of cast times on damage output. That's why the damage formula that all powers were balanced around only uses recharge and not activation time.

An attack used by a female character would deal the same amount of damage, and recharge in the same amount of time as an attack used by a male character. From a naive designer's point of view, those are equal. The issue is that since the animations are slightly longer, you can't chain as many attacks together in the same amount of time, so your overall DPS output for the character is lower.

That seems obvious now, and it was obvious to me when I started playing, so I took it for granted that it would be obvious to everyone else as well. However, I had come from other games that have things like stats that reduce cast time - and players had long theorycrafted exactly how valuable (very) being able to do that is. It's hard to imagine but I could see an inexperienced design team making the mistake.

Reaper

Quote from: Arcana on April 15, 2016, 08:47:06 AM
Are you trying to get hired by a Korean university?  I hear those Koreans have weird superstitions about hiring educational professionals within a month of the spring equinox.  Or are you just saying this because you're covered by NDA and can't tell us the university actually closed back in 2014?

This is hilarious!

Tubbius may not be able to tell us anything but the security guard in front of the university is my friend contact and he can get all sorts of information covered by the NDA.  The university is set to be unclosed this summer.  :roll:
Patiently lurking from the shadows...

Codewalker

Quote from: Reaper on April 15, 2016, 05:33:19 PM
The university is set to be unclosed this summer.  :roll:

I disagree.

We have no proof that Tubbius even applied for the job. He could just be posting here to troll us all.

Alternatively, since the university didn't call back yet, I think we can all agree that they're not really interested in hiring someone. They just have to post an opening and conduct a few interviews so they can qualify for a tax break.

This is fun. I could do this all day.

LadyVamp

Quote from: Tubbius on April 15, 2016, 04:41:06 AM
No word yet.  :(  They said I would likely hear back by the end of the week or the start of next week.

Actually, that is good news.  Means you're still in the running.  If they weren't interested they'd tell you quickly to go pound sand.
No Surrender!