RE: More Fluid
Well, I'm not exactly sure what you aren't understanding
Well, english is not my native language, so I'm just trying to make sure I understood what you were saying. Thanks for your detailed explanation, by the way.
It's also neat in that hybrids make semi supported aggro colourls like green a lot more attractive
Green doesn't become more attractive to me as an aggro color if I have two Dryad Militants or two Tattermunge Maniacs (in the case of the Maniac, not even the first one, let alone extra copies). I try to semi-support aggressive decks running green, but this doesn't do it, IMO.
I'm sure you've sat down some days, first picked a Goblin Guide and just took red cards or red multicolour cards or red fixing (but main red cards) that cost 1-4 mana in order of their power level.
Aaa... No. And I don't think anyone else does it.
I don't know about you, but for me drafting does not follow such a simplistic algorithm. I try to pick the card that gives the deck I'm drafting the better chance of winning the draft. Sometimes it's the powerful card, sometimes it's the dual land, sometimes is the Ember Hauler. I once passed Koth to pick a Rakdos Cackler while drafting mono-red; which of these two cards is the powerful one?
We see how this sorta meme within cube building has made people feel like red is shallow and has trouble getting along with other colours as well as not really being able to support big red (the whole concept underlines how often red is rammed into the sligh role) without a serious commitment to wildfire type strategies.
You sure wouldn't want a color to be able to do everything, do you? If you do, then why do we have a color pie? But this was already discussed in another thread, let me just quote you wtwlf123 on that subject:
Between red aggro/tempo, control using sweepers and dividable damage for counter-burn type decks, wildfire decks and "big red" strategies, discard outlets and sneak attack for reanimation/GY based decks, cards like Welder/Squee for Mud, and Recruiter/Looting/Gargadon type cards for BR Stax ...red does a ton of stuff in my cube, and it's certainly not pigeonholed into aggro.
Take, for instance, Flame Slash. In which archetypes do you think that card should be played?
By the same token, WW creatures have trouble fitting in a lot of decks
That's why people have been replacing them with 1W costed ones in the last couple of years.
and no one tends to want glorious anthem unless they've got all the bits and bobs of a deck no one likes drafting already and is pretty linear in the putting together.
Which deck are you referring to? White Weenie? W/X token decks?
...and what's wrong with linear strategies? They have their place in magic. Also, they help new players when they are new to drafting. I don't see what's wrong with that.
Suddenly it's a lot more like the noncomittal pick and wait and see strategic approach other cube strategies are drafted under. Not to mention players now get to fight each other in more interesting ways over the aggro creatures and the aggro decks all have a lot more easy to cast guys that allow them to branch into 2 colours a little more regularly!
I'm not sure I'm following you here. How does having 2+ Dryad Militants or Rakdos Cacklers make them noncommittal picks? And are your aggro decks mostly monocolored, for you to feel the need to include duplicates in order to "allow them to branch into 2 colours a little more regularly"? If so, I think I would like to see your list, for it should be interesting!
On topic: I am actually very happy with the trifecta we're getting with Theros (Soldier of the Pantheon, Tormented Hero, and Jackal Pump). I will gladly accept more of this type of cards from WotC, as I feel I still want more of them. And eidolon232: could you please share the algorithm you are using to calculate the number of 2-power 1CMC creatures needed? I'd like to try it, if you were to be so kind
Sure, although you might have to perform changes on multiple parts of the code to work with your configuration. The code was intended for personal use only and is not optimized for readability/ efficiency.
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class OneDrops {
private static final int CUBESIZE = 450;
private static final int PLAYERS = 8;
private static final int CARDSPERPLAYER = 45;
private static final int ONEDROPSPERCOLOR = 8;
static int[] distribution = new int[] { ONEDROPSPERCOLOR, ONEDROPSPERCOLOR,
ONEDROPSPERCOLOR, ONEDROPSPERCOLOR, ONEDROPSPERCOLOR,
CUBESIZE - 5 * ONEDROPSPERCOLOR };
// You don't have to adjust the distribution with fewer aggro colors
private static final int REPETITIONS = 100000;
private static final int ONEDROPTHRESHOLD = 7;
private static final int MAXSHAREDCOLORS = 2;
private static final boolean MYCONFIG = false;
private static final boolean DEBUG = false;
/**
* @param args
*/
public static void main(String[] args) {
run();
}
private static void run() {
int positives = 0;
List<Integer> cube = initializecube();
for (int i = 0; i < REPETITIONS; i++) {
cube = shuffle(cube);
List<Integer> pool = generatePool(cube);
if (positiveOutcome(pool)) {
positives++;
}
}
System.out.print("enough one drops for all players in " + positives
+ " of " + REPETITIONS + " drafts" + " = " + Math.round(100.0 * positives
/ REPETITIONS) + "% of the time");
}
private static List<Integer> shuffle(List<Integer> cube) {
Collections.shuffle(cube);
return cube;
}
private static boolean positiveOutcome(List<Integer> pool) {
// System.out.println(pool);
List<Integer> onesInPool = new LinkedList<Integer>();
int aggroPlayers = getNumberOfAggroPlayers();
int whiteOnes = 0;
// int blueOnes = 0;
int blackOnes = 0;
int redOnes = 0;
int greenOnes = 0;
for (int i = 0; i < pool.size(); i++) {
if (pool.get(i) == 0) {
whiteOnes++;
}
// if (pool.get(i) == 1) {
// blueOnes++;
// }
if (pool.get(i) == 1) {
blackOnes++;
}
if (pool.get(i) == 2) {
redOnes++;
}
if (pool.get(i) == 3) {
greenOnes++;
}
}
onesInPool.add(whiteOnes);
// onesInPool.add(blueOnes);
onesInPool.add(blackOnes);
onesInPool.add(redOnes);
onesInPool.add(greenOnes);
if (DEBUG)
System.out.println(onesInPool);
return canSupportAggroPlayers(onesInPool, aggroPlayers);
}
private static boolean canSupportAggroPlayers(List<Integer> onesInPool,
int aggroPlayers) {
if (aggroPlayers == 0) {
return true;
}
int oneDropsPlayer1 = 0;
int oneDropsPlayer2 = 0;
// determine player colors
int[] playerColors = getPlayerColors();
int player1Color1 = playerColors[0];
int player1Color2 = playerColors[1];
int player2Color1 = playerColors[2];
int player2Color2 = playerColors[3];
int onesP1C1 = onesInPool.get(player1Color1);
int onesP1C2 = onesInPool.get(player1Color2);
int onesP2C1 = onesInPool.get(player2Color1);
int onesP2C2 = onesInPool.get(player2Color2);
if (DEBUG)
System.out.println(onesP1C1 + " " + onesP1C2 + " " + onesP2C1 + " "
+ onesP2C2);
if (aggroPlayers == 1) {
oneDropsPlayer1 = onesP1C1 + onesP1C2;
if (oneDropsPlayer1 >= ONEDROPTHRESHOLD) {
return true;
}
}
if (aggroPlayers == 2) {
if (player1Color1 == player2Color1) {
if (player1Color2 == player2Color2) {
oneDropsPlayer1 = (onesP1C1 + onesP1C2) / 2;
oneDropsPlayer2 = oneDropsPlayer1;
} else {
oneDropsPlayer1 = onesP1C1 / 2 + onesP1C2;
oneDropsPlayer2 = onesP2C1 / 2 + onesP2C2;
}
} else {
if (player1Color2 == player2Color2) {
oneDropsPlayer1 = onesP1C1 + onesP1C2 / 2;
oneDropsPlayer2 = onesP2C1 + onesP2C2 / 2;
} else {
oneDropsPlayer1 = onesP1C1 + onesP1C2;
oneDropsPlayer2 = onesP2C1 + onesP2C2;
}
}
if (oneDropsPlayer1 >= ONEDROPTHRESHOLD
&& oneDropsPlayer2 >= ONEDROPTHRESHOLD) {
return true;
}
}
if (DEBUG)
System.out.println(onesInPool + " player1 plays " + player1Color1
+ " and " + player1Color2 + " player2 plays "
+ player2Color1 + " and " + player2Color2);
return false;
}
private static int[] getPlayerColors() {
// Color1 < Color2
int player1Color1 = 0;
int player1Color2 = 0;
int player2Color1 = -1;
int player2Color2 = -1;
if (MYCONFIG) {
player1Color1 = 0;
player1Color2 = 1;
player2Color1 = 0;
player2Color2 = 2;
} else {
// Color1 < Color2
player1Color1 = random(0, 2);
player1Color2 = random(0, 2);
while (player1Color2 == player1Color1) {
player1Color2 = random(0, 2);
}
if (player1Color1 > player1Color2) {
int tmp = player1Color1;
player1Color1 = player1Color2;
player1Color2 = tmp;
}
if (MAXSHAREDCOLORS == 2) {
player2Color1 = random(0, 2);
player2Color2 = random(0, 2);
while (player2Color2 == player2Color1) {
player2Color2 = random(0, 2);
}
if (player2Color1 > player2Color2) {
int tmp = player2Color1;
player2Color1 = player2Color2;
player2Color2 = tmp;
}
}
if (MAXSHAREDCOLORS == 1) {
player2Color1 = random(0, 2);
player2Color2 = random(0, 2);
while (player2Color2 == player2Color1
|| player2Color2 == player1Color1
|| player2Color2 == player1Color2) {
player2Color2 = random(0, 2);
}
if (player2Color1 > player2Color2) {
int tmp = player2Color1;
player2Color1 = player2Color2;
player2Color2 = tmp;
}
}
if (MAXSHAREDCOLORS == 0) {
player2Color1 = random(0, 2);
player2Color2 = random(0, 2);
while (player2Color1 == player1Color1
|| player2Color1 == player1Color2) {
player2Color1 = random(0, 2);
}
while (player2Color2 == player2Color1
|| player2Color2 == player1Color1
|| player2Color2 == player1Color2) {
player2Color2 = random(0, 2);
}
if (player2Color1 > player2Color2) {
int tmp = player2Color1;
player2Color1 = player2Color2;
player2Color2 = tmp;
}
}
}
int[] result = new int[4];
result[0] = player1Color1;
result[1] = player1Color2;
result[2] = player2Color1;
result[3] = player2Color2;
return result;
}
// TODO: use the numbers for your expected aggro player distribution
private static int getNumberOfAggroPlayers() {
// int tmp = random(1, 3);
// if (tmp == 1) {
// return 2;
// }
int tmp = random(1, 100);
if (tmp <= 10) {
return 0;
} else if (tmp <= 60) {
return 1;
} else
return 2;
}
private static List<Integer> generatePool(List<Integer> cube) {
List<Integer> pool = new LinkedList<Integer>();
for (int i = 0; i < PLAYERS * CARDSPERPLAYER; i++) {
pool.add(cube.get(i));
}
if (DEBUG)
System.out.println("poolsize " + pool.size());
return pool;
}
/**
*
* @param min
* @param max
* @return -1 if min>max, else random number between min and max
*/
public static int random(int min, int max) {
if (min > max) {
return -1;
} else {
int range = max - min;
// random number between 0 and 1
double dezimalNumber = Math.random();
// extrapolate
int integer = (int) Math.round(dezimalNumber * range);
return integer + min;
}
}
private static List<Integer> initializecube() {
List<Integer> cube = new LinkedList<Integer>();
for (int i = 0; i < distribution.length; i++) {
for (int j = 0; j < distribution[i]; j++) {
cube.add(i);
}
}
return cube;
}
}
Some people say that a society can be measured by the number of black boxes it is willing to accept. When I asked for this tool I was expecting something among the lines of your heuristic for the number of basic lands needed (as seen here)... I don't "speak" Java, but I know enough to "see" the thought process behind the tool you're building, and that was worth it. Thank you!
So... if you ever make this into a black box, please let us know
According to the statistics, I think for white and black 360 cubes have enough 2 power 1 drops (6 each +hybrids). So only red and green need some more cubeable 2 power 1 drops. For the next update, Loam Lion and Kird Ape will be cut and Wild Nacatl will be moved to green.
With the rate they've been printing 2-power 1-drops, 360 (and soon even 450) cubes won't necessarily need the more narrow 1cc beaters like Ape and Lion. I still need 1 more per color (even after Theros) for my 450, but that's because we often play with a smaller number of players. If you want 2 aggro decks in a 6 to 8-man draft with a 360 card cube, you're probably already there.
According to the statistics, I think for white and black 360 cubes have enough 2 power 1 drops (6 each +hybrids). So only red and green need some more cubeable 2 power 1 drops. For the next update, Loam Lion and Kird Ape will be cut and Wild Nacatl will be moved to green.
Opinions?
I run 360 and I'm there for Black/White starting Theros. I think I'm there for Red too. Green could use a bit more drop. I don't care about blue.
Loam Lion is already cut ever since DGM due to the awesome Voice. Kird Ape will be cut in Theros. And Wild Nacatl been in green since forever.
Well, english is not my native language, so I'm just trying to make sure I understood what you were saying. Thanks for your detailed explanation, by the way.
Green doesn't become more attractive to me as an aggro color if I have two Dryad Militants or two Tattermunge Maniacs (in the case of the Maniac, not even the first one, let alone extra copies). I try to semi-support aggressive decks running green, but this doesn't do it, IMO.
Aaa... No. And I don't think anyone else does it.
I don't know about you, but for me drafting does not follow such a simplistic algorithm. I try to pick the card that gives the deck I'm drafting the better chance of winning the draft. Sometimes it's the powerful card, sometimes it's the dual land, sometimes is the Ember Hauler. I once passed Koth to pick a Rakdos Cackler while drafting mono-red; which of these two cards is the powerful one?
There's actually a very interesting read in that topic, regarding GP Bochum '10 Top 8: https://www.wizards.com/magic/magazine/article.aspx?x=mtg/daily/eventcoverage/gpboch10/welcome#3
You sure wouldn't want a color to be able to do everything, do you? If you do, then why do we have a color pie? But this was already discussed in another thread, let me just quote you wtwlf123 on that subject:
(from this thread)
Take, for instance, Flame Slash. In which archetypes do you think that card should be played?
That's why people have been replacing them with 1W costed ones in the last couple of years.
Which deck are you referring to? White Weenie? W/X token decks?
...and what's wrong with linear strategies? They have their place in magic. Also, they help new players when they are new to drafting. I don't see what's wrong with that.
I'm not sure I'm following you here. How does having 2+ Dryad Militants or Rakdos Cacklers make them noncommittal picks? And are your aggro decks mostly monocolored, for you to feel the need to include duplicates in order to "allow them to branch into 2 colours a little more regularly"? If so, I think I would like to see your list, for it should be interesting!
-----------------------------------------------------------------------------------
On topic: I am actually very happy with the trifecta we're getting with Theros (Soldier of the Pantheon, Tormented Hero, and Jackal Pump). I will gladly accept more of this type of cards from WotC, as I feel I still want more of them. And eidolon232: could you please share the algorithm you are using to calculate the number of 2-power 1CMC creatures needed? I'd like to try it, if you were to be so kind
Former DCI L2 Judge
My old Cube podcast on ManaDeprived, with Goodking and artbcnco: http://manadeprived.com/podcasts/mtgin3d/
You can find me on Twitter as well.
Some people say that a society can be measured by the number of black boxes it is willing to accept. When I asked for this tool I was expecting something among the lines of your heuristic for the number of basic lands needed (as seen here)... I don't "speak" Java, but I know enough to "see" the thought process behind the tool you're building, and that was worth it. Thank you!
So... if you ever make this into a black box, please let us know
Former DCI L2 Judge
My old Cube podcast on ManaDeprived, with Goodking and artbcnco: http://manadeprived.com/podcasts/mtgin3d/
You can find me on Twitter as well.
Opinions?
http://www.mtgsalvation.com/forums/the-game/other-formats/mtgo-pauper/developing/647850-primer-angler-delver
Modern: Sultai Death's Shadow
http://www.mtgsalvation.com/forums/the-game/modern/deck-creation-modern/773885-sultai-deaths-shadow-bug-aggro]
Legacy: Snake&Show
http://www.mtgthesource.com/forums/showthread.php?27217-Deck-Sneak-and-Show
Discuss my Cube @ MTGsalvation:
http://forums.mtgsalvation.com/showthread.php?t=207309
My 630 Card Powered Cube
My Article - "Cube Design Philosophy"
My Article - "Mana Short: A study in limited resource management."
My 50th Set (P)review - Discusses my top 20 Cube cards from OTJ!
I run 360 and I'm there for Black/White starting Theros. I think I'm there for Red too. Green could use a bit more drop. I don't care about blue.
Loam Lion is already cut ever since DGM due to the awesome Voice. Kird Ape will be cut in Theros. And Wild Nacatl been in green since forever.
So in the other word, go for it.
My cube
My cube on Cube tutor
I'm OP_Forever. I'll be putting this in my signature for a while so everyone know I change my nickname.