Hanzo snapping arrow bug

Overwatch’s system for RTT input and backdating actions/resolving arguments is actually pretty sophisticated, but also very much in its infancy. They went over it at a panel at GDC, and it’s pretty jargon-y and confusing, but keep watching for a bit until they get an animated timeline section and you’ll see how flexible the system can be.

This system is pretty cool, but there were issues that caused the system to break, like packet loss. For example, Widow’s sniper rifle accidentally firing a “ghost” double-shots with two bullet trails but only the second “top” bullet trail actually hit… that had to be fixed with a patch later on, and that was specifically because of packet loss, cloned inputs, and camera animations for recoil.

The system in place here is implemented across most, if not all, client-server models in virtually all other dedicated server FPS games.

The advantages of favor-the-shooter are available to ALL players connected to a server, thereby making it not necessarily unfair (only unfair in very fringe cases).

Comparative to a host model for P2P, like classic Halo or COD on consoles, favor-the-shooter is actually very fair. In those games there’s a specifically unfair advantage where the “host” is always authoritative and always wins in terms of timings. Other game devs have instead built in disadvantages to the host to offset this advantage like Halo 3’s Battle Rifle 3-round burst spread secretively being (until discovered by players) 1.15-1.25x larger than all other players who weren’t host.

Blizzard isn’t doing anything specifically different than other games, just that their one-frame input buffer and the implementation of specifically half RTT ping. Fundamentally, it’s the same model in Overwatch as it is CS:GO, TF2, or any other PC FPS game with dedicated servers – Blizzard was just incredibly transparent in calling it favor-the-shooter.

The alternative to favor-the-shooter is essentially that everyone misses clutch shots literally all of the time, and that’s not fun for anyone.

1 Like

A ain’t got time for your big brain tomfoolery

Hanzo borken

Because it’s not possible to do over networks. Lag exists.

If you’re 200 ms behind a server, you’re always seeing things slower than everyone else in the game. If someone else is 10 ms behind a server, isn’t it unfair that the 10 ms always wins?

The game, even though you’re seeing it unfold in real time, is more like a really long written statement about a retelling of a sequence of events.

Think of it like this ;

  • 12 people (players) got into a bar fight (teamfight)
  • An officer (the server) is making them all write 12 separate written statements (client-side) shortly after the fight was broken up
  • Some people write faster than others (lag, ping)
  • The officer is peering over all 12 separate people’s shoulders as they write out these written statements live… the officer must type out his own timeline record (authoritative), and his screen that he’s typing on is being screenshared to his supervisor who is watching the officer and also has set a deadline to be done within the hour.

Suppose all 12 players are about to write about who threw the first punch (fired first). Let’s say it was Orisa who stomped on McCree’s foot, then McCree punched Orisa.

  • McCree writes the fastest, and in his mind he threw the first punch with absolute certainty.
    • Suppose 2-5 other people can confirm it because they witnessed it.
  • Orisa writes the slowest, but she remembers things differently and writes out that she stomped on his foot with her high heel before he threw the first punch.
    • Suppose 2-10 other people can also confirm it because they witnessed it.

The cop has to process all 12 of these statements, and type out a timeline, and they have to do it as fast as humanly possible because their superior is watching through a screen-share call and he has to finish within the hour.

Even if Orisa writes the slowest (has the most ping), she definitely stomped on his foot a quarter of a second before McCree punched her, and we have more eyewitness accounts of Orisa stomping before McCree punching. The server HAS to commit that Orisa was the first one who attacked, even if McCree swears on his BAMF belt that he punched first.

The cop has information from the other witnesses about how much time it would have taken for Orisa to stomp compared to McCree to punch, based on how they were positioned on their bar stools. Orisa could have just dropped her foot instantly from the stool rung, versus McCree who would have had to whip around and turn his entire body to punch Orisa.

