#So what's the actual explanation for the disconnection between players in Co-Op?
15 messages · Page 1 of 1 (latest)
How technical would you like me to get
the crux of it is this
SO
this is more complicated in multiplayer
but if someone attempts to load an addressable asset on one machine while the host says "ok it's time to go to the next level now, start to clean up" OR there's something in the previous level that isn't cleaned up OR performance fluctuations cause us to miss a trigger OR there's a random cosmic radiation / packet loss that causes us to miss a trigger then we run into this issue.
the host needs to load two scenes at the same time. The Server scene, and then their local client scene. The server scene should happen first, but clients can accidentally get caught in this deadlock for the reasons above.
Basically, we've tried to shave down load times as much as humanly possible, but it's actually come to bite us. Without us adding any manual delay to wait for people to catch up, we can run into this problem.
Of course, we'd prefer to keep load times as quick as possible and not add forced delays, so we've used lots of tricks to avoid it until now, but testing on lots of different hardware has shown that we weren't as slick as we thought. For now, I'm combating it by chomping down on any logs I get, tidying up the code of whoever is thinking about loading assets during a scene load, and then hoping for the best. But it's going to take some serious time and effort for a more foolproof solution.
is that also the reason everyones game locks up in mutiplayer if one fails to load
if the host fails to load everyone is hosed yes
But sadly this is a core problem with the Unity addressables library. It's how we keep the game small sized on your hard drive, and load times fast, but it is dangerous for this reason. If unity ever makes a version that fixes this bug we don't have to worry about it but that's not the world we live in
any way to rescue from the error, i mean, i'd rather run into an extra load time due to an error then lose an entire run, that or if you had a save at each room and continue runs (sounds space expensive ;-))
you wait for the patch this afternoon and hopefully I've fixed them by adding in a load time in multiplayer to wait for your allies to load
and cleaned up some references
sounds good