How to Play or Host a Grid Draft

Kirblinx

Developer
Staff member
These are the way that I have been running my grid drafts. While other hosts may vary, I feel this is a good guideline on how to participate in a grid draft. If you are looking on how to host your own grid drafts then check out the next post below.

How to Participate in a Grid Draft
0. Required Software
Magic the Gathering: Online (please make sure it has been updated)
Google Docs (should just require an internet browser but here is the doc link I use, as you may need to install an app as well to get it running)
Notepad (or anything that can save a text file)

1. Initiate Contact
You want to grid draft? That's cool. Check the Forum Games forum (where this guide should be) for any 'Open Thread' grid drafts. If you see one from a cube that you would like to draft, then message the person by either posting in the open grid draft thread, or by sending a PM to the person.

We will then try and organise a time that works for us both and when that time comes get ready for a little bit of pain, for a whole lot of fun!

2. Open all Relevant Windows
First thing would be to either open MTGO or Skype to be able to chat freely with the host. They will then throw you the link to the google docs spreadsheet.
You may as well open Notepad as well just so you don't need to find it later. So what to have open:
  • MTGO
  • Google Doc for draft picks
  • Grid draft thread
  • Notepad
3. Draft!
Go to the grid draft page and open up the first pack. You get to pick a row or column, once you have decided, there is some easy to copy text below. Copy your pick and paste it into the google doc.

Example Pack:
Pack 1




Row 1:
1 Dismal Backwater
1 Devour Flesh
1 Mogg War Marshal

Row 2:
1 Lumberknot
1 Champion of Lambholt
1 Tragic Slip

Row 3:
1 Executioner's Capsule
1 Lorescale Coatl
1 Pestermite

Column 1:
1 Dismal Backwater
1 Lumberknot
1 Executioner's Capsule

Column 2:
1 Devour Flesh
1 Champion of Lambholt
1 Lorescale Coatl

Column 3:
1 Mogg War Marshal
1 Tragic Slip
1 Pestermite
xitfrfz.png


Alternate first picks with your draft partner every pack until you have seen every pack. Be sure to not copy any card that your opponent has taken (if you picked second in that pack).

4. Getting the List into MTG:Online
Now the pain begins. The next step is to cloudshift, which requires going to https://cloudshift.firebaseapp.com/. This helps versionize your draft list to make trading easier. You also need a copy of the hosts card database (I keep mine in a pastebin link in my google doc, Jason and Safra have theirs as default in cloudshift).
Put the hosts card database in the left box and your draft list into the right box, then hit submit.
8a6x55Q.png

Copy the output (the bottom box) into a notepad and save it as whatever you like. Make sure you know where you put it.

5. Getting the Cards/Building your Deck
I have now made a video of this process since people seem to miss a couple of things each time, hopefully it makes things more straightforward:
Now onto the text version:
Now to go to MTGO. Go to the collection tab and import a deck (it is down in the bottom left corner).
gC4fYdB.png


Choose your text file you just saved and it should import all the cards into a freeform deck.
9epJSYQ.png


Now to make trading back easier we are going to save a deck of all the cards you are going to borrow. To do this we need to make a wishlist. To do this right-click in the body of your deck you just imported and select 'add missing cards to wishlist'.
3ux45NK.png


Now in the 'Decks & Binders' column on the right, select the Binders tab.
You now need to right-click on 'Wish List' and choose 'Export'. Save the list somewhere that you will remember (I usually name it BorrowedCards.txt) as this is what you will use to trade back easily.
9fBEULi.png


If you notice in your wishlist that you have cards in there that you didn't draft (maybe you already had some cards in your wishlist), then you will need to clear your wishlist and repeat the process again to make sure you are only taking the cards that you need.

You can then initiate a trade with the host. Once in the trade, go to the top left and pick 'Search Tools', then in the next pop-up click 'Select Wishlist'. This will automatically add all of the cards you didn't have to the trade.
Yd9ShXt.png
RfX5lr1.png

Submit the trade and once it is completed you should be fine to go back to the collection tab, open up the deck you imported and start moving cards around.

DO NOT DOUBLE-CLICK THE CARDS IN THE DECK. This throws the cards back into your collection and you will need to import the deck again to get them back (unless you remember what they were). Just Click and drag the cards you don't want in your deck to the sideboard. Decks auto-save so once you have built a deck you are happy with and added your won basic lands, to are good to go.

6. Play!
Tell the host you are ready and once they are done they will initiate a game with you. Then try and beat them to a pulp!
Play as much as both of you are up for (but watch that clock, it can cause some problems) as you may as well make that trading process worth the effort. Then once you have had enough it is time to give the cards back.

7. Giving the Cards Back
So remember that text file I told you to save of your wishlist? We are going to turn that into a trade binder to trade back. So go to the 'Collection' tab once again. Now you need to add a binder.
zHmQzLi.png


And import the wishlist you saved earlier. Make sure to make it active.
8NNpqMd.png


Then once that is done, initiate a trade with the host. They should be able to select everything in that binder to take back, which should be exact same number of cards that they gave to you.

8. Share your Experience
Post your deck in the forums! Say what epic decisions you made to throw the opponent off. All this data can be handy to others so please share what you can.


There you have it. I know this is fairly similar to the How to Participate in a Riptide Draft guide but I thought there were enough differences to make a different guide. Hopefully this should help breakdown what you need to do into manageable chunks so it isn't so overwhelming.
 
I'll reserve this post for the 'how to host'. I will do it one day. Trust me.

I gotcha

host-specific instructions:

1) Prepare a google doc in advance. Make sure that your partner can edit it, too: click the blue 'Share' button in the top right. Then you're going to want to get a shareable link, and give anyone with that link edit priveleges. Send it to your draft partner, and from there you can draft as outlined above.
Q96JsLH.png


3) Next, open a new binder in the bottom left corner. Make your Collection tradeable, and be sure to make it the active trade binder! If it's a 4c grid draft, I like to set the binder image to the colour that's been cut from the draft. It just makes them a bit more useful to look back on. You can name the binder whatever you want. The default name it gets from the list is fine.
A74y9XV.png


4) Open a trade with your partner in MTGO. They'll accept it, and hit 'Select Wishlist', at which point all the cards they need should whoosh right over to their side of the trade. Submit the trade, and note how many cards were traded in the chat window. Something like '46 out' is fine, it's just to have a record.

Okay, that's the hard part over! Now you need to import your own draft list and build your deck. Don't double click on any cards, just drag them to and from your sideboard. Adding basic lands is as simple as picking the basics you want from your Collection.

Once you're both ready, you'll want to challenge your opponent. Right-click on their identity somewhere in MTGO - their icon in the Home screen if you're Buddies or both in the same clan, their name in a chat window otherwise - and select 'Challenge Player'. Choose the deck you built (it's probbaly under 'Freeform'), set 'Watchers Allowed' to True, and then hit OK.
bJb4IuG.png


5) Play your games! When you're done, have them open the list they prepared earlier as an active binder and open a trade. You should be able to ctrl+a and select all the cards in their binder, and then drag them into the 'You Will Receive' bucket. Confirm that it's the same number of cards you noted earlier (you may need to drag twice for duplicate cards), and then confirm the trade. Double-check the Cube is safe and snug against an existing list, and then make sure to post your decklist in the draft thread. You did it!
 

Kirblinx

Developer
Staff member
2) Get your partner's saved tradelist. They generated it earlier, in step 5. You can use Pastebin (have them send a link to the Cloudshifted paste over MTGO chat, at which point you need to open Notepad, paste it, save the file somewhere you'll remember) but that's a method of last resort. Instead, get them to transfer it to you over Skype, or download it from a small download site. 4shared works fine.


I never do this step. I just have a binder that is my entire cube and put it up for trade. If they have imported their wishlist correctly then they should only be taking the cards they need anyway. I mean, it is nice to have a copy of the cards they have taken (which to be perfectly honest, you can make yourself from the google doc anyway) but it isn't really needed.

The main problem is the fact that people have some of the cards in their collection already. Then they get really confused when they import a wishlist and there is only ~30 cards instead of the 45 they drafted.

So by the host doing the opponents decklist import you are essentially bypassing the saving wishlist export method in my step 5. As by doing this you give them all the cards in their deck, then you rely on them to give back all the cards (just requires making the deck into a binder).

My method makes makes them take only the cards they require (they may already have some in their collection) and then give those back. This puts more strain on the host, and by hopefully getting the wishlist export method implemented in the 8-mans should make it a bit easier.

To be honest I am not sure which way is better, but that is part of the reason why I posted this guide, which was to see if we can make the most efficient trading process possible (as it is the main problem).
 
No, the idea was to give the host the wishlist file. Making the account inventory tradable is probably the smoother option.
 

Kirblinx

Developer
Staff member
Grillo has asked how I make the grid draft threads, so I thought I would help him out and anyone else who is curious (Feel free to add to this Safra, since you and Jason are the only other ones who know how).

How to Make a Grid Draft Thread
Easy method, PM me. I'll do it all for you :p
Now onto the hard method

0) Required Software
R Software Environment (https://www.r-project.org/)
Rstudio (https://www.rstudio.com/products/rstudio/)
JRE & JDK (http://www.oracle.com/technetwork/java/javase/downloads/index.html)
Spreadsheet Software (Excel or Google Sheets)

Install each of these. Some people may already have JRE & JDK but since I needed to install them on my fresh PC I thought I would add the step in.

1) Setting up a Spreadsheet
The code that we use takes data from a spreadsheet that we give it. It needs to be setup the correct way so the code can read it. Here is a link to the current spreadsheet I use. So you only need the first two columns, and name them Card and Color Identity. Here is an example:
obzVSgM.png


Then you just need to put your entire list in Column A and attach a colour identity to each card. This will help omit cards when doing say, a non-green draft. The colour identities are W,U,B,R,G,C. You can put more than one colour identity on a card for example:
y8irkRg.png


As you can see from this screenshot setting the colour identity is all about what gets cut in drafts. I have decided to make one of the each of the bouncelands colourless to allow off-colour bouncelands appear in non-X drafts. This allows for maximum density of bouncelands. It also allows you to give something like Stenchskipper a colour identity of BR, as it is pretty terrible in a non-red draft where there are no goblins etc.

Once you have your entire list in then your spreadsheet is complete. Time to start mucking around with code.

2) Setting up RStudio
Once you have installed RStudio and the Java supplements (JDK/JRE), we need to install a package so it can read the excel files. Got to Tools -> Install Packages...
yK2DI3e.png


Then a window will pop up. You will need to type 'xlsx' in the field 'Packages':
DLaU7uR.png

Then just click install and now RStudio should be able to process the following R Code without causing any error messages.

2.5) Dealing with R code
So this code was designed by Jason. I have slightly tweaked it to work with my list. Here is a code dump for people to get started:
Code:
library(xlsx)
 
nPacks <- 16
 
fileName <- list.files(".", pattern = ".xlsx")
cubeDf <- read.xlsx(fileName, sheetIndex = 1)
colorIds <- as.vector(cubeDf[, 2])
cube <- as.vector(cubeDf[, 1])
length(cube) <- 360
 
# select colors
colorToOmit <- "R"  # sample(c("W", "U", "R", "B", "G"), 1)
 
colorList <- strsplit(colorIds, split = NULL)
rowsToKeep <- rep(1, length(cube))
for(i in 1:length(cube)){
    if(colorToOmit %in% colorList[[i]]|is.null(colorList[[i]]))
        rowsToKeep[i] <- 0
  }
 
cube <- cube[which(rowsToKeep == 1)]
 
# seed in temples
shocklands <- c("Temple of Deceit", "Temple of Trumph", "Temple of Abandon",
        "Temple of Epiphany", "Temple of Silence", "Temple of Mystery", "Temple of Plenty",
        "Temple of Malice", "Temple of Malady", "Temple of Enlightenment")
shockIds <- which(cube %in% shocklands)
 
gridPile <- cube[shockIds]
cube <- cube[-shockIds]
 
gridPile <- c(gridPile, sample(cube, size=9*nPacks - length(shockIds)))
gridPile <- sample(gridPile)
pack <- gridPile[1:9]
 
printPack <- function(pack, i) {
    cat("Pack", i, "\n", file="gridDraft.txt", append=TRUE)
    cat("[spoiler][ci=small]", pack[1], "\n", pack[2], "\n", pack[3],
            "[/ci]", "\n", sep="", file="gridDraft.txt", append=TRUE)
    cat("[ci=small]", pack[4], "\n", pack[5], "\n", pack[6],
            "[/ci]", "\n", sep="", file="gridDraft.txt", append=TRUE)
    cat("[ci=small]", pack[7], "\n", pack[8], "\n", pack[9], "[/ci]", "\n",
            "\n", sep="", file="gridDraft.txt", append=TRUE)
 
    cat("Row 1:\n1 ", pack[1], "\n1 ", pack[2], "\n1 ", pack[3], "\n \n",
            sep="", file="gridDraft.txt", append=TRUE)
    cat("Row 2:\n1 ", pack[4], "\n1 ", pack[5], "\n1 ", pack[6], "\n \n",
            sep="", file="gridDraft.txt", append=TRUE)
    cat("Row 3:\n1 ", pack[7], "\n1 ", pack[8], "\n1 ", pack[9], "\n \n",
            sep="", file="gridDraft.txt", append=TRUE)
    cat("Column 1:\n1 ", pack[1], "\n1 ", pack[4], "\n1 ", pack[7], "\n \n",
            sep="", file="gridDraft.txt", append=TRUE)
    cat("Column 2:\n1 ", pack[2], "\n1 ", pack[5], "\n1 ", pack[8], "\n \n",
            sep="", file="gridDraft.txt", append=TRUE)
    cat("Column 3:\n1 ", pack[3], "\n1 ", pack[6], "\n1 ", pack[9],
            "\n[/spoiler]",
            sep="", file="gridDraft.txt", append=TRUE)
}
 
cat("Grid Drafting!", "\n", "\n", file="gridDraft.txt")
for(i in 1:nPacks) {
    pack <- gridPile[1:9 + (i-1)*9]
    printPack(pack, i)
}
You can save this in a text file and call it gridDraft.R (make sure you get rid of the .txt extension) and you now have some R grid draft code!
The next step is to open it in RStudio. You can do this by going into RStudio and going File->Open File... and picking your gridDraft.R. Then you should end up with something like this:
1f5bq2G.png


So this things to take note are the things I have circled. In BLUE is the spreadsheet you made in step 1. This area is defaulted to your documents folder, so if you just copy your spreadsheet into there it will appear in this window. In RED is the output text file where the data will appear. This will not appear until you have run the code once. The GREEN circle is probably the only thing you will ever change in the code. This is the colour to omit, so just change it to W, U, B, R or G depending on what you want to draft. Once you have chosen the colour to omit you just need to run the code.

To run the code I use the shortcut of CTRL+ALT+R. Or if you want to click on it, you need to go: Code->Run Region->Run All.

Then once it is run you need to open up the gridDraft.txt file (in the RED circle in the picture above).

3) Post to Riptide Forums
Now for the easiest step. Just copy the contents from the gridDraft.txt file and post into a new grid draft thread (name it appropriately so we know what cube and what colours are in the draft). Now you are pretty much done with the easy part. The hard part is going to be finding someone to draft it with you :p

ASIDE: The Seeding Code
So in the code there is some seeding being done, where a specific set of cards are being forced to show up in the draft. In Jason's case it was Shocklands. In my case I have chosen the temples:
Code:
# seed in temples
shocklands <- c("Temple of Deceit", "Temple of Trumph", "Temple of Abandon",
        "Temple of Epiphany", "Temple of Silence", "Temple of Mystery", "Temple of Plenty",
        "Temple of Malice", "Temple of Malady", "Temple of Enlightenment")
shockIds <- which(cube %in% shocklands)
I have yet to alter it to have a working set of code with no seeding function. Plus everyone likes it when you ensure mana fixing occurs in every draft right? You can add whatever you want into the seeding list and it will appear in any draft where its colour wasn't omitted. Could be helpful if you want to test some new cards or something. You just assure they appear in the draft, not when. Could come in the last pack, which would be handy :p
 
Top