General Solo Draft Format (brainstorming)

Jason Waddell

Administrator
Staff member
I've never played Hearthstone, but somehow it's entered my brain that they have a solo drafting format. I was thinking about creating something like that for MTG. Currently it would just be in super prototype phase, but could develop from there.

Basic ideas:
X packs each containing Y cards (say, 35 packs of 5-6?)
Big potential card pool (tons of random cards from draft sets, not just cube quality. Load it with those "low power card" spotlight cards, cards that aren't even discussed.

Each card is tagged. Power level, color, type, function, "archetypes"
Certain packs will have guaranteed properties (land packs, a PW pack, gold packs)

Now here is the big idea. The weighting of the cards (how likely they are to be included in a pack) evolves as you draft. Take a bunch of {R}, {G} and {B} cards? Then your gold pack will be more likely populate with Rakdos, Golgari, Jund etc cards. If you get lured by some madness cards, you'll be more likely to find support in the later packs. If you're committing to a mono-color deck, the land packs would be more likely to have mono-color picks like cycling lands.

If you have a huge card pool, your draft format would allow for a super broad number of types of decks. I think ideally the power level for this type of thing would be somewhere in the ballpark of at-or-below Eldrazi Domain in general, with decently powered cards but room for creative synergies.

Weighting would have to be such that it's not overly strong. Don't want it to be drafting on autopilot. The tricky thing is, since color matters so much in Magic, you actually want to narrow in on color pretty hard as the packs advance. If you're heavily in Jund colors 2/3rds of the way through the draft, you would just ignore the {W} and {U} cards that come along. Off-color cards would become increasingly downweighted. The idea is: early packs, you're open and can choose from the whole pack. Late draft, you're committed, but still want to have a full pack to be able to choose from.
 
This seems like a very interesting system for testing out experimental archetypes and themes in a cube environment under "best case scenario" conditions. Kinda like throwing an "ideal" sealed deck together but you actually draft it out.
 

Jason Waddell

Administrator
Staff member
This seems like a very interesting system for testing out experimental archetypes and themes in a cube environment under "best case scenario" conditions. Kinda like throwing an "ideal" sealed deck together but you actually draft it out.


Yes, that could be one application. The idea in my head is to have a big card pool (1000+ cards) that is largely unstructured, and let random chance / player choice dictate how they want to navigate through that pool.
 
So, I really like this as an alternative to normal magic drafting or sealed. However, as cool as the idea is, it seems like it could be time consuming to implement. I'm assuming it would require some kind of program if you want self updating packs based on the drafter's choices. I can do things in C, VBA, and matlab (lol) to varying degrees of competency. None of those would be ideal for this. However, I'm not sure there's a route that won't involve quite a few hours of work to get things working smoothly.

And I don't want to sound too negative about this. Its definitely an interesting mental exercise. But the more things that get added, the harder it will be to do.
 

Jason Waddell

Administrator
Staff member
So, I really like this as an alternative to normal magic drafting or sealed. However, as cool as the idea is, it seems like it could be time consuming to implement. I'm assuming it would require some kind of program if you want self updating packs based on the drafter's choices. I can do things in C, VBA, and matlab (lol) to varying degrees of competency. None of those would be ideal for this. However, I'm not sure there's a route that won't involve quite a few hours of work to get things working smoothly.

And I don't want to sound too negative about this. Its definitely an interesting mental exercise. But the more things that get added, the harder it will be to do.

Yeah, I mean, my first take was going to be in R (because that's what I know), using just a subset of my cube as a test bed. I am positive it would be time consuming to implement (annotating the cards, weighting parameters, etc.), which I'm find with, as long as the potential end product isn't time consuming to use.
 

Aoret

Developer
Could see if Ben from CT would be willing to share his data from that card tagging project? (Or is that run by someone else and he's using it? Either way it saves a lot...)
 

Jason Waddell

Administrator
Staff member
Yeah, may be useful eventually.

For now I was thinking about how to handle color distribution with a weighting scheme. First idea: something Bayesian.

Simple approach: imagine you have a bag with 2 tokens for each color (2 red, 2 green, etc.). Whenever you put a card in a pack, you select a token at random from the bag, and then sample a card of that color (tokens go back in the bag). Then, whenever you draft a card, you put a token of that color into the bag. This way, over time, the cards you see will be in your colors with increasing likelihood. (in this method, about half of the cards would be on-color after ~10 ish picks. If you want to change that, you can adjust the ratio of tokens starting in the bag to tokens added to the bag with each pick).

There would need to be some fidgeting involved based on colorless cards, how to handle gold packs (I have ideas here), but that's the basic idea.
 

Jason Waddell

Administrator
Staff member
Code output below, very rough first cut:
Code:
> pack <- samplePack(cube, bag, cardsPerPack)
                    Card ColorIdentity
1              Shriekmaw            B
2        Fact or Fiction            U
3      Koth of the Hammer            R
4 Spirit of the Labyrinth            W
5            Frost Walker            U
> bag <- c(bag, pack[3, "ColorIdentity"]); deck <- c(deck, pack[3, "Card"]); cat("pick = ", pack[3, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Koth of the Hammer
 
              Card ColorIdentity
1 Fleshbag Marauder            B
2        Hellrider            R
3      Frost Walker            U
4        Pyroclasm            R
5        Strip Mine            W
> bag <- c(bag, pack[2, "ColorIdentity"]); deck <- c(deck, pack[2, "Card"]); cat("pick = ", pack[2, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Hellrider
 
              Card ColorIdentity
1        Shriekmaw            B
2    Staggershock            R
3  Become Immense            G
4 Deathrite Shaman            G
5 Brimstone Volley            R
> bag <- c(bag, pack[2, "ColorIdentity"]); deck <- c(deck, pack[2, "Card"]); cat("pick = ", pack[2, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Staggershock
 
                    Card ColorIdentity
1          Demonic Tutor            B
2 Inquisition of Kozilek            B
3          Searing Blaze            R
4            Skinrender            B
5      Fleshbag Marauder            B
> bag <- c(bag, pack[3, "ColorIdentity"]); deck <- c(deck, pack[3, "Card"]); cat("pick = ", pack[3, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Searing Blaze
 
                Card ColorIdentity
1 Tuktuk the Explorer            R
2      Radiant Flames            R
3      Vampiric Tutor            B
4      Primal Command            G
5  Hero of Bladehold            W
> bag <- c(bag, pack[1, "ColorIdentity"]); deck <- c(deck, pack[1, "Card"]); cat("pick = ", pack[1, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Tuktuk the Explorer
 
                        Card ColorIdentity
1              Radiant Flames            R
2        Malicious Affliction            B
3              Hell's Thunder            R
4 Alesha, Who Smiles at Death            R
5            Obstinate Baloth            G
> bag <- c(bag, pack[3, "ColorIdentity"]); deck <- c(deck, pack[3, "Card"]); cat("pick = ", pack[3, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Hell's Thunder
 
                        Card ColorIdentity
1        Lightning Berserker            R
2 Thalia, Guardian of Thraben            W
3                Gravecrawler            B
4        Abbot of Keral Keep            R
5        Spectral Procession            W
> bag <- c(bag, pack[4, "ColorIdentity"]); deck <- c(deck, pack[4, "Card"]); cat("pick = ", pack[4, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Abbot of Keral Keep
 
                    Card ColorIdentity
1        Hell's Thunder            R
2          Bone Shredder            B
3 Champion of the Parish            W
4        Reckless Charge            R
5        Wretched Anurid            B
> bag <- c(bag, pack[4, "ColorIdentity"]); deck <- c(deck, pack[4, "Card"]); cat("pick = ", pack[4, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Reckless Charge
 
                Card ColorIdentity
1  Geralf's Messenger            B
2 Silverblade Paladin            W
3    Phyrexian Arena            B
4        Growth Spasm            G
5    Pillar of Flame            R
> bag <- c(bag, pack[5, "ColorIdentity"]); deck <- c(deck, pack[5, "Card"]); cat("pick = ", pack[5, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Pillar of Flame
 
                      Card ColorIdentity
1        Goblin Bombardment            R
2 Sheoldred, Whispering One            B
3          Harness by Force            R
4              Prison Term            W
5              Gravecrawler            B
> bag <- c(bag, pack[1, "ColorIdentity"]); deck <- c(deck, pack[1, "Card"]); cat("pick = ", pack[1, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Goblin Bombardment
 
                    Card ColorIdentity
1        Porphyry Nodes            W
2      Keldon Marauders            R
3 Champion of the Parish            W
4    Thundermaw Hellkite            R
5        Mark of Mutiny            R
> bag <- c(bag, pack[2, "ColorIdentity"]); deck <- c(deck, pack[2, "Card"]); cat("pick = ", pack[2, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Keldon Marauders
 
                  Card ColorIdentity
1      Rakdos Cackler            R
2    Consuming Vapors            B
3    Greater Gargadon            R
4      Radiant Flames            R
5 Stormblood Berserker            R
> bag <- c(bag, pack[1, "ColorIdentity"]); deck <- c(deck, pack[1, "Card"]); cat("pick = ", pack[1, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Rakdos Cackler
 
                  Card ColorIdentity
1            Magma Jet            R
2  Lightning Berserker            R
3 Stormblood Berserker            R
4        Tribal Flames            R
5        Spell Pierce            U
> bag <- c(bag, pack[3, "ColorIdentity"]); deck <- c(deck, pack[3, "Card"]); cat("pick = ", pack[3, "Card"], "\n\n"); pack <- samplePack(cube, bag, cardsPerPack)
pick =  Stormblood Berserker
 
                  Card ColorIdentity
1  Abbot of Keral Keep            R
2    Chandra's Phoenix            R
3 Bonfire of the Damned            R
4    Goblin Bombardment            R
5    Chandra's Phoenix            R
 

Jason Waddell

Administrator
Staff member
Basically, I wrote a function to update the bag and create packs. Did the above listed method, and took the red card every time, then after 13 picks got a mono-red pack. It's a very naive approach: I don't remove cards from the pool when they are drafted, and there are no guidelines for certain packs to be powerful or gold or whatever (here I didn't even have any lands or gold cards or artifacts in the card pool).

Deck after 13 picks:
> deck
[1] "Koth of the Hammer" "Hellrider" "Staggershock"
[4] "Searing Blaze" "Tuktuk the Explorer" "Hell's Thunder"
[7] "Abbot of Keral Keep" "Reckless Charge" "Pillar of Flame"
[10] "Goblin Bombardment" "Keldon Marauders" "Rakdos Cackler"
[13] "Stormblood Berserker"

So probably I need to make there be:
a) less strong sampling adjustment based on cards taken
b) some sort of incentive to go into other colors

On the positive, this method was going to net me a deck that wasn't just a steaming pile. It's a start.
 
If I'm not mistaken, isn't the 'inverse' of this process a nifty little draft bot? As in, as the bot makes picks, it narrows down what it 'wants' to be seeing in the same 'pack bag' approach, and looks for that in subsequent picks. Etc. Etc.

Neat.

Edit: this as a drafting thing does sound super fun! Would be a good way to versus online right? Because each player can draft at will?
 

Jason Waddell

Administrator
Staff member
If I'm not mistaken, isn't the 'inverse' of this process a nifty little draft bot? As in, as the bot makes picks, it narrows down what it 'wants' to be seeing in the same 'pack bag' approach, and looks for that in subsequent picks. Etc. Etc.

Neat.

Edit: this as a drafting thing does sound super fun! Would be a good way to versus online right? Because each player can draft at will?

Right. Theoretically you would just have a site online people could draft at, then could hop on and battle it out between decks whenever they like.
 

Onderzeeboot

Ecstatic Orb
Yeah, may be useful eventually.

For now I was thinking about how to handle color distribution with a weighting scheme. First idea: something Bayesian.

Simple approach: imagine you have a bag with 2 tokens for each color (2 red, 2 green, etc.). Whenever you put a card in a pack, you select a token at random from the bag, and then sample a card of that color (tokens go back in the bag). Then, whenever you draft a card, you put a token of that color into the bag. This way, over time, the cards you see will be in your colors with increasing likelihood. (in this method, about half of the cards would be on-color after ~10 ish picks. If you want to change that, you can adjust the ratio of tokens starting in the bag to tokens added to the bag with each pick).

There would need to be some fidgeting involved based on colorless cards, how to handle gold packs (I have ideas here), but that's the basic idea.

I like this approach. Should there be a way to remove a token from the bag? Maybe halfway through the draft, remove the tokens of each color that has less tokens than a certain threshold?
 

Jason Waddell

Administrator
Staff member
I like this approach. Should there be a way to remove a token from the bag? Maybe halfway through the draft, remove the tokens of each color that has less tokens than a certain threshold?


Yeah, that could be useful. I've been playing with a couple ideas.

1) sampling without replacement

Say we have our initial pack, WWUUBBRRGG. If we sample without replacement, we cap the initial packs at a max of two cards of a color per pack. Initial packs tend to be more diverse this way (well, all of them actually). It also affects later packs of course.

2) ignoring the first token of a color put into the bag (e.g. a token only gets added starting from the second red card you pick)

this may ultimately be unnecessary, but I thought I'd play with it. It was originally based on the idea that I want the influence of picking a card to be a bit delayed (your packs don't become mono-red as quickly), but it also allows you to dabble on early picks and not have overly diluted packs later on


Some issues I am already encountering when using my cube: let's say at a certain point you start seeing 2-3+ cards of a color. At a certain point, you will see all the cards of that color (if you only have ~50 cards per color). This suggests to me that you want a huge card pool to allow for sufficient exploration and replayability (or smaller packs?).

Also, even though you can use gold packs to incentivize players to dip into other colors, what I am realizing is that you really want there to be variable card power here. Something to make you say "oooh, I want that!". If everything is kind of similarly powered, the tension can be lacking. This may be a byproduct of me just doing test drafts with no real investment though.
 

Jason Waddell

Administrator
Staff member
Another thought: there should maybe be some correlation matrix between archetypes. Like, if you take Spells-Matters cards, you probably want other Spells Matters cards, but you also want spells. Madness wants self-discard. I mean, maybe Delver should just have the "spells" tag and the "spells matters" tag. As we've seen in various graveyard threads, there are different types of graveyard effects.
 

Onderzeeboot

Ecstatic Orb
For trademark reasons you probably want to stay away from the 3 cards per pack, but I think 4 is feasible? What you could do is start with a bigger bag (somewhere around 10 per color?), and then when you draft a card, remove all tokens that don't share a color with the current or previous drafted card from the bag, and add another token of the chosen color to the bag.
Start -> 10W 10U 10B 10R 10G
p1: WURR -> Pick R -> 9W 9U 10B 11R 10G
p2: WBRG -> Pick G -> 8W 9U 9B 11R 11G
p3: WBRR -> Pick B -> 7W 9U 10B 10R 11G
p4: UUBR -> Pick R -> 7W 7U 10B 11R 10G
p5: WBRG -> Pick B -> 6W 7U 11B 11R 9G
p6: UBRG -> Pick B -> 6W 6U 12B 10R 8G
p7: WRRG -> Pick G -> 5W 6U 12B 8R 9G

etc. ?

Maybe you should look back 2 picks? Anyway, this looks a good deal more complicated than your current formula.

Or maybe you want to remove a number of chips equal to the root of the number of rounds that a color wasn't picked? It's easy to think of complicated rules :)
 

Jason Waddell

Administrator
Staff member
For trademark reasons you probably want to stay away from the 3 cards per pack, but I think 4 is feasible? What you could do is start with a bigger bag (somewhere around 10 per color?), and then when you draft a card, remove all tokens that don't share a color with the current or previous drafted card from the bag, and add another token of the chosen color to the bag.
Start -> 10W 10U 10B 10R 10G
p1: WURR -> Pick R -> 9W 9U 10B 11R 10G
p2: WBRG -> Pick G -> 8W 9U 9B 11R 11G
p3: WBRR -> Pick B -> 7W 9U 10B 10R 11G
p4: UUBR -> Pick R -> 7W 7U 10B 11R 10G
p5: WBRG -> Pick B -> 6W 7U 11B 11R 9G
p6: UBRG -> Pick B -> 6W 6U 12B 10R 8G
p7: WRRG -> Pick G -> 5W 6U 12B 8R 9G

etc. ?

Maybe you should look back 2 picks? Anyway, this looks a good deal more complicated than your current formula.

Or maybe you want to remove a number of chips equal to the root of the number of rounds that a color wasn't picked? It's easy to think of complicated rules :)


If I were to do something like this, I think it'd have to be more simple, e.g. after 10 picks, take away one chip of each color. It's not so important at the moment really. Probability mechanisms are easy to tweak, I think the bigger question is: what kind of behavior do you want your draft to have?

Regarding a "power level" column, maybe it's easiest to just use WOTC's Common / Uncommon / Rare / Mythic delineation.

This type of format is probably good for sprinkling in mechanics like Devotion.
 
What if you just chose or were randomly assigned 3 colors? You'd only get those 3 colors, gold cards in only those colors, etc. so that all picks in all packs are relevant. If you want other colors, draft again!
 
Top