I'm unsure what's on the table for the upcoming Collections API for Forsaken, but I just wanted to express some desires of things I would like to see, from either Collections or other APIs:
TWAB mentioned this:
Current season Eververse items which have not been acquired will display in the Collections interface until the end of the season. Past season Eververse items which have not been acquired will not display in the Collections interface. This prevents players from having incomplete Collections that cannot be completed.
It would be great to get some kind of visibility data around this. Perhaps in combination with definitions (again, unsure what any of this will look like), it would be nice to have an attribute on live collections data to say "hey, the game is going to hide this from the user, but you can show it if you want". Maybe even like a "pastEvent" key or something that then we can apply our own heuristics on to decide whether to show or hide.
Cheers! 鉂わ笍
Good stuff!
For weapon ornaments in collections: you'll be able to get at it, but not as conveniently as would be ideal. The collections data is really huge: like multiple MB of data if we were to return it all kind of huge. You'll be able to get at ornament objective data (and other item instance information), but we're not going to return it from the normal GetProfile calls. I'm going to encourage people to only query for that information in situations where you're showing - for instance - a detail page to a user.
The idea of returning objective data for all possible items is a compelling use case as well, but it would also run into the problem of it being a large amount of expensive-to-process data on our side. I'll give it some thought though. It won't be there for Forsaken for sure, but let's keep this on the back burner. We've got to balance the features we return with the resources we have available on our side (in this case, server infrastructure and bandwidth), and I'll need to think through whether we'd ultimately regret exposing it from that perspective.
For the Eververse items: I need to find out more myself about how they're intending to implement that in the future. If they're straight-up removing it from the collections game content, I can't make any promises. But if they're leaving it but hiding/obscuring it, that becomes more feasible. I'm not actually certain what the plan is for that at the moment, I will have to investigate!
I will note that there's something to be said about the desire to not show those items - I can see the argument where showing someone something they can never possibly get doesn't actually help and only has the potential to harm. I don't know if it'd be technically possible for us to return that Eververse data... but we'll also have to weigh that concern before we decide if we would return that data. I'd rather not add a feature to the API that would only cause harm to people (for example, would give completionists anxiety, or encourage people to compulsively buy eververse items because they would always see them as missing on a site like DestinySets if they don't. I'd hate to see that happen to anyone, and would like to avoid that if at all possible)
I'd rather not add a feature to the API that would only cause harm to people (for example, would give completionists anxiety, or encourage people to compulsively buy eververse items because they would always see them as missing on a site like DestinySets if they don't. I'd hate to see that happen to anyone, and would like to avoid that if at all possible)
Can't overstate how much I appreciate your mindset on this. As someone who considers myself a collector, thank you! The decision to hide unobtainable items in the Collections UI was honestly pretty exciting to me when I read that in the TWAB. Whether or not you guys land on providing the option to reveal it in the API or not is fine, but the fact that you are thinking about the user's concern over seeing unchecked boxes that can never be checked is much appreciated :)
<3 Aye, I'm glad they made that decision on the game side as well. I still need to look into how they're doing it - whether they get removed from collections entirely or what. But the more I think about this, the more I don't like the potential downsides that would come with showing this data.
If they don't remove the entries from collections data entirely, it may not be technically possible for us to stop returning the data in a form that someone _could_ make a view of all of it without us removing them from people who actually collected the items as well. The inability to do this is due to the separation of static definitions from "live" data: if anyone can still have collected those items and see them in the collections, then the data will be and must still be in the definitions, and there's not much we can do about someone deciding to use that to make a more "full" view. On the companion at least however, we won't show them.
But if that ends up being the case and we can't purge the raw data in a way that would hide uncollected past seasons data from users, I do encourage all of you who will make Collections features to consider honoring the game's state. There is a very real potential for harm for folks with compulsive or completionist tendencies, even though the desire to expose/show it all comes from a place of good intentions... and the more I think about it, the more I think that harm would outweigh whatever extremely minor good (if any? I can't really think of how it would improve anyone's experiences) that could come from showing those items. I urge and plead with you to take this under consideration.
Okay, I got more info - and indeed, they can't really get rid of them entirely from game data because we have to still show the ones you did get, which means our static definitions will still have them and there's not much I can do short of redacting all Eververse collectibles from the API entirely once the season is over (both obtained and unobtained) or fundamentally changing the way we return API data (neither of whom are really feasible unfortunately... the former is more feasible than the latter at least, though it may be upsetting for people for other more obvious reasons).
So given that, I will encourage all of you reading this and using the API: please think about the implications of showing this data to folks. The last thing I'd want to see is people getting themselves into harmful situations to try and fill out these Eververse collections. Consider that very real potential for actual harm versus a very minimal (if any?) potential for good that someone would get by continuing to see those items, and in that light please consider not showing them. I will see to it that our app and site, at the least, does not show them. I hope you will all do the same.
So will items that are no longer obtainable have some sort of property indicating that? I'm assuming so otherwise there would be no way to sort them out.
On that front, would it be possible to put in a request to have data for when something will no longer be obtainable added to the collections api? (or definitions) something like "no longer obtainable after such and such date" Obviously this wouldn't be filled with data all the time, but closer to the end of a season when it is known what will be gone, itd be great to know exactly what was going away from game data versus word of mouth
Yeah - so there's going to be a property in the Live data that will refer to the state of the item as "obscured" - I'll try to go over that when I make a document about changes to the API next week. If you honor that property by obscuring the item, that should do the trick! I'll also look into whether I can add that data to the static definitions, though I'm not sure if I'll have a static way of knowing that (i.e. I may only be able to have that knowledge live, at runtime)
I won't be able to provide dates for when things are unavailable for sure - as I don't think I'll even know that information ahead of time. But you'll at least have the live data source above, and hopefully a static way of knowing if I can figure out a way to know that without relying on live server state.
I think the live data should reflect what the game says you have available, then the static data in the definitions could possibly reflect "obscured" for all possible things that could be no longer obtained?
How it works currently is that the live data is the only way we know that state, because it was built very generically using player state information. However, I have some tricks that I sometimes can use along with some configured assumptions to "fake" knowledge of it in the static definitions. It depends a lot on how they built the data though... so I can't promise that I'll be able to provide it in the static definitions. But I'll try, as it would be nice for people to know these items are permanently obscured without even having to query live data.
@vthornheart-bng Really appreciate your heart for the die-hard collectors in all this. With great power comes great responsibility!
This sounds perfect! My assumption was that the static definitions would contain all data, and I hoped the live API would explicitly tell us if items are 'obscured' or something like that, rather than trying to infer that state ourselves.
Just to clarify - It's my intention to, at least by default, hide unavailable items on DestinySets.com. I would actually love to do that now, but with no automated way of doing that it's a bit unfeasible. Aside from that though, I just wanted to stress that the biggest thing I'm excited from this API is an easier way to categorise items and provide sources for, and it would be a shame if the redaction of previous season items made that harder for me to do. It's still valuable, from an organisational POV, to know that an item came from a previous season.
But I'll try, as it would be nice for people to know these items are permanently obscured without even having to query live data.
This would be very nice.
Items might also come back at some point, so having a flag that can be flipped also makes sense for those.
Okay, so ultimately it looks like I'm not going to have a consistent enough way to return that data about whether something will be permanently obscured... which leaves us with the suggestions above as our only recourse! Sorry that I can't provide more, but hopefully this discussion has been helpful for all of us - it certainly has for me!
I'm going to close this for now, since there's not more I can do.
Most helpful comment
This sounds perfect! My assumption was that the static definitions would contain all data, and I hoped the live API would explicitly tell us if items are 'obscured' or something like that, rather than trying to infer that state ourselves.
Just to clarify - It's my intention to, at least by default, hide unavailable items on DestinySets.com. I would actually love to do that now, but with no automated way of doing that it's a bit unfeasible. Aside from that though, I just wanted to stress that the biggest thing I'm excited from this API is an easier way to categorise items and provide sources for, and it would be a shame if the redaction of previous season items made that harder for me to do. It's still valuable, from an organisational POV, to know that an item came from a previous season.
This would be very nice.