Hi!
In our game we've identified an edge case that could possibly happen but in testing we haven't been able to get it to happen.
Our game is not server authoritative so we store a local copy of the user's progress locally so they can play offline. If we're online, we'll also sync this data to the server so they can play on different devices and not lose progress if they uninstall.
The edge case is this:
- I play on Device A with my Account with PlayFab ID A. Progress is saved locally and also on the server. My Device is Linked to this account.
- I then play on Device B and since it's a new device, i had a new account with PlayFab ID B. I go through the menus and opt to login to my Account with PlayFab ID A. Doing so causes us to LoginWithEmail to PlayFab ID A and then call LinkDevice with force link set to true so that Device B is not associated with PlayFab ID A.
- I had assumed this meant my Device A was unlinked from PlayFab ID A but maybe that's not the case?
- I go back to Device A and launch the game. I would have expected to get a brand new PlayFab ID since the device is no longer linked but instead it just logs me into the PlayFab ID A account.
- I then thought this maybe is because the session ticket is still valid?
- So i then waited 25 hours so it could expire, yet again i was logged into the PlayFab ID A account.
So potentially our edge case isn't possible depending on how PlayFab works.
Would anyone be able to shed some light on this?
Our thought was that if we log in and get back a PlayFabID that differs from the one that we stored locally. Ex, log in with Device ID and get back PlayFabID of C when our local data on the Device has PlayFab ID of A, we should allow the user to try and login to PlayFab ID A's account explicitly via Email/Facebook etc. But now we're not sure if this is ever possible?
Thanks,
Jon