Vanish – The History

Vanish. Supposedly our best and most coveted ability, and yet….it rarely works as the Rogue community believes it should. Does this mean working as intended?

 

Today from the Rogue forums, a history of Vanish and the trials and tribulations of WoW Rogues using this ability. Post crafted by Janissary of <Clan Relicforge> Argent Dawn server. A level 70 Dwarf Female Rogue which is a rogue type as rare as working vanish. 😉

 

Post can be found here, but is copied in full and original form for preservation below:

 

http://forums.worldofwarcraft.com/thread.html?topicId=12354236856&sid=1

 

A Scientific Theory of Vanish:

The History, The Bug, The Mechanics, and the Fix

Table of Contents
Intro
Disclaimers
Timeline
The Fallacy of Blaming Vanish’s Unreliability on Latency
How Does Vanish Actually Work?
So Then What Really Happened in Patch 1.10?
So Can it be Fixed?

Intro
So, I know rogues have been whining about vanish for quite a while. I don’t think anyone knows how it works, how it’s “supposed” to work, or even how it used to work. To some extent, it’s all still fairly speculative. However, this post is an attempt to provide a compendium of all known and suspected information we have on Vanish.

Disclaimers

  I’m going to try to avoid the “players vs blizzard mentality.

  I am not a programmer.

  A lot of what I say in this post is speculative and not proven.

  A rogue has been my main since fall 2005. Prior to this i played a priest. This means that my rogues post-date the OLD vanish bug, but as I understand it, it was basically the same as the current one.

Timeline
So before we start talking about vanish, here’s a timeline. Vanish basically has three distinct periods. It started out bugged, then got fixed, and the broken again. To clarify this, I’ve assembled a timeline of relevant patch notes.

November 2004
Vanish Status: Bugged
WoW launches. Rogues vanish ability often fails to stealth the rogue, especially when in melee. Rogues call it simply “Vanish Bug”. It is the subject of much rogue QQ. I’ll be referring to this as the “Old Vanish Bug”.

December 18, 2004 Patch 1.2
Vanish Status: Bugged
Root and snare break added to vanish.
http://www.worldofwarcraft.com/patchnotes/patch-12-18-04.html


Q u o t e:
Vanish will now break root and slow effects.


May 5, 2005 Patch 1.4
Vanish Status: Bugged
The patch where the PvP honor system debuts. In this patch, the strength of the “improved stealth” buff vanish granted was increased.
http://www.worldofwarcraft.com/patchnotes/patch-05-04-19.html


Q u o t e:
Vanish – Increased stealth bonus.


June 7, 2005 Patch 1.5
Vanish Status: Fixed
The first two battlegrounds, WSG and AV, go live. The Old Vanish Bug is fixed. Starting with this patch, complaints about vanish virtually, well, vanish. It was with the battlegrounds that i got sick of playing my priest and decided to make my rogue alt my main. During this time, I never, ever, ever had any trouble with Vanish. If it failed, it was always because i was DOTted, or got demo shouted, but never did it just “not work”.
http://www.worldofwarcraft.com/patchnotes/patch-05-06-07.html


Q u o t e:
Vanish – Should be a lot more responsive when used to avoid incoming attacks.


October 10, 2005 Patch 1.8
This was the green dragons patch. A bug relating to ice armor is fixed-vanish now removes the slow debuff it causes.
http://www.worldofwarcraft.com/patchnotes/patch1p8.html


Q u o t e:
Vanish – Fixed a bug where the Chilled effect caused by Ice Armor/Frost Armor was not removed properly when vanishing.


March 28, 2006: Patch 1.1
This is was the patch that put in weather effects, tier .5 armor, chainable flight paths, and the so called “Shadowmeld nerf”.

This was also the patch that “broke” vanish again. That is to say, starting with this patch, Rogues noticed that vanish frequently failed to put them in stealth, particularly when they were in close quarters combat with another melee class. “Auto attacked out of stealth” became a common phrase on the rogue forums.
http://www.worldofwarcraft.com/patchnotes/patch1p10.html

Here is everything stealth and vanish related from the patch notes:


Q u o t e:

  Stealth and Invisibility effects will now be canceled at the beginning of an action (spellcast, ability use etc…), rather than at the completion of the action.

  Applying Rogue poisons will no longer break Stealth.

  Channelled spells are cancelled when a rogue vanishes.

  Fixed a bug which prevented Vanish from working properly under certain
conditions.


So it is from this patch, in March 2006, where you start to see rogues complaining about vanish again. You get videos like this one
http://www.youtube.com/watch?v=1jN-tY_eHCg from june 2006, in which rogues are getting pulled out of vanish by level 1 players auto attacking them. There are others as recent as a few weeks old on youtube.

Also from that point on, you don’t see much about vanish failurs in patch notes anymore. Here are the subsequent mentions of vanish in patch notes since march 2006.


