{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2607-04782","title":"Predicting Drafted Deck Strength for \"Magic: the Gathering\"","arxiv_id":"2607.04782","date":"2026-07-06","proceeding":null,"authors":["Tomas Rigaux","Hisashi Kashima"],"abstract":"Many real-world games do not admit a fixed, compact rule set: instead, their dynamics are defined by interactions among a large and often evolving collection of game pieces, making general-purpose policy learning impractical. Magic: the Gathering (MTG) exemplifies this setting, where the cards themselves define and alter gameplay rules, strategic constraints, and long-term outcomes, while the pool of available cards is ever-changing. We study Draft, a constrained deck-building format of MTG in which eight players make 39-45 sequential selections from semi-random packs to construct a 40-card deck under partial information. By isolating the card selection process from gameplay, Draft provides a tractable yet non-trivial setting for studying decision-making driven by combinatorial card synergies. We propose an encoder-based model that produces set-contextualized card embeddings to encode the draft decision sequence, with a consistent improvement over linear baselines on large-scale real-world data, establishing a first learned benchmark for outcome prediction in MTG Draft. Our code is available at github.com/akulen/MtGDraftEncoder.","url_abs":"https://arxiv.org/abs/2607.04782","url_pdf":"https://arxiv.org/pdf/2607.04782","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2607.04782","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2607.04782"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/akulen/MtGDraftEncoder","reach":null}],"summary":{"ran":8,"unverified":6},"by_repo_kind":{"found_in_text":{"samples":14,"ran":8,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":14,"samples":[{"code_sha256_prefix":"1edde3a6f1e69850","entry":"AlternatingResidualAttention","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1edde3a6f1e69850"}},{"code_sha256_prefix":"07da873576b6689f","entry":"Cards","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"07da873576b6689f"}},{"code_sha256_prefix":"635bf25705187e24","entry":"Drafts","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"635bf25705187e24"}},{"code_sha256_prefix":"1f5cba5e644dda1c","entry":"MLPLayer","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1f5cba5e644dda1c"}},{"code_sha256_prefix":"ac9ac9fa8da0de90","entry":"MultiheadAttentionLayer","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ac9ac9fa8da0de90"}},{"code_sha256_prefix":"0e3489c76a6765f9","entry":"PackAttention","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0e3489c76a6765f9"}},{"code_sha256_prefix":"133c105998685c9c","entry":"ResidualLayer","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"133c105998685c9c"}},{"code_sha256_prefix":"80f5abb08390db8c","entry":"Sets","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"80f5abb08390db8c"}},{"code_sha256_prefix":"a03b1b818ba84bdf","entry":"BatchedData","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a03b1b818ba84bdf"}},{"code_sha256_prefix":"7ebfdc3ff063f945","entry":"CardPreProcess","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7ebfdc3ff063f945"}},{"code_sha256_prefix":"63f7a0cb0e841b47","entry":"DraftTransformer2","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"63f7a0cb0e841b47"}},{"code_sha256_prefix":"622990c01cf8673b","entry":"DraftWRPredictor","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"622990c01cf8673b"}},{"code_sha256_prefix":"5d2e5c6d1efb866a","entry":"ModelLayer","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5d2e5c6d1efb866a"}},{"code_sha256_prefix":"814a00881b98dea2","entry":"SetContext","repo":"akulen/MtGDraftEncoder","repo_kind":"found_in_text","path":"models/draft_attention.py","file_url":"https://github.com/akulen/MtGDraftEncoder/blob/HEAD/models/draft_attention.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"814a00881b98dea2"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}