The cop has to make a judgment call on who punched whom first, and they have to do it as fast as possible, with as much accuracy as possible, and based on 8 - 4 written statements that Orisa punched first, she’s the one that started the fight even if she’s the last person in the room to write about it.

This is what it’s like to have to constantly resolve 12 separate accounts of events. It’s messy, there’s mistakes, and people can’t write any faster unless they buy a more expensive pen (ISP plan).

This system, even if imperfect, is the best system we have is the best we’ve got because we’re not all in the Blizzard Arena playing games on a LAN. We’re on the internet.

This isn’t actually a bug, just FYI. It’s just misleading visuals due to massive hitboxes in Overwatch. Even though Hanzo’s projectiles are fairly small, they’re still substantially larger than the arrow itself, and your hero’s hitbox is pretty dang big. Sometimes, the hitboxes will collide, but the visuals don’t, and that manifests itself as the arrow snapping to your character

They could fix it a little by like adding a little “spirit aura” or something around the arrow that more accurately represents its hitbox, but you can’t really fix the player hitboxes without doing some whacky stuff or just shrinking player hitboxes, which… IDK, I’m not really sold one way or the other on that

You’re right that this isn’t a bug, but it’s not about the hitboxes. It’s about making sure the arrow doesn’t continue flying in it’s path. If it does continue flying, it confuses everybody.

If Hanzo did hit someone with an arrow, that arrow cannot be allowed to continue flying past that player.

The arrow MUST go to the player that died, and the arrow has to bend in order to do that.

Otherwise you have confusion that causes stuff like the victim’s teammate D.Va (who stood several meters behind the victim), thinking they need to Defense Matrix the arrow hurtling towards them.

The snapping part is just the discrepancy between two clients on a networked game connected to a server. What you see on your screen is not what they see on their screen.

  • In the replay, the game will have averaged things out based on a combined retelling of 12 separate viewpoints so it doesnt look ridiculous. You’ll be plainly within the path of the arrow without snaps… the replay uses the server’s authoritative retelling of events.
  • But for live recordings, it’ll look ridiculous and snap, because a live recording is only your perspective.

Also, I made an edit. According to the linked GDC talk…

…there’s apparently a hard cap for RTT being 225 ms before the game starts ignoring certain inputs for backdating damage instances.

So, amending the above post;

I get shot through walls ALL THE TIME. It’s most noticeable with Hanzo because his arrows stay on you for a while.

I always wondered why playing in West coast vs. East coast felt so extremely different, even though I get ~190 ms on East and ~230 ms on West. The difference between them is even more noticeable than between East coast and the SA servers (~40 ms).

“very fringe cases” huh. I live in Anchorage Alaska which is a city and state that is part of the United States. I pay $175.00 for the top tier internet in the state.

Blizzard changed the RTT throttling that was in place, to combat low ping players having an advantage over mid/high ping player. People whined about it so much that after 2-3 months Blizzard stopped throttling RTT. Now favor the shooter for me is favor everyone that isn’t where I am. The excuse most people had for wanting Blizzard to change it was “but I pays 50 dollars for my nets and thats alot.”

Blizzard isn’t responsible for throttling, that’s solely your ISP refusing to allocate the bandwidth you’re paying for in a manner that properly works for gaming.

Which, they can do. And routinely do. Blizzard has no control over it, they most they can do is enter partnership with a telecom company to create fast lanes/packet system suitable for gaming, and that’s it… And even then the ISP can still limit your access to an AWS server no matter where you live, that you still get a crappy experience gaming.

Furthermore, you seem to be under the impression that favor-the-shooter doesn’t apply to you. It does. You’re just not aware of when it works to your favor because it is never shown clientside, and you only notice and could only ever complain about favor-the-shooter due to a rubberbanding/backdated damage instance that seems extra long.

This isn’t some sort of pay to win scheme like you’re convinced it is.

Blizz has a dynamic adaptive tickrate system based on how stable your network connection is that has existed since the transition from 20 to 60 tickrate… since before S1.

