Avatar

kotaku: Destiny 2 for PC, won't carry over year 1 characters (Destiny)

by uberfoop @, Seattle-ish, Wednesday, September 28, 2016, 22:58 (2764 days ago) @ Cody Miller

If you left a game of Halo and were the host, the game would pause and wait for another player to become host. I have never had this happen in Destiny. Why is that?

According to their networking presentation, in PvE they basically just let things play out without authoritative confirmation from the host until a new host is selected. After which point the new host just kind of sorts everything out in real time as things converge back to normal.

This is sometimes what's going on when you can shoot enemies but not kill them. You're a non-host and there's no host. Because there's lots of client trust, the game is okay with it if you keep running around and doing stuff (and it'll later try and reconcile things like your new player location once there's a host), but some host-required actions like enemy kill confirmation aren't being returned.

For Halo, the presentation suggests that the black screen happens because the game would take time to try and reconcile any potentially game-breaking synchronization issues, in particular with high-level mission/gametype scripting. Things like making sure that the new host remembers to spawn a third-stage Invasion objective if the old host disconnected at the end of stage 2.
This was a pain because it meant stalling the game momentarily to sort things out. It was also a development pain because every possible issue had to be identified and a solution written into the game; Bungie was worried that this would become a bigger problem in Destiny, since they'd have to identify and solve problem cases per-mission, whereas in Halo they just had to do it per-gametype.
Destiny's solution is to not network these functions peer-to-peer in the first place. Since high-level mission scripts don't require a high level of responsiveness, running them on stable dedicated servers doesn't require very high server resources. And by never migrating these functions between inconsistent clients, you solve the synchronization problem. (Obvious caveat: if the server breaks, the game breaks.)


Complete thread:

 RSS Feed of thread