Q u o t e:

  1.11 – Vanish: Canceling your Stealth aura while Vanish is running will now cause Vanish to be canceled as well.

  1.12 – Vanish now removes effects that allow the caster to always remain aware of their target (currently Hunter’s Mark and Mind Vision).

  1.12 – Reduced the number of messages in the combat log when using the Vanish ability.

  1.12 – Fixed a bug that made Combo Points disappear from your target when using Vanish.

  1.12 – Neutral guards are now able to see through the rogue Vanish ability.

  2.06 – Resisted spells will no longer break “Stealth”/”Vanish”.

  2.06 – “Vanish” will now properly un-target the Rogue from the attacker when the attacker is in the same party.

  2.2 – Pets will no longer chase players that Vanish.

  2.43 – Vanish now correctly wipes threat on Kil’jaeden.

  2.43 – Abilities that can be used while stealthed, without breaking stealth, can now be cast without breaking Vanish when used at the same time.

  2.43 – Vanish: This ability will no longer sometimes cause the UI to display Shadowmeld as active when it has been cancelled.

  3.0 – Evasion, Sprint and Vanish cooldowns reduced to 3 min.

  3.0 – Vanish no longer requires the reagent Flash Powder.


As you can see, after March 2006, there are no references made in the patch notes about fixing the Vanish Bug which rogues have been experiencing since 1.10. In fact, for a very, very long time, the CMs ignored the issue entirely on the forums as well.

Now, to Blizzard’s credit, Vanish is actually better now than it was in March 2006. There have been some “stealth bugfixes”. Auto attacks will no longer *ALWAYS* pull you out of stealth. Although they often still do. Today, if you talk to a PvP rogue, they will probably tell you that vanish works for them somewhere between 40% and 60% of the time.

Eventually, however, blue posts do begin to turn up, first saying that it will be looked into, then saying that the unreliability of vanish is due to latency, and that it is unavoidable.

 

The Fallacy of Blaming Vanish’s Unreliability on Latency

Now, I’m highly inclined to give Blizzard the benefit of the doubt. I do not think they were trying to give rogues a “stealth nerf” (no pun intended). I do not think they’re trying to screw us or lie to us, and it would be against their interests as a company to screw rogues over. That said…

There’s one huge flaw in the latency explanation. Blaming the unreliability of vanish on latency utterly fails to account for the fact that vanish worked very well from June 2005 through March 2006. Obviously internet lag did not cease to exist during those 10 months, so there HAS to be something else going on with vanish than JUST lag.

Which brings us to…

How Does Vanish Actually Work?

Up until now, everything I’ve said in this post is fact. Now I’m going into theory… and I might be wrong. If you have any experiences that are inconsistent with my theory, please let me know and I’ll consider revising it. Anyway…

I’ve seen a lot of rogues say that vanish “used to” give 1-2 seconds of total immunity to incoming spells when used, which acted as a lag buffer and made vanish reliable, and that blizz shortened or removed this in 1.10 I see two flaws with this theory. One is that post 1.10, vanish could still be used to negate “in air” spells, and can to this very day. I remember using vanish to avoid Maexxna’s web ability in Naxxramas in vanilla WoW. Even Pally bubbles couldn’t immune that spell, but a perfectly timed vanish could. This leads me to believe that vanish uses a different type of immunity mechanic than anything else in the game. The other reason I don’t believe in the “total immunity” theory is that even during the 6/05-3/06 period, you could still get destealthed a fraction of a second after vanishing by a demo shout or an aoe spell, so you clearly weren’t truly immune.

Personally, I believe that the immunity function of vanish was (and still is) something to do with “in flight” spells ONLY.

Now obviously, lag is a factor. Many times we’ve been given an explanation entailing a rogue client telling the server “vanish me!” at the same time a warrior client says to the server “mortal strike the rogue!” and the server must decide who was there first. Again however, it would seem that this is an oversimplified explanation. If the vanish call gets in first, then there should be no rogue to receive that mortal strike. If the mortal strike gets there first, then the rogue should take damage from it but still vanish successfully shortly afterward. However, this is not what rogues are experiencing. What we see is vanish playing its animation, telling us we’re stealthed, and then immediately fading WITHOUT us taking any damage. I’m really not sure why the hit that breaks the vanish gets lost by the server… but I’d much rather be taking that hit and then disappearing than avoiding that damage itself and having vanish fail.

Obviously, it really isn’t that simple, because depending on how much of vanish’s functionality happens client-side, you could still have the issue of a hit coming in from the server after the client think’s it’s successfully pulled off a vanish. However, this STILL doesn’t explain why it worked beautifully for 10 months.

So Then What Really Happened in Patch 1.10?

Logically, there are a limited number of possibilities.

1. Remember when blizz added a server side debuff check to dispel abilities before they could cast? Ostensibly this saved casters some mana on wasted dispels, but it also created a little bit of lag on the casting of those spells. Now imagine Blizzard changed the way Stealth/Vanish code worked intentionally for similar reasons, and unintentionally caused vanish to be less reliable as a result.

or…

2. It’s got nothing to do with change from client to server decision making, they just accidentally borked it while they were messing around with stealth code for other things.
2a. And they just haven’t nailed it down yet
2b. And they decided that vanish may have been too reliable so they left it the way it was–not completely broken, but considerably more susceptible to lag than it used to be.

