Where is the replay viewer POV coming from

Hi yall.
I’ve looked through google and this forum for confirmation but can’t find it so I’ll make a new post about it.
What POV is shown in replay viewer? Is it the servers like most people seem to claim, without providing source or evidence I’ll add, or is it client side? Or is it a mixup of both?

The way I’ve understood it there are 13 different “versions” running of a 6v6 game without spectators. Each player has their own, calculated locally with input from the server and the local player, then the server has it’s own, which it calculates using input from the various clients in the game and then sends back to the clients.

Related question, Overwatch does still “favour the shooter” when calculating hits, right?

So basically you have hexa-binary input codes bifurcating locally at semi functional rates which cause super indexed refresh rates moira takes no skill causing variating disaggregated sources to be extricated serverside out to playerbase’s personal clients. Ding dong bing bing billy willy wing wong.

5 Likes

is there a downvote function on this forum?

1 Like

Whichever POV you want it to be…
Yes
See Hanzo Miss? Wrong. Hanzo never misses.

I’m not sure you understood the question

You can switch the view from each individual or a free roaming view.

Makes perfect sense to me but good luck trying to explain that to anyone else on the forum.

The point is, the OP is asking how the replay view is affected by latency of each individual client. Like when you’re lagging a bit and you duck behind a wall but you still get headshotted. In the replay, you’re in full view, but you know in rl you were out of LoS.

Or like when you press shift and then you die. I think yesterday I was playing sigma with some lag and I pressed shift and I died. I know I pressed shift because the icon went on CD, but in the replay, nope.

Edit; sorry just realised you’re the OP. ;x

Haha, this made me laugh :rofl:

I think you need to take the humour in this.

To answer your question:

As far as thinking about it goes, that’s kinda correct, but it’s not exactly right. There is only ONE version of the game on the server. The client simulates what it thinks will happen on the server, which gets corrected constantly. Each of these simulated versions (12 of them) is constantly recorrected when the server makes a decision as to what happened based on the input from each of the clients.

The FtS is still a thing basically, though that has little to do with the multiple versions/simulations of the game. The POV in the replay viewer is the server corrected version of the simulations which should be correct and the same amongst all the clients. That’s why things such as Ragdolling and weird behaviour doesn’t show up in the replays, but does in the live game client, because the live game client doesn’t correct for behaviour that doesn’t matter to the server and “never happened”.

(DISCLAIMER: This is based on my personal understanding of how the system is supposed to work, not necessarily based on the actual voodoo magic that Blizz uses to determine if/how certain things have/will/are happened/happening. This is also why certain things like the BS disappearing ults like Nano/Pulse Bomb/Blizzard continue to be a thing and not refunded like they used to be, because it’s taking the client inputs and deciding you used them after you died…)

I’m sure he wants to upload the replay from the replay folder straight to the youtubes but doesn’t know what it will look like.

Wait, there’s a replay folder? I’ve been capturing replays with damn nvidia shadow thing.

1 Like

This kind of replay is generated by collecting all the inputs/events from all the players and effectively playing a game of Overwatch that you spectate while each “player” repeats the actions from the recorded list.

yeah crazy, as far as I know they are server side until you record it yourself. But I was just trying to interpret the OP.

1 Like

You never get the other players real PoV.
The closest is your own gameplay and a recording of your realtime gameplay.

Replays as far as I see and logical guess, are always the server side PoV

Thats also why my own recording is true and POTG is usually slightly different.

So you can’t tell if you where really on widows screen, but she knows it.
You could ask her to upload the recordings so you can analyze it. :sweat_smile: From her PoV

I don’t think Blizzard is saving up 12 different replays for each game, so I assume the PoV is the “master”, ie server side.

Short answer: There is only one version of the game and it is whatever was on the server (will differ from your pov if you have high latency).

The server runs at a specific tick rate (which is 60-63hz and I know for OWL they have a dedicated 144 hz rate) which is the point in time when server collects inputs from all players and calculates what happens. The server then calculates all manner of things in that instance such as whether a shot from widow intersects with another player’s hitbox etc. The server then sends updates back to the player constantly so someone on high ping may hide behind a corner only to find that they were killed before actually hiding. The game has a lag compensation system but it has a limit. All that happens in a tick rate although there is movement interpolation and other funny effects that you could see (like characters ragdolling happens on your end not on the server).

The actual secret behind all of this is that part of the things you see (such as character movement and particle effects) are calculated on your end but actual movement and weapons hitting is calculated in part on the server and part on your client. The server then corrects and sends the data to your machine.

2 Likes

I don’t think Blizzard is saving up 12 different replays for each game, so I assume the PoV is the “master”, ie server side.

I think it’s possible that the server records everybody’s ping, then corrects for an individual perspective when you go into first person in the replay viewer.

That could be why animations sometimes move slightly when you are watching in freecam, pause, switch to first person, then back to freecam. When you go into first person, it could be moving the animations to where they were in that player’s perspective. It could also just be a bug.

Hey look it’s 2019 again.

I will have to check the game developer’s conference netcode video again, but my understanding is that the replay is more like a separate local-client that operates alongside the server and records game events as the server sends it to them.

They have a lot of stuff compartmentalized like that for security/efficiency reasons, so I kind of doubt replays are the exact gamestate taken from the server.

Yes, this hasn’t changed. Your client cannot “override” the server’s gamestate, but if there is a disagreement that arises between two clients who were doing mutually exclusive things regarding what happened during a given frame, the “shooting” client gets priority.

It’s not universal though.

There are a few exceptions such as movement abilities like genji’s dash always getting priority over the shooter, or certain abilities that check ONLY vs. the server gamestate and do not take the “shooter’s” perspective into account at all. Many ultimates like earthshatter or graviton surge work like this. I’m pretty sure Reinhardt’s charge also does this, which is why it sometimes seems to charge straight through players without a pin while other times it seems to vacuum-suction somebody on the edge of his hitbox into a pin.

1 Like

I’ve seen the GDC netcode talk (gdcvault-dotcom/play/1024001/-Overwatch-Gameplay-Architecture-and) several times in the past few years (being a game dev trying to extract as much useful knowledge from it as possible lol) and I don’t recall them ever talking about the replays specifically. Recording replays with a “virtual client” is an interesting idea, though. It should still accurately represent server state (since doesn’t need to do any predictions and can run entirely in the past relative to the server). It would also make it easier to separate server and replay logic.

You also mention security, which is a good point. I wonder if there’s server-only entities that might contain hidden data that the clients should never know about. In that case it would make sense to use a virtual client to record the replays so that the code recording the replays never even has access to those server-only entities and therefore can never accidentally record some entity state that shouldn’t be leaked to the client.

Came here looking for answers about how the replays are recorded, instead came away with interesting points to note down for my any future multiplayer games I create :grin: