How does Death Stranding's multiplayer work under the hood?
December 27, 2019 6:37 PM Subscribe
There's been plenty written about the gameplay experience of Death Stranding's asymmetric multiplayer, how the interactions are used in the game, and how it all works in-fiction. I understand all of that! But even >100 hours in I'm stumped on what's happening behind the scenes that explains how it operates and I'm really curious about it. It seems like more than simple instancing or separate "servers". Exhaustively detailed specifics follow!
Here's the observations I've been having trouble fitting all into the same model.
1. The game tracks and displays contributions to any constructed objects (resource contributors, upgrades, repairs) by player name, and also keeps a history of all players who've carried a particular piece of lost cargo.
2. I feel confident I've interacted with objects (and lost cargo) from hundreds of different players.
3. The game world does not show nearly enough constructed objects to account for THAT many players' creations, even if it is culling/de-duplicating close or overlapping objects.
4. I've never watched a structure get built or upgraded in my vicinity. However there's clips on youtube of Lost Cargo spawning in (has a deliberate, distinct visual lightning effect).
5. There's no way to find a specific PSN player/friend and form a Bridge Contract with them.
6. A lot of larger scale stuff that typically requires multiple player inputs (road building, zipline networks) very much seem to be set up so that you can have the satisfaction of being the one to “complete” the build, or the network. At first I thought this was confirmation bias but it's extremely uncanny how often (for example) an auto-paver is 2/3 resourced and I "get to" finish it and build the road, or there's two ziplines spaced just far enough apart that one right in between makes the critical connection. If it was one shared coherent instance I really don't think it would be happening like this so often.
7. The feedback I get on built objects seems wildly disproportionate to their utility; an arbitrarily-placed Timefall shelter I built has 10k Likes, while an incredibly usefully-placed Generator I built (and upgraded to Level 3) has exactly 0 Likes, even several weeks later -- as if the Generator is not appearing for anyone else.
The vague impression I get from the above is that the game collects objects and contributions systematically but piecemeal from players' games to distribute across other players' games. But this would mean for example that my "finishing" contribution to a construction on my game might just be an intermediary but non-completing contribution in someone else's game? And so I'm "building" the road, or joining up Zipline network segments, only in my game? That doesn't seem right.
...Especially when you’ll get several “a road you rebuilt was used by someone else” notifications shortly after you complete its construction. Any logic that accounts for it all?
Here's the observations I've been having trouble fitting all into the same model.
1. The game tracks and displays contributions to any constructed objects (resource contributors, upgrades, repairs) by player name, and also keeps a history of all players who've carried a particular piece of lost cargo.
2. I feel confident I've interacted with objects (and lost cargo) from hundreds of different players.
3. The game world does not show nearly enough constructed objects to account for THAT many players' creations, even if it is culling/de-duplicating close or overlapping objects.
4. I've never watched a structure get built or upgraded in my vicinity. However there's clips on youtube of Lost Cargo spawning in (has a deliberate, distinct visual lightning effect).
5. There's no way to find a specific PSN player/friend and form a Bridge Contract with them.
6. A lot of larger scale stuff that typically requires multiple player inputs (road building, zipline networks) very much seem to be set up so that you can have the satisfaction of being the one to “complete” the build, or the network. At first I thought this was confirmation bias but it's extremely uncanny how often (for example) an auto-paver is 2/3 resourced and I "get to" finish it and build the road, or there's two ziplines spaced just far enough apart that one right in between makes the critical connection. If it was one shared coherent instance I really don't think it would be happening like this so often.
7. The feedback I get on built objects seems wildly disproportionate to their utility; an arbitrarily-placed Timefall shelter I built has 10k Likes, while an incredibly usefully-placed Generator I built (and upgraded to Level 3) has exactly 0 Likes, even several weeks later -- as if the Generator is not appearing for anyone else.
The vague impression I get from the above is that the game collects objects and contributions systematically but piecemeal from players' games to distribute across other players' games. But this would mean for example that my "finishing" contribution to a construction on my game might just be an intermediary but non-completing contribution in someone else's game? And so I'm "building" the road, or joining up Zipline network segments, only in my game? That doesn't seem right.
...Especially when you’ll get several “a road you rebuilt was used by someone else” notifications shortly after you complete its construction. Any logic that accounts for it all?
Response by poster: Yeah, aside from the weird notifications (“a road you rebuilt was used by somebody else” but never a user name), another phenomenon that supports the idea that roads are special-cased is the “desire paths” that (ostensibly) other players wear into the ground will follow the future path of a road, even if the road isn’t built yet and the path doesn’t make sense without it. People in my player pool are clearly already walking/driving a road that, in my game, isn’t there yet. The way those player-worn pathways develop (they never precede my arrival in a zone but also don’t seem related to the chiral network the way built objects are) could practically be a whole other askme.
Thanks for the extremely good insights!
posted by churl at 3:10 AM on December 28, 2019
Thanks for the extremely good insights!
posted by churl at 3:10 AM on December 28, 2019
I think JZig's got the basics covered. On one specific point, I asked this question on Reddit: Have you ever seen two connected ziplines from another player?. I never have, but there's one response from someone who has. My conclusion from that is the game may not be specifically preventing two adjoacent ziplines from loading, but random chance makes it unlikely.
Another way to think about the problem: they have literally hundreds of thousands of players, each dropping, oh, 100 objects in the world. That's 10M candidate objects from others of which maybe 1000 will end up in your world.
One thing I can't tell is whether all of those 10M objects are in one database and literally each one is a candidate for copying to your game, or if you're on some partitioned subset of the database so you only get objects from, say, 1000 objects. Other than regional partitioning I'm guessing it's the former, one big pool. But I don't have any evidence of it.
The system works remarkably well, doesn't it? It's one of my favorite parts of the game.
posted by Nelson at 8:50 AM on December 28, 2019 [2 favorites]
Another way to think about the problem: they have literally hundreds of thousands of players, each dropping, oh, 100 objects in the world. That's 10M candidate objects from others of which maybe 1000 will end up in your world.
One thing I can't tell is whether all of those 10M objects are in one database and literally each one is a candidate for copying to your game, or if you're on some partitioned subset of the database so you only get objects from, say, 1000 objects. Other than regional partitioning I'm guessing it's the former, one big pool. But I don't have any evidence of it.
The system works remarkably well, doesn't it? It's one of my favorite parts of the game.
posted by Nelson at 8:50 AM on December 28, 2019 [2 favorites]
I don’t have anything but guesses but I just wanted to note that I saw a piece of lost cargo spawn without knowing that could happen, and since it was during the supercell in the mountains, I thought for sure it was some new monstrosity come to destroy me in the blinding snow
posted by invitapriore at 1:15 PM on December 28, 2019 [1 favorite]
posted by invitapriore at 1:15 PM on December 28, 2019 [1 favorite]
This thread is closed to new comments.
There's definitely something going on where buildings are placed in spatial buckets on a grid (or maybe a node system tied to terrain). This is how it avoids placing network objects on top of each other or your objects, and I saw this in action a few times where I deleted a building, walked away, and a new one spawned in its place from a different owner. This is why objects in weird places get more likes: if you put a zipline in an obvious place, so did 10k other people and the likes are spread out
Once a non road object has been copied into your game, it can only be upgraded or repaired by players who have that exact object. It only starts placing objects in your game when you actually connect to the chiral network, and it populates more over time per zone until it's full. You can only get objects you've already unlocked. I know this is happening because my early zones are full of objects that are corroded because the owner stopped playing the game, and I've seen newer objects upgrade over time. Roads are doing something custom because there are so few and I think those likes may be faked.
Lost cargo is definitely pulling from a pool of people prioritized by who you manually link with. Post boxes are shared based on who has that exact object, the rest are probably just randomly distributed as you get more in popular areas than weird ones. Vehicles and ladders may use the same system. I don't think there's any cross game synching here, 10 people can deliver the same lost cargo from one player, the first one to do so would reward the original dropper.
So I'm pretty sure the backend has a database with every network object identified by a global unique key. Each player will get a random collection of those objects in their game, prioritized by your personal links, and every time any player upgrades or repairs it, it effects that instance in all games. These changes are periodically synced up and are not real time. Vehicles, ladders, and lost cargo are probably simpler where there's just a big list of placed ones and you get a random selection, but there's no persistent updating. Roads are probably special cased.
posted by JZig at 10:50 PM on December 27, 2019 [8 favorites]