or…

3. They just wanted to be jerks and nerf us without ever admitting it was a nerf.

I think if rogues are honest, they can rule out 3. It doesn’t serve blizz any purpose to lie to us about vanish, especially now, over 2 years later.

My theory is that damage is decided by the server, but vanish *used to* be decided by the client, and this took precedence over any incoming damage reported by the server after the client vanished. In other words, if a rogue vanished at the same time as a warrior hit MS, the warrior client would say to the server “please roll the RNG and give me a MS on this rogue” the rogue client would say to the server “Screw him, I’m vanished!” Of course, this would be a security issue, as anything that happens client-side in an online game is infinitely easier to hack and abuse. My theory is that in 1.10 vanish got moved over to a “request” to the server. “Please vanish me,” says the rogue client to the server. “Nope, you’ got MS’d” says the server.

So this is what I think happened

WoW 1.5 Vanish
1. Rogue Client denies any incoming spells that are in-air from client’s perspective. (The special vanish immunity)
2. Rogue Client immediately plays vanish animation, consumes reagent, starts cooldown, etc
3. Rogue Client asks server to put rogue in extra-powerful stealth, denies any incoming damage from server.
4. Rogue Client asks server to drop rogue out of combat.
5. No blanket immunity
6. No explicit command to detarget–stealth does that for you

WoW 1.10 Vanish
1. Rogue Client requests server to deny any incoming spells that are in-air from the SERVER’s perspective
2. Rogue Client immediately plays vanish animation, consumes reagent, starts cooldown, etc
3. Rogue Client asks server to put rogue in extra-powerful stealth, damage incoming from the “lag window” causes vanish to fail.
4. Rogue Client asks server to drop rogue out of combat.
5. No blanket immunity
6. No explicit command to detarget–stealth does that for you… unless it never applies, in which case the enemy continues hitting you like you’d never done anything at all.

So Can it be Fixed?

Designing online games, and deciding whether decisions will be made client side vs server side is a tradeoff. Client side decisions make the game more responsive and lighten the load of processing the server must do. However, they can be spoofed by hacking programs. Think of aimbots in the old Counterstrike. If the server is listening for the client to say “i just fired and missed” or “i just got a headshot on MrKillr007”, then all a hacker has to do is write a program that sends the “i just got a headshot” packet to the server. The solution, of course, is to simply have the client say “I just fired a rocket at 3 degrees elevation and 44 degrees northeast while standing at x coordinates” and then have the server decide if that bullet actually hits anything. Client side is faster and less laggy, Server side is more secure. Most games do a little of both, making some things, like blinking eyes and jumping, client side, and others, like bullet trajectories, server side.

So, if vanish is too abusable to be client side, can blizzard ever fix it like it was?

Not really, but they can get very close, if they think creatively. My theory is that blizzard put moved the in-air spell break and damage ignoring from client side to server side, but kept the animation and cooldown trigger client-side so that the ability still feels “instant”, even though it really isn’t. The time between the client playing vanish and the server actually putting you in stealth is the window in which vanish currently fails. I bet Blizz made this change because somebody was abusing a client-side command for damage immunity with one of those WoW hack programs, so they moved it server side.

There are a couple ways to fix it though. The simplest would be to do to vanish whatever it is that Feign Death already does. I’m not sure how they’ve got Feign working right now, but as far as i can tell it reliably forces a player to detarget the hunter 100% of the time. What FD does NOT do is stop in-air spells or protect the Hunter from damage of debuffs in any way. Is FD a client-side decision? Is it still client side because FD’s detarget is less abusable by hackers than Vanish’s in-air spell immunity? If so, could we get the detarget code FD uses added into vanish?

Another possible solution would be to immediately refresh the vanish cooldown if the vanish debuff disappears without the rogue actually being hit by anything or using an opener, allowing rogues to immediately attempt to vanish again. I can see how this might annoy non rogues though, who would see it as a buff, not as a bug fix.

Another solution, assuming both damage and vanish perform server checks, would be to NOT have the ability actually cast until it’s “won the race” with any damage spells. This would make it exactly the same as the dispel checks, and it would put create lag between pressing the button for vanish and actually vanishing. Please DON’T do this as it would be infinitely frustrating because vanish needs to be a “twitch” ability to make any sense.

Finally, you could make it so that for a split second after vanish activates, stealth will not break from any damage or debuff, although the debuffs/damage would still go through. The trick here would be to get the time short enough that it keeps vanish from failing all the time, but not long enough to be unfair to anyone trying to pull the rogue back out of stealth with an AoE or whatever.

 

All of these hinge around giving the client back the authority to do SOMETHING on it’s own… something too innocuous to be an attractive target for exploits, but not so innocuous as to be useless. Personally, I think the infusion of FD detarget code is the one that makes the most sense.

I’m hoping with some other player feedback we can refine this and distill to the point where we can take it to blizzard. Cuz i just wrote a very, very long post, but really all i want is to be able to vanish and have it work

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s