-
Notifications
You must be signed in to change notification settings - Fork 92
FAQ: Cross Save pre launch testing, and how it may affect you
Cross Save won’t be enabled for widespread use until later this year, but a small set of test accounts are going to be conducting a test in the live Destiny system starting in early July. This means that API users will have to account for some of these changes early.
For many use cases there aren’t significant changes from an end-user perspective. However, some uses of the data will likely have more difficulties than others. This document attempts to outline the changes that we anticipate may impact API users, how you might be impacted, and what if any workarounds we can recommend. We will attempt at a later date to talk in greater detail about how Cross Save works and the larger implications of Cross Save on API features aside from those that might potentially break expectations for people who currently use the API.
First, let's go over some basic terms and concepts that will be helpful for this discussion. Most of this will be review for API veterans, but it'll help to get us all on the same page for the terms and concepts we use in the rest of the document.
Bungie Account: Represents a user and all of their Linked Platform Accounts, as well as any Bungie.Net Membership information that they have. This is purely conceptual: the API will always refer to one or more of the Platform Memberships or the Bungie.Net membership for any actions that you perform in relation to a user. See the diagram below.
Bungie.Net Membership/Account: A membership that represents you and your activity on Bungie.net. It is created and accessed exclusively by joining Bungie.net through one of our supported Platforms, and allows multiple Platform Accounts to be linked together. It is also the Membership that holds Bungie.net specific data such as your Forum post history, Group memberships, etc. All Destiny players that want to activate Cross Save will need a Bungie.net membership, and should Link all of the Platform Accounts that they wish to have participate in Cross Save. Your users should sign up today at Bungie.net if they haven’t already, to prepare themselves for the upcoming change.
Platform Account: An account that you own and can play Bungie games on, such as Xbox, PSN, Steam, Stadia etc. Such Accounts can be Linked into a Bungie.Net Membership, allowing you to log into Bungie.net with any of those platforms’ credentials, as well as allowing those accounts to participate in Cross Save together.
Platform Membership: Bungie’s representation of a Platform Account on which you may (or may not!) play Destiny, and which you may or may not Link to other Memberships through Bungie.Net. Note that, once you interact with Destiny in a meaningful way, (playing the game, joining a Clan on Bungie.net, participating in Cross Save etc) you will be given a “Membership ID” that you can then use to acquire your Destiny Profile data. Until one of those actions happens, you may Link a Platform Account but you won’t yet have a Membership ID with which you can acquire Destiny Profile information.
Platform Membership ID: The unique identifier, assigned by Bungie, for a specific Platform Account. It is created and assigned once an action has occurred for that account in a Bungie system that requires such an ID. This would include joining a Clan, playing Destiny for the first time with that Platform account, or participating in Cross Save. Until then, a linked Platform Account can be used as a credential for login to Bungie.net, but it won't have a Membership ID of its own. Note that, if you don't have a Membership ID for any linked Platform Accounts when doing Cross Save, one will be created for you.
Destiny Profile: A set of Destiny Characters and Platform Membership-wide state data that was originally created for and played on a given Platform.
Linking: On Bungie.net, multiple Platform Accounts can be joined into a single Bungie.net account. Those Platform Accounts are said to be “Linked”. Only Memberships that are Linked may participate in Cross Save.
Currently, all Membership IDs have an associated Membership Type: up to now, this has represented the platform on which a profile plays. After cross save, Membership Types will no longer be able to meaningfully tell you what Platform a given Profile plays on: only the Platform on which it was originally created.
Our endpoints will still return this data, and our endpoints will still require you to pass it forward: but as time allows, new endpoints that we write and hopefully existing ones will be converted such that they no longer require the Membership Type. And as you’ll see in the next section, though Membership Type is no longer the one-stop-shop for what platform a Profile plays on. The applicableMembershipTypes property being added to GetLinkedProfiles' response, as detailed below, will get you more appropriate information in a post-Cross Save world.
By default, the primary entry point for valid Destiny Profiles on a Bungie Account (Destiny2Services.GetLinkedProfiles) will not return all of an accounts' linked Destiny Profiles if they are in a cross save pairing state. It will only return any Profiles that can still be played on at least one platform after Cross Save is enabled. The details of what brings an account into this state via Cross Save is unfortunately not something we can share at this time, but for your purposes the end result is that you may suddenly see some accounts not return the full set of Destiny Profiles that they once did by default.
GetLinkedProfiles has a new querystring parameter that you can pass if you need all memberships, including ones that can no longer be played: pass “getAllMemberships=true” as a querystring parameter to obtain all memberships.
These unplayable Destiny Profiles will still be able to be queried for directly using their membership and character IDs, and can even still have write actions performed against them if needed: however, it is recommended that you refrain from showing unplayable Profiles unless you have a compelling reason to do so, as players will no longer be able to use those Profiles in the game itself.
If you are using UserServices.GetMembershipDataById, now would be a good time to switch your implementations to use GetLinkedProfiles. It should both reduce the number of calls you need to make to get relevant data, and it will return you only memberships with actual, valid Destiny Profile data instead of all possible memberships (which may or may not have Destiny Profile data). It will also be the primary way to get Cross Save information, which we are not planning on adding to GetMembershipDataById.
There are other new fields that will be coming with Cross Save to show you additional details about a profiles' status, but for compatibility purposes the most important data to know is what Platforms a given Profile can play on. This will be found in the Linked profiles data. DestinyLinkedProfilesResponse contains a new "applicableMembershipTypes" property. This is the list of all Membership Types (for our purposes, Platforms) on which this Profile can play Destiny. If a Profile is not cross saved, it will be the memberships’ original platform. If it is engaged in Cross Save, it will be a list of all platforms on which it can play. If it is no longer a playable Profile due to Cross Save, it will be empty.
In Cross Save, what DLC a profile shows becomes a bit more complicated. Because DLC is a purchase intrinsically tied to a Platform, the existing “versionsOwned” field on DestinyProfileComponent will be deprecated for any account that is cross save paired. We are still working on the backend for how this data will be returned, and will be able to share more information about this at a later date; but for now know that you may see inconsistent version ownership data on these test accounts, and that alternatives for this data will be revealed at a later time.
There have been questions about Clans and its status in Cross Save. Though we can't talk at length yet about the implications for Clans in cross save, apps with Clan features should prepare for the fact that in Cross Save, all Destiny Profiles (whether they can still be played or not) will remain in their existing Clans.
Note that, when you join a Clan, you join with the Membership for a specific Destiny Profile – which means that your Clan membership is intrinsically tied to that profile, wherever it goes and wherever it plays.
Activity history in cross save will be much as you might expect: activities you played in are played on a specific Destiny Profile, and they will forever stay with that Destiny Profile even if it plays on multiple platforms. So if you play with a given Destiny Profile on Xbox today, and then tomorrow play on PSN, you’ll have two games in your history – one from Xbox, and one from PSN, but both tied to the same Destiny Profile. You’ll also still be able to access activity history for profiles that have been overridden.
An important change for some API users is returning correct information about what platform a given game was played on. It is possible that some API users may depend on knowing the platform on which a given activity was played, and up to now that was easy to infer based on the Membership Type of players in the activity. However, in the post-cross-save world those membership types will still be their original ones, so we need to expose new information that more specifically indicates the platform on which it was played if we want people to continue to have such information.
Our current proposal is that we will add a membershipType property to DestinyHistoricalStatsActivity. This is coming in late and will not be available immediately when we activate testing, but should be available within a couple of weeks when we next do a Bungie.net deployment in July. Since that will not be available immediately, you may experience some situations where you see PGCRs with mixed membership types and will have no conclusive field to say the platform on which they played. This is a known issue that will occur during the start of this testing period, and I apologize for any inconvenience this may cause. Applying heuristics such as “what’s the majority of players’ membership type” will likely work for this test period, as the number of accounts in this test will be very low.
UPDATE: There is a deeper bug in the stats system that will cause us to not be able to return this data as of Cross Save launch. The fix is tentatively slated for post-Shadowkeep launch, so there is going to unfortunately be a period of at least a few weeks where you will have to retain the heuristic approach mentioned above. I apologize for the inconvenience this causes. The fix, when it comes in, will not be able to save the lost data about the platform on which the game was played, which means that games played during this time period that involved cross save participants will not have platform information.
Write actions such as Transfer, Equip, etc... are all endpoints that infer the membership ID you're talking about based on the Membership Type that you pass in. You'll notice that there's no parameter in any of these endpoints to pass a membership ID.
Future revisions of these endpoints will allow more explicit entry of Membership ID to make how it is used more obvious in a post-cross-save world, but when those will come into existence is TBD. For now, if you are calling write actions you will need to pass the original Membership Type for the Membership ID that you want to perform actions against in endpoints where we only allow the passing of Membership Type. The Membership Type in these situations will not be overridden by Cross Save, and will map to the original Membership ID of the linked Destiny Profile for that Platform.
Currently, if you are performing gamertag search with SearchDestinyPlayer, by default we return the Membership ID and Destiny Profile that were originally associated with that gamertag, and not the active Destiny Profile that can play with that gamertag's account. You may have noticed this if you search for some of these test users who have already been cross saved. This allowed user search to continue returning historical accounts, but would make for extra work for apps that want to show current rather than historical information.
We are making plans at the moment to return the currently active Cross Save Membership ID/Destiny Profile instead if you have cross save enabled. This does mean that, by default, gamertag search will no longer find accounts made inactive by Cross Save.
This will simplify the workflow for those of you (including us) who only want to see the currently active Destiny account for a gamertag/platform name.
For those of you who want to do gamertag/platform name searches for the historical/inactive accounts, we will add an option to the search for your use case. A new "returnOriginalProfile" querystring parameter will be added. If that's set to true, you will get the original destiny profile - if any - for that gamertag/platform name.