Avatar

Well, it's tricky (Destiny)

by Kahzgul, Friday, April 15, 2016, 22:30 (3238 days ago) @ dogcow

... And because of the distributed token-ring-esque network setup, a single laggy player can cause everyone in the game to periodically lose sync, even when they all have otherwise good connections, and it's not consistent because of how the buck is passed - sometimes only laggy mcghee is lagging, and sometimes (far less often) it's everyone, and that changes in the middle of matches.


I've heard mention of this "token-ringesque" model before. Where does this originate from? I don't recall any statements from Bungie regarding their network model, other than that wonderful presentation regarding how they split up hosting responsibilities among player & bungie servers. I don't recall any mention of passing a token between hosts (unless people mean when the host for an area is handed off to someone else due to the host leaving). What purpose would it serve, taking turns declaring authoritative game state? I can see how that would be advantageous in that nobody could exploit being host, but wonder if it could be solved in other (better?) ways too.

It's from that same presentation. They say (somewhere) that PvP works the same but without the server, meaning it's just players passing player data back and forth. There's not really a token, it's something totally new and Bungie hasn't told us what they call it. It's just similar to a token ring architecture in that it has a lot of the same flaws and advantages of one. To be fair, it's a really brilliant system and in a perfect network environment it is both more fair and faster than a traditional single host structure. The problem being that none of us are ever playing this game in a perfect network environment, and some people are intentionally degrading their network environment in order to exploit the architecture of this design.

So, to clear some of this up, in PvP there is not host and no token. Each player is sending their outbound packets to every other player. Each player is receiving inbound packets from every other player. Each player's system is using that data to simulate the actual state of the game, and is then showing that simulation to the people playing. Does that make sense? The true gamestate is distributed between the systems of all players, with each console only truly knowing where the player playing on that console is at any given moment, and guessing at where the other players are based on predictive algorithms and the packets they're sending that say "I'm here!" or whatever.

Everything beyond that is speculation, but it's based on my decade of QA and development work, specifically in MP PvP FPS games. It appears that if Someone at console B shoots a gun, Console B will generate a packet that says "bullet originated at point X and traveled to point Y with damage Z." That packet is sent to everyone, and if it generates an intersection with another player, say console A, then console A will send its own packet of "I took Z damage". This is the behavior I've observed.

Neither of these things would be issues except the following behaviors also apply:

- Bullets stop moving when they encounter an avatar of a character, even if that avatar is for a lagged player and is not a known position but a predictive one. This means lagging people cease to take any damage the moment they lag one pixel behind where the predictive algorithm thinks they are.

- Lagging players are allowed to fully catch up when their packets are finally delivered, meaning that they can effectively queue their actions and execute them all at once. This is how people empty a shotgun instantly and kill four members of your team by doing so. Furthermore, the packets appear to be timestamped, so instead of the actions happening at the time the lag ends and affecting the players' positions at that time, the actions affect where the player was when the packets were generated, so even though you didn't see the lagger shooting you (or didn't even see him because he started lagging around the corner from you), when his lag catches up, he shot you a whole bunch.

- Certain precious resources, such as Supers and Heavy Ammo are exceptionally rare, and are not refunded if launched into lagging player avatars, which can cost games.

Remember that when you're shooting at someone, you're actually shooting at your console's best guess as to where that person is. You are not truly shooting at where they truly are.

I'm not sure how the damage referee works, but since it was added it seems to at least kill some of the laggers some of the time once they catch up, but it doesn't prevent any of the damage they dealt while lagging. Some fix is better than no fix, though.


Complete thread:

 RSS Feed of thread