High ping players actually have always been advantaged in Overwatch by always triggering the dynamic adaptive tickrate change, which allows the clientside hit detection to run at a lower tickrate, and therefore land more absurd shots than a person with lower ping.

Since ticks happen at constant intervals, if you’re running at 60 tick rate this means you have 1/60th of a second where an enemy and a shot could occupy the same space, versus 1/20th of a second. Hits have a greater chance of hitting a target in that 1/20th of a second.

So there isn’t any sort of radical change that punishes you for having worse internet that Blizzard implemented, and in fact, the exact opposite is true… having a worse internet connection guarantees you more generous shots.

So, again, stop with the victim complex.

Sure thing

I will keep getting hit by things like this and you will keep standing up for Blizzard.

Again, you’re assuming that everything you see in game on your client is correct. It’s not. Do you even know what packet loss is?

Any number of issues could have caused this that isn’t simply “Blizzard handicaps low-ping players”.

Furthermore, what does the replay look like?

  1. That was a video before Blizzard made live a replay system.
  2. There was no kill cam, because I didn’t die there.
  3. This is one, anecdotal, example of what its like to play between 90 and 110 ping.

I started recording my games so I could pick out each bug that existed with Reinhardt after each and every patch went live. Something was bound to break somewhere with Rein and I wanted to send proof to the devs. I have listed the many, many bugs Reinhardt players have had to deal with. If you want that list feel free to search my history.

As far as that particular game, there was nothing happening in game for me to think we all had any stability issues. I am neither a tech, nor am I without knowledge. I had 1 1/2 of comp science in college before I decided I couldn’t stand the people there.

I looked for the myriad of videos where people were going off on Blizzard because they were throttling RTT. Which, I know they have the ability to do. Some of the comparisons were like “Unreal can do it right, and has been for the last 15 years”. It was those complaints which forced Blizzard to change it.

I still play Overwatch, I just know I am not getting a fair shake, meh so what. I won’t turn a blind eye to it though.

P.S. I play Reinhardt in 75% or more of my games, so “Favor the Shooter” rarely applies to me. Very rarely.

Stability isn’t something that you can evaluate like that, not without the netgraph. Overwatch doesn’t have any amount of transparency about packet loss, even with the game’s networking icons in the top left.

Case in point, when the game had the double-bullet trail bug, you sometimes had no indicator, no icons whatsoever that said you experienced packet loss at the time of packet loss. Yet a packet was INDEED lost because the shot mispredicted and wasn’t honored.

Whether or not you have the icons on, I have no idea, but even having them on isn’t reliable. It’s netgraph or bust.

You can’t throttle RTT… RTT stands for round-trip time which is an averaged number of the number of milliseconds it takes takes for your computer to send packets to ping the server, have all of the packets reach the server, get processed and resorted, and receive a return packet from the server. It’s a literal average rate of there-and-back return packets over the last couple of seconds.

As for Unreal being able to throttle connections to handicap players or (more accurately) simulate a consistent input delay, that’s completely irrelevant to RTT. And whether or not they handicap lower players isn’t the problem here.

The game’s server operates on a delay in order to backdate events – something that HAS to exist, regardless of philosophy on the matter because the alternative is a gamebreaking desync. In the event that there’s a player that’s laggy, that delay is how the laggy player gets to commit an action and still play – which they’re still playing on delay and still technically disadvantaged by having information later than all other players.

Of which, you can’t throttle that, you can’t even increase the delay because if the delay is too long an event that would have been backdated would eventually be discarded.

And Blizzard didn’t change anything. Here’s the post about the change of PNG + RTT to Latency, and it’s in plain English – they changed nothing about how the game operates or processes events or even increasing the delay to handicap low ping players.

So, as to why you got hit by flashbang even though you saw on your screen you turned in time, that could be;

  1. Packet loss, where the packets that said you turned in time were lost to the void of the internet and discarded, so the server saw that you were still facing front instead of to the right
  2. Packet loss again, this time it being information about McCree’s aim when he activated Flashbang – this could change the arc of the flashbang where he could have thrown it upwards over your shield, but your computer didn’t get that information in time so all that it could do is continue with the last known position of his aim (which is why watching the killcam/replay/highlight is so important to evaluating these interactions)
  3. A separate hitbox issue unrelated to networking. Reinhardt is known to have had a hole in is barrier before.

I play Rein in Comp the most so I know that feel. But even still, that doesn’t mean that you’re being unfairly affected. You’re a massive character, and Shatters and Firestrikes operate on the Favor the Shooter.

Which is impossible to fix because of latency.

If, as I have said, I play Reinhardt in 75% or more games would I notice “double-bullet trail bug”.

I know what RTT is, I have had to post this same thing a few months after Overwatch came out when people were complaining about Blizzard throttling it server side.

Unreal wasn’t throttling it, and that was why people were making the comparison. Blizzard seemed to be using outdated technologies in their net code. Many people were getting shot behind walls and they didn’t like it. It was as if their ping was higher then it actually was, you know like those of us who live in areas where high ping is the norm.

If I could reference one of the older videos I would. They seem to be lost in the YouTube nether. So far no matter what I ask YouTube to search for I cannot get the videos with the graphical representation of what Blizzard was admittedly doing, and how it was changed.

When it comes to latency and how it affects me and those where I live. High ping sucks and we just live with it. Lower ping is always better. Ask a pro if they would rather play at their normal 15-25 latency, or if they want a round number like 100 and get back to me.

Shatter even after the rework still misses people who are in it. I just, not 30 minutes ago Shattered a Dethblossom Reaper and it hit all around him, but he kept spinnin. I will give you Firestrike, but its a tough call when it hits people you cannot even see. Hard to tell someone they shouldn’t have been hit by it if you are on another part of the map.

Blizzard built netcode from the ground up for Overwatch, and is in the process of transitioning all of their new IP titles to the Overwatch engine, so I don’t know who was making the accusation that they’re using outdated technology. The GDC talk even gives us a few glimpses of code snippets and it’s all pretty new.

Sure high ping sucks, but favor the shooter benefits high ping more than low ping, which was the main point I was trying to explain… high ping still faces more packet loss, desync, and is playing later than the actual server, with the very high likelihood of some inputs being discarded over an extremely high (225) ping, but that doesn’t change that favor the shooter will happen more towards your benefit than against you, if you’re the one with high ping.

If you’re playing Rein, you shouldn’t notice anything period. Things will just kinda happen around you.

You dying around a corner won’t feel all that bad as a Rein because you’re a bigger character in general and can simply chalk it up to the larger hitbox, as opposed to favor-the-shooter.

In any event, your video example isn’t a case of favor the shooter. As I said, it’s either packet loss or a freak hitbox accident.

Well, as you know Reinhardt won’t see it all that often. I mainly play him because he is rather latency neutral. Wanna give Reinhardt favor the shooter, give it charge and see how people like that.

That may be fine on paper, but in practice here in Alaska I have experienced the opposite. My last game on Soldier 76 was months ago. I stopped picking him because as I was recording a game i had a snippet of unloading about 7-8 rounds center mass into a Junkrat. My bullets didn’t start making hit markers until I swung my point of aim a few clicks to the direction his body was moving. I decided at that point to hell with hit scan heroes.

Reinhardt is a big fella, and for the most part I get that I will be taking many hits other heroes will not.

Here is one my brother did for Charge. He also lives in Anchorage.

If that happens then it’s a matter of you experiencing a high amount of packet loss at that moment in time.

Charge not connecting is still not about favor-the-shooter. It’s mostly hitboxes.

I never said that Rein wasn’t buggy, I play him, of course he has some weird interactions that are borderline bugs.

But still, not favor-the-shooter.

My point with charge is, my opinion, it should be favor the shooter.

Too bad Blizzard works like the government and it will be another 3 years before he is fixed.