taw / magic-preconstructed-decks

Magic: the Gathering Preconstructed Decks
6 stars 9 forks source link

Constructed products with their own code vs expansion code #9

Closed magreenblatt closed 5 years ago

magreenblatt commented 5 years ago

Constructed products sometimes have their own product code, and this data is currently applied inconsistently to directory names. For example:

Some decks have cards from multiple sets (as we've discussed in a previous issue) so I think it makes more sense to list all decks under their own code, if one exists, instead of a single expansion code.

I've filed a related issue [3] with MTGJSON.

[1] https://mtg.gamepedia.com/Challenger_Decks [2] https://mtg.gamepedia.com/Rivals_Quick_Start_Set [3] https://github.com/mtgjson/mtgjson/issues/215

taw commented 5 years ago

RQS cards are not same as 4ED cards, they have different copyright year, so you can instantly tell which is which. Back then there were no codes on the cards.

Challenger decks seem to use card numbers and codes from their main set. As far as I can tell there are no cards with Q01 code.

Overall, I'm not sure this is a problem.

magreenblatt commented 5 years ago

I didn’t know about the different copyright year on RQS cards, thanks for pointing that out. I guess the MTG Wiki is wrong about this.

Challenger Decks are currently listed under “rix” (Rivals of Ixalan), when in fact they contain cards from Kaladesh and Amonkhet. I don’t think it’s correct to list them under a single expansion set code (and especially not rix), because the cards don’t all come from a single set. That’s why I suggested using the deck product code (q01) instead.

taw commented 5 years ago

If we did that Q01, then we'd have to create like a hundred "products", since every Standard-legal precon contained cards from multiple sets. There's nothing special about challenger decks. RQS was unusual, but that got sort of grandfathered in.

Deck indexer in mtg.wtf should correctly resolve those ambiguities, annotating which card is from which set - the algorithm is pretty much:

For example you can see end result at http://mtg.wtf/deck/rix/hazoret-aggro - using information from this repo, information from (mtgjson-based) index, and this algorithm, it resolves all cards correctly. One thing it notably doesn't deal with is figuring out exact mix of basics, just picking one of them from the right set, but I don't think there's any reasonable way to do that, and people probably don't really care about exact basics terribly much. (also fails to use 2 different Brothers Yamazaki etc.)

This functionality is currently in different repository due to circular dependency we'd otherwise have. I'd like to maybe get rid of this circularity somehow so there can be standalone json exports of deck information, but I'm not sure how to do that.

Generally http://mtg.wtf/deck should all be correct.

magreenblatt commented 5 years ago

Thanks for the explanation. My interest in having an accurate “product” set is mostly as you describe: (a) to know which set to begin matching against (e.g. if the set is listed as “rix” then I expect most cards to come from rix), and (b) to get an accurate release date at which to start matching the missing cards (e.g. find the card in the set closest to and proceeding the release date). I’ll look at the other data sources that you mention and see if they help.

taw commented 5 years ago

mtg.wtf deck indexer already does that matching.

It compiles information to https://raw.githubusercontent.com/taw/magic-search-engine/master/index/deck_index.json - but these numbers refer to this.

If you just want to consume data, these two files are the simplest way to get everything - just lookup by number (only minor issue will be split / dfc cards). I guess I could add some command to export it all together.

magreenblatt commented 5 years ago

I see what you mean about problems matching basic lands (and presumably other common cards that are reprinted frequently). Looking at http://mtg.wtf/deck/rix/hazoret-aggro it's showing a basic land (Mountain) from RIX, likely because RIX was released January 19, 2018 and Challenger Decks were released April 6, 2018. So, even listing Challenger Decks as Q01 wouldn't fix this problem because it would still find RIX as the most recent proceeding set.

taw commented 5 years ago

Closing since this repo and mtgjson now have agreed upon solution.