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.