Bungie-net / api

Resources for the Bungie.net API
Other
1.21k stars 92 forks source link

Cross Save Testing, and How It May affect you #956

Open vthornheart-bng opened 5 years ago

vthornheart-bng commented 5 years ago

Folks have been wondering about how cross save will affect their apps - we can't share everything yet, but this document is an attempt to share as much as I am allowed to at the present time, in preparation for testing that will begin in the upcoming weeks.

Take a look, and see how it might affect you. Know that there will be more information coming in the lead up to Cross Save launch, but this is as much as I can discuss for the time being.

https://github.com/Bungie-net/api/wiki/FAQ:-Cross-Save-pre-launch-testing,-and-how-it-may-affect-you

TorKallon commented 5 years ago

Thanks for this. We all greatly appreciate you keeping us as informed as possible.

One big question I have after reading this is: will there be a way to tell what platform the a game was played on from the PGCR? Or will we need to make an extra API call for each PGCR in other to track that?

On Fri, Jul 5, 2019 at 12:09 PM Vendal Thornheart notifications@github.com wrote:

Folks have been wondering about how cross save will affect their apps - we can't share everything yet, but this document is an attempt to share as much as I am allowed to at the present time, in preparation for testing that will begin in the upcoming weeks.

Take a look, and see how it might affect you. Know that there will be more information coming in the lead up to Cross Save launch, but this is as much as I can discuss for the time being.

https://github.com/Bungie-net/api/wiki/FAQ:-Cross-Save-pre-launch-testing,-and-how-it-may-affect-you

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Bungie-net/api/issues/956?email_source=notifications&email_token=AABVGF336DDEWV5E5NA5QILP56L7TA5CNFSM4H6NNE7KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4G5TPX3A, or mute the thread https://github.com/notifications/unsubscribe-auth/AABVGFZLBRIFETLPTX5DHRDP56L7TANCNFSM4H6NNE7A .

vthornheart-bng commented 5 years ago

Yes, so at the end of the document I mention adding membershipType to DestinyHistoricalStatsActivity - fortunately, this will be something that, once we add it in the next release, should start coming down for both PGCRs and for the ActivityHistory endpoints!

(With any luck, the BNet release next week will have it start coming down - but it's coming in hot, so I can't 100% guarantee it'll make it to next week's release boat)

bhollis commented 5 years ago

You mention that Destiny2Services.GetLinkedProfiles will return the proper Platform Memberships. Will UserService.GetMembershipDataById also include that info? I'm wondering if we need to switch over.

vthornheart-bng commented 5 years ago

Yes, you'll want to switch over - GetMembershipDataById is something you can still use for Destiny 1 info if you happen to need it, but for Destiny 2 you'll want to switch to GetLinkedProfiles if possible.

vthornheart-bng commented 5 years ago

I'll add that to the docs, as I didn't think about the fact that people might still be using GetMembershipDataById!

bhollis commented 5 years ago

Another question - will there be a way to see the "last played" platform type for a profile? This would be useful for the code we have which filters vendor items based on exclusivity (though I think I heard all exclusivity will go away?). This would also be helpful for our user reviews system, which lets people filter by platform.

vthornheart-bng commented 5 years ago

Hmm, good question - I'll look into that and see if that can be returned!

I will ask about if I can talk on the subject of exclusivity, but I can't say anything one way or the other about that aspect yet until I get a thumbs up.

bhollis commented 5 years ago

And a point of clarification, just so I completely understand what you wrote - a platform membership is one-to-one with a Destiny profile, right? Meaning given a platform membership ID, I can uniquely identify a user's profile and its (max 3) characters? In DIM we have a lot of code that uniquely identifies things based on a [platform membership ID, platform ID] tuple. But if I'm reading your doc correctly, it seems like we only need to key things on platform membership ID, since the same platform membership can't have multiple profiles.

vthornheart-bng commented 5 years ago

Yes - the Platform Membership ID will always be One-To-Zero-Or-One with a Destiny Profile, and the two cannot be separated once the Destiny Profile data is created for a Membership ID.

bhollis commented 5 years ago

Very useful! I thought of one more you may not be able to answer right now. Today we have the Blizzard platform type, but users will be automatically transitions to Steam. Will that result in a new Platform Membership ID with a new profile? Or will Steam be added to the originally-on-Blizzard profile?

vthornheart-bng commented 5 years ago

Ooh, very good question - unfortunately indeed I can't answer that one either right now, but there is a plan in the works that I think will work well for everyone, and hopefully we can share it soon.

vthornheart-bng commented 5 years ago

On the question of exclusivity, I was told it was indeed okay to mention what's up:

There will be no more exclusive weapons, armor, maps, or activities in Destiny 2 as of Shadowkeep launch. So if you have any exclusivity-related features for what vendors are giving out, you'll be able to retire those!

floatingatoll commented 5 years ago

To those of you viewing this issue that aren’t currently API developers, please keep in mind that this disclosure is extraordinarily unusual and this GitHub does not generally accept “what does the future hold?” requests — and even in this instance, it’s only because it’s an API-reared question. Please be kind to the API team here; there’s, like, 2 of them total.

On Jul 5, 2019, at 13:58, Vendal Thornheart notifications@github.com wrote:

On the question of exclusivity, I was told it was indeed okay to mention what's up:

There will be no more exclusive weapons, armor, maps, or activities in Destiny 2 as of Shadowkeep launch. So if you have any exclusivity-related features, you'll be able to retire those!

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

ArkahnX commented 5 years ago

This is fantastic information! I'm glad you were able to get a thumbs up for some of this information before it went live.

On the topic of returning the platform that the user last played on (Or is currently playing on for instance) in the API there is currently three spots (Destiny.Responses.DestinyProfileUserInfoCard, Destiny.Entities.Profiles.DestinyProfileComponent, Destiny.Entities.Characters.DestinyCharacterComponent) which return a "dateLastPlayed" property. I think adding one or both of a "currentlyActivePlatform" and "lastPlayedPlatform" property to those responses would work?

floatingatoll commented 5 years ago

I have a couple of clarifying questions here (I’m not Bungie):

If I have accounts linked for Xbox, PS4, and PC, then what would you want to be returned for my “current” platform? Is your question focused solely on “which PC platform is this user bound to”?

For “last played platform”, that would be available from their latest PGCR, if it doesn’t end up being added to their account statistics board by Thorn before launch. What feature in an API client would depend on this data — when that client isn’t already parsing every PGCR for statistics?

On Jul 5, 2019, at 16:22, Christopher Hall notifications@github.com wrote:

This is fantastic information! I'm glad you were able to get a thumbs up for some of this information before it went live.

On the topic of returning the platform that the user last played on (Or is currently playing on for instance) in the API there is currently three spots (Destiny.Responses.DestinyProfileUserInfoCard, Destiny.Entities.Profiles.DestinyProfileComponent, Destiny.Entities.Characters.DestinyCharacterComponent) which return a "dateLastPlayed" property. I think adding one or both of a "currentlyActivePlatform" and "lastPlayedPlatform" property to those responses would work?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

vthornheart-bng commented 5 years ago

That would be great, I dig that suggestion as long as we can get it back! I'm 95% sure we can get that info back.

vthornheart-bng commented 5 years ago

With last played platform, I think that'd be more for current info is my guess as to how it'd be useful, like a "where are your friends playing right now" situation. I was combining the idea of a current and a last played in my head for this purpose - and if we're talking live data, indeed they'd have to be. If you are actively playing, I'm pretty certain we can get back that data - and I"m fairly certain we can get the last one you played on if you're not playing. But what I couldn't get is the platform you played on in your previous session if you're currently playing. It'd just be "whatever we saw last" essentially.

But all of this depends on whether we can get it back - I'm pretty sure we can get "current". I'm feeling less confident about "last".

floatingatoll commented 5 years ago

In essence, “Most recently observed platform from the most recent PGCR” would probably be doable, but anything depending on data older than the most recent PGCR not?

On Jul 5, 2019, at 16:36, Vendal Thornheart notifications@github.com wrote:

With last played platform, I think that'd be more for current info is my guess as to how it'd be useful, like a "where are your friends playing right now" situation. I was combining the idea of a current and a last played in my head for this purpose - and if we're talking live data, indeed they'd have to be. If you are actively playing, I'm pretty certain we can get back that data - and I"m fairly certain we can get the last one you played on if you're not playing. But what I couldn't get is the platform you played on in your previous session if you're currently playing. It'd just be "whatever we saw last" essentially.

But all of this depends on whether we can get it back - I'm pretty sure we can get "current". I'm feeling less confident about "last".

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

vthornheart-bng commented 5 years ago

Yes, in theory we could go back and do that - but that'd require us to hit PGCRs every time someone requested live Destiny data, so we won't do that. If there's some highly specialized apps that really, REALLY want to know what you've been playing historically, they could go for that!

cowgod commented 5 years ago

I have a couple of clarifying questions here (I’m not Bungie): If I have accounts linked for Xbox, PS4, and PC, then what would you want to be returned for my “current” platform? Is your question focused solely on “which PC platform is this user bound to”? For “last played platform”, that would be available from their latest PGCR, if it doesn’t end up being added to their account statistics board by Thorn before launch. What feature in an API client would depend on this data — when that client isn’t already parsing every PGCR for statistics?

My application would be an example of one that would need to know "last played platform" but isn't concerned with PGCR's -- my "GunsmithBot" Slack/Discord bot lets users show off the roll on a piece of gear they have equipped. They can specify the platform, but as a convenience, if they leave it off, it'll load the platform they played on most recently. So that feature would be very useful for me.

vthornheart-bng commented 5 years ago

Ah, okay - so in your case, if we can return you whatever they're currently playing or the last thing we saw them play, that'd work for you? I will put it on the list of things to look into, thank you!

cowgod commented 5 years ago

Yep, that'd be very helpful. Of course I can always make a separate API call to load their most recent PGCR, but this would help avoid that.

floatingatoll commented 5 years ago

Thorn — I really meant "last thing we saw them play" by my thing, so your phrasing is better :) Thanks for fielding my weird questions, both!

On Fri, Jul 5, 2019 at 4:45 PM Dan McCormack notifications@github.com wrote:

Yep, that'd be very helpful. Of course I can always make a separate API call to load their most recent PGCR, but this would help avoid that.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Bungie-net/api/issues/956?email_source=notifications&email_token=AAAWUDAJF2A5ISFNOG6YEPDP57MJDA5CNFSM4H6NNE7KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZKOOSQ#issuecomment-508880714, or mute the thread https://github.com/notifications/unsubscribe-auth/AAAWUDEKMJUER7V7744VEFDP57MJDANCNFSM4H6NNE7A .

vthornheart-bng commented 5 years ago

Ah, sweet! <3 They're always good clarifying questions, I appreciate them!

ArkahnX commented 5 years ago

My thoughts on the "active" platform is the same as cowgod, for instance certain weapons are more desirable on PC vs console (PS4 XBOX), so if a player in a post cross save world uses their PS4 account to primarily play PC, itd be nice to show them PC related stuff rather than console

To edit after some re-reading: last played platform would certainly only be useful when "not" actively playing, so I think just presenting a single property "lastActivePlatform" or something, and you can check the "dateLastPlayed" / "currentActivityHash" properties to see if they are active or not

ckhicks commented 5 years ago

Just dropping in to say thank you for all this, Thorn. So very appreciated. I was going to ask several of the previously mentioned questions around "currently playing" and so forth, so this has been super helpful already.

Edit: @vthornheart-bng are you allowed to say a little more about how Cross Save will impact Clan affiliation for accounts that aren't the primary save? Will there be any way to see the status of those accounts so we can clean up and make room for more members, etc.? (Shot in the dark: any chance the 100-member limit will be lifted?! 😄 🙏 🤞)

vthornheart-bng commented 5 years ago

Excellent, I'm glad this is helpful!

With the non-active accounts, they aren't going to be removed automatically from Clans (as there are some logistical problems on our side with this, along with the potential concern that someone might want to still participate in a clan as a member for social reasons even if their account isn't active: we didn't want to make a judgment call about whether or not someone should still belong to the social aspects of the clan just because they might not play Destiny with that account anymore). but we're actively working on determining what we can return in the Clan call in case . That's all still TBD at the moment, but it is actively in progress.

As a workaround until then, you'll be able to make a call to GetLinkedProfiles if you are looking to do something like show users as having inactive accounts, auto-drop inactive accounts, etc...

vthornheart-bng commented 5 years ago

@ArkahnX Aye, I'll look into the feasibility of that! I get the feeling we may be able to provide it, but I don't have a firm answer to that right at the moment.

ghost commented 5 years ago

Will there be query parameters for stats endpoints and the main activity endpoint to only pull data for a specific platform?

Weapons perform differently when using m/k so someone's console KD may be drastically different than their PC KD. If someone wanted to get someone's KD for games play on PC only, it'd be more efficient if they didn't need to grab someone's entire crucible play history and crunch the numbers themselves.

vthornheart-bng commented 5 years ago

Good question! The stats endpoints that accept membership IDs as parameters are all keyed off of that membership ID - the membership type are performed. Unfortunately, we won't be able to split the cross saved users' aggregate stats up per platform.

If you're using PGCRs or GetActivityHistory, you will have access to the membershipType for the game that was played, and so will be able to decide if those are relevant for your use case.

ghost commented 5 years ago

Ok. I'll need to make a loader for non-clan members in my server then. It'd be way too many API calls to calculate 5000 people's PC only KDs twice a day.

floatingatoll commented 5 years ago

Does this also mean that in-game K/D emblems will show a consistent single value for all play on a given cross-save account, regardless of what platform most recently played it?

(I ask only because that K/D value on emblems - for example - is exposed in the API, and so if it will fluctuate each time someone switches platforms, that’s important to know. This would apply to “X matches won” or any other emblem counter too.)

vthornheart-bng commented 5 years ago

It'll be a single value and won't change per platform.

mistahj67 commented 5 years ago

I believe those emblem based stats are not obtainable via the API post Forsaken / Collections.

vthornheart-bng commented 5 years ago

Oh, as in you can't get them unless you have an actual instance of the emblem? That is something I've been meaning to look into, but Cross Save and other work has been taking priority. I do feel that'd be useful to provide if possible. I just can't guarantee that it is unfortunately (both due to time and technical constraints)

floatingatoll commented 5 years ago

If you could open a TFS for “let us see those stats in collections”, that would remove a lot of the need for stats from the API team.

But, I only meant “for a single emblem that is in the character’s inventory before and after a platform transfer”.

vthornheart-bng commented 5 years ago

I dig that - I get the feeling that it's in the backlog, though I don't have time immediately to check on it.

Oh yeah, unfortunately on that front I don't think I'm able to speak on that at the moment. That's one of those things that I think the Community Team and Player Support will have to talk about before I'm allowed to talk about it - about what happens with numbers like that during the actual act of cross saving.

floatingatoll commented 5 years ago

Yep, not expecting a reply so much as “make sure you and they look into it before launch” :) cheers and good luck!

vthornheart-bng commented 5 years ago

Aye, thanks!

ckhicks commented 5 years ago

@vthornheart-bng Can you clarify how the Activity History will work once we select a primary platform for our Bungie.Net Membership/Account?

For example: user selects their D2 account but also had D1 history on a different Platform Account. Let's also say that they had both properly linked to their existing Bungie.Net Membership/Account since the beginning.

Does the record within their Bungie.Net Membership/Account show the age of their account as dating back to D1, or does it only use the selected Platform Account and say they have been around since D2?

floatingatoll commented 5 years ago

Are you trying to determine whether a given D2 character was imported from D1?

And/or

Are you trying to confirm if a given D2 account also played D1?

ckhicks commented 5 years ago

The latter - mainly wanting to understand how a membership account will or will not reflect the history of platform account(s). 🤔

vthornheart-bng commented 5 years ago

Whatever the account you select is showing for the account age today, it will continue to show that after cross-save. Whatever Destiny Profile you chose as your primary, the age and activity history it had before you chose it will remain as the age and activity history it will have after the choice is made.

kramrm commented 5 years ago

Is it just me, or is the wiki not working for this repository? EDIT: I'm having errors on other repositories as well. Maybe a GitHub issue?

vthornheart-bng commented 5 years ago

Oh, as in you can't access it?

floatingatoll commented 5 years ago

Re: Wiki — there was a GitHub outage this morning — not specific to this repo, all better now.

kramrm commented 5 years ago

Thanks. Wiki here is working now. As soon as I saw other repos giving odd errors I figured it was a larger outage.

cowgod commented 5 years ago

@vthornheart-bng Just checking in, since a few weeks ago you said you hoped that soon you could share more about how the move to Steam will be handled. Is there anything more you can share at this point? I'm very interested to start wrapping my head around those changes, like how will users be uniquely identified, since Steam usernames aren't unique. Any info you're authorized to share would be welcome

vthornheart-bng commented 5 years ago

Totally a good question - let me check with folks and see what I can say at this point!

vthornheart-bng commented 5 years ago

Okay, nothing I can report just yet. Stay tuned!