Hello,
I played Vanilla but I never raided. I dont even think I ever hit 60. I forget.
What do I know is I dont quite understand spell batching. I’ve read a bunch of posts about it here, and each time I think I get it - someone posts something that is the opposite of the person I just read. Which means I must not be the only one who doesnt fully grasp it.
I get the general premise so maybe not like a 3rd grader. I read wowheads and blizzs information. I understand why 2 mages can polymorph each other.
The arguments I see are about raiding. That there can be cases where a heal spell cast in the same batch as a raid boss mudstomping a tank to death would not heal the tank. So the healer essentially “loses” the heal and the corresponding mana consumption.
I’ve also seen people say no that can not happen. That if it did, it would mean the heals in that batch did not cover the damage the tank received or the heal was actually in batch B and not the batch A the boss damage was in.
Or am I missing a piece? If batch A “begun” but not completed, and then a healer hits an instant heal spell - will that spell be put in Batch B despite having been pressed in Batch A?
You see I’m confused.
Please help.
1 Like
Pretend all your abilities are baseballs and you have to throw one to activate your spell, then treat it the same way. 
To be honest though, they are still having some issues with it, so that may be the source of some of the conflicting information you’ve seen, such as the tank dying despite a heal going off.
A good example is flag returns in the WSG testing right now. Multiple times I’ve seen it show in text that the flag was returned but it was actually picked up even though it shows the flag was returned first.
E.g.
Kronoh has returned the flag.
Thimothy has picked up the flag.
It shows I returned it first which would make it impossible for you to pick it up, but you did.
I’d wait and see if they make any changes before actually settling and saying “ah, this is exactly how it works.”
1 Like
In a given multi-character encounter, spells are seen as being ‘sequenced’. The best example is two mages casting Sheep at each other. In a perfectly linear encounter, the first one to complete their spell sheeps the other, and the other Mage’s spell fails because they are a sheep.
However…
Done at large scale this can become slow and cumbersome if every single spell has to be processed one by one. Especially when you start to consider how far out spell and character interactions can reach. Imagine 100 mages standing 30 yds from each other in a line all casting sheep at the same time. If each spell was handled in a straight queue, the entire state of the world would have to be assessed one by one for each spell, adjusted by the spell, then the next spell is handled.
So servers use “batches” where the state of the world is locked, all the spells in the batch are assessed at once, and then the state of the world is updated at the end of the batch. Every spell that’s cast within the batch length is gathered up and then later spells are processed in the next batch.
In BfA, the technology has become far faster, and multi-threaded, so that they can process batches far faster (I think they said 10 milliseconds) and therefore batches can be far smaller. The shorter batches make it far more likely that only one spell in any given interaction happens per batch. This makes it far more likely that a Mage’s spell is cancelled by the Sheep cast on them at the same time.
In Vanilla, servers were slower and they were more worried about performance. Because of this they set the batch length at 400ms. That meant that a spell cast 300ms after another spell may end up in the same batch.
The mage example here is the classic illustration of the problem, because its possible that both Sheep spells occur in the same batch. Because both mages are not sheeped at the start of the batch, both of their spells successfully complete. Therefore after the batch is complete, both Mages are sheeped. Similarly two warriors charging at the same time, may end up at each other’s location instead of one being stunned.
Does that help?
2 Likes
I’ll remind you a small percentage knew about and understood spell batching in Vanilla. Even fewer put it to use for them. I always wondered about some things that happened in PvP back then. So don’t feel alone in your confusion! 
1 Like
Yes and what you said jibes with what I was reading at wowhead or maybe from blizz about why a warrior can pummel a mage and still be sheeped. The warrior may have pummeled first, which should interrupt, but if its within that 400ms window, same batch, so warrior is sheeped and mage is pummeled but not interrupted.
What I’m not following is the complaints I’ve been seeing - mostly from healers. It sounds like to me this could only help, not hurt them. That a raid boss may inflict otherwise fatal damage, and the heal actually comes 300ms later than the fatal damage and keeps the tank alive. Isnt that how that would work?
That depends largely on the internals of the batch processing. If it process all damage received first, then a heal may not be processed before damage even if the heal would have kept them alive. I’m not sure precisely whether they sequence the spells, or process by type first.
If they do it by type, incoming damage might kill the person before the heal could be applied, even if the spell was cast first.
That helped me a bit on the technical side, so thanks.
I knew basically what happened but not why.
Also, I remember that happening later in the game too, so not sure to what extent spell batching has been in the game. I specifically remember leveling my DK and coming across another one and we gripped each other to the opposite location. I also remember gripping a warrior right as he charged and we got a weird animation bug where he stopped like halfway to me and looked like he was falling for a second. lol
Cause batching is interaction between player and player. Boss or mob damage isnt batched. So to quote a blizzard poster:
Holly the holy priest is healing Punky the Brewmaster. Punky spikes low, and Holly hits Guardian Spirit in a panic. The server verifies that Holly is able to cast it, and that Punky is alive (great!). The cast goes off, Guardian Spirit goes on cooldown, and a request is placed for the Guardian Spirit aura (that prevents dying) to be placed on Punky. That request will be filled the next time the 400ms timer loops, which happens to be 320ms from now. 250ms later, the boss lands another hit on Punky. Punky dies. Sadface. Another 70ms goes by and the Guardian Spirit aura request pops up, and goes “Hey guys, I’m here!.. Aww… damn, I missed the party. Sadface.”
What we can discern from this is player to player interactions are batched, interactions from mobs to players are not. In this same blue post he even states that heals casted on self are instant (minus client/server latency).
No boss and mob damage isn’t batched with player to player interactions.
Spell batching is still in game currently, what differs is the batching loop timer. For a long time it was 400ms. Now it is near instant.
1 Like
Ok so that would make sense why some of the healers could be angry. Although I’m guessing they dont know for sure how it works either.
One more question I think. Tell me if this makes sense.
I understand the lag time and processing time. Is there actually another set of time like where the batch actually say “lands”?
So for instance.
Raid boss fatal damage at 300 ms - Batch A
Will his damage have “landed” already if
I cast heal at 402ms.? My heal will be in “batch B” but will the fatal damage have actually killed my tank yet or will the game allow me to cast the heal, even though there is a 0% chance of it saving my tank?
Can you link to the blue post on that? I haven’t seen it.
It would explain the healing issue.
Googled it for the image to transcribe it. Got it from Reddit r/wowservers
Thanks! This would certainly explain the “problem”. I use quotes because if thats how it was in vanilla its not a problem - vanilla server after all. I just really wanted to understand and between you and Eloraell it helps a lot!
Thanks again!
So from my understanding, and it is reading in between the lines of the blue post I linked to Eloraell.
Mob -> player interactions aren’t batched. So server says mob does damage and the mob will do the damage instantly (minus server/client latency). For player -> player interactions. Casting checks are done instantly (again minus latency) but only application is delayed.
So checks are done when you decide to cast your heal, cast goes off, mana taken, spell on cd, application is delayed til timer loops around. Could be in 20ms, could be in 300ms.
At the end of Batch A, the tank will be dead. So entering Batch B, the tank’s status is dead, and any heal spell on the tank fails to cast because the target is dead.
Though if Nokrai can provide the actual blue quote about NPC/Mob damage being not part of the spell batching, then that suggests a completely different problem.
Imagine we start a clock at 0ms. At 400ms, all spells cast since 0ms will be processed. If at 100ms, the healer casts a heal on the tank, it will be sitting in the batch bucket until 400ms. If at 250ms, the boss hits the tank, and that is processed before the batch is processed, by the time the state is locked at 400ms, and the heal is processed, the state of the tank going into the batch processing is “Dead”, therefore the heal fails.
That is a serious issue with spell batching, but it’s hard for me to say for sure whether that happened commonly in the real game. A lot of people’s “precise recollections” have been altered by both Retail WoW and Private Servers since then.
I do remember a number of instances where we looked at the logs and the heal should have saved the tank, but back then the logs were even more spotty so its hard to prove that it was a spell batching interaction issue.
Eloraell<The Merchant Underclass>, while you and I, in the past, may have had disagreements on these forums, your explanation here, causes me to have a greater appreciation.
Thank you, for your explanation!!
Should be in my response just below you asking for it. will send you to a reddit post with the image of blue post from way back machine.
Oh, this is a very old post? Definitely would be interested in the Reddit link then.