Okay! So, sampling completed. For the record, the parameters for the network were "-rnn_size 512 -num_layers 4 -dropout 0.2 -seq_length 200 -gpuid -1", and the data set contained 7702 real creatures and an additional 15000 vanilla and french vanilla creatures generated algorithmically in a way that preserved the relative distribution of colors, CMCs, power/toughness values, etc. I sampled the network at temperature 0.78 and generated a total of 11102 creatures (about 2 megabytes worth of text data). So, the question is, how do these creatures, on average, compare to the real creatures of Magic: The Gathering?
First, let's look the break down of the number of creatures at different CMCs. Here's a bar chart that illustrates the difference between the real cards and the generated cards. As you can see, the bar charts for real and generated cards look virtually identical. This means that, say, a 4 CMC creature is just as likely to appear in the generated set as it is to appear in the real set of cards. Not bad!
Next, we can consider the breakdown by color. Here's a graph for that (for all combinations of colors up to size 2). We observe that...
* all monocolored choices are equally likely in the generated card set, but this is actually not the case in the real card set because among real magic cards, blue has slightly fewer creatures and green has slightly more.
* 2-color multicolored creatures are less likely to occur in the generated card set than in the real one, but we do see that in both cases allied color combinations are more likely than enemy color combinations.
Next, we can consider the distribution of power, which I think is a good yardstick for whether or not the network really "gets" what color means. Here is a link to a graph of distribution of power among real creatures, and here is a link to a graph of the distributed of power among generated creatures. Yes, they are highly similar, and that's fantastic. In particular, note that in both the real and generated sets...
* Blue is dominated by 1 power creatures
* White loves 2 power creatures.
* Red's creatures have high representation around powers 4-6, which I call the "dragon territory"
* Green has the same bias towards creatures with high power.
* Black always takes second or third place in terms of relative number of creatures at different powers.
That's awesome! I will note, of course, that unlike among real cards, the number of creatures with power 4, 5, and 6 are slightly inflated among the generated cards, and I have not yet been able to explain why. That's something worth investigating.
Next, we can consider the distribution of abilities. Here is a link to the ability distribution heatmap of the real set of cards, and here is a link to the ability distribution heatmap of the generated set of cards. As you can see, they are very different. The network clearly understands that blue is the king of fliers, green trample, and red haste. However, for all the other abilities, no color clearly dominates. This is not to say that those other keywords don't show up. They do, plenty of times. The problem is that the machine hasn't really learned to associate them with their colors. For instance, from this data, we can conclude that in the generated card set vigilance is equally likely to occur in any of the five colors. That may be partially my fault. In my generated cards, every keyworded ability was lowercase and space separated rather than comma separated as is usually done. It's possible that it didn't pick up on the fact that "Lifelink, vigilance" is the same as "lifelink vigilance", and so that part of the training wasn't as successful as I had hoped. But we can fix that. I think in the next iteration of these experiments we will see much closer matches when we compare the graphs.
So, based on that data, things are looking very good. There are some other stats we can pull out, like color/subtype correlations, but that'll have to wait for another day. Based on what I've seen, the correlations are there but are weaker for the generated cards (the network is much more flexible with creature types than human designers). There's also the question of just how much of an effect temperature is having on all of these stats (I just chose a temperature that I felt would give results that were neither boring nor absolutely chaotic).
So, here's what you've all really been waiting for, a link to the dump of cards. Most of them have fairly short rule bodies, but if you were to turn up the temperature, I'm sure we could get much more exotic creatures. The primary purpose of this experiment was to see if the cards generated by the network were statistically similar in aggregate to the real cards, and I'd argue that they are.
So, please, let me know what you think (and if any of these links don't work for you). I'll be busy for the next couple of days with some important research work, but I'll still be reading and posting and I'd love to get feedback on how to move forward from here. What can we do to get better results? I'm all ears. Oh, and for those of you who are interested, I'll link you to my generation/parsing source code soon.
EDIT: By the way, rofl:
Caravan Openda 3GG
Creature - Beast
Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)
Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)
Evolve (Whenever a creature enters the battlefield under your control, if that creature has greater power or toughness than this creature, put a +1/+1 counter on this creature.)
3/3
#Caravan Openda does all the things!
Creatures definitely seem like they're going to be the "easiest" for the network to learn if you're doing types in a vacuum. They have a large quantity of color-specific keywords, and things like Power and Toughness help index power level to CMC in a much more quantifiable way. Plus, these two factors let you generate a lot of acceptable "dummy" data to help teach it these relationships even more strongly.
I'd be interested in seeing what a similar experiment using other subtypes would yield.
One thing you could do to help resolve the counter-naming disparity is change all types of counter names to $TYPE or something similar. So like Waxmane Baku would have "Whenever you cast a spirit or arcane spell, put a $TYPE counter on $NAME. {1}, Remove X $TYPE Counters: Tap X target creatures".
This doesn't help with cases like +1/+1 or -1/-1 counters where the counters themselves have another meaning, but it should at least help the case where something generates Ki counters and then spends Charge counters.
Private Mod Note
():
Rollback Post to RevisionRollBack
My Moderator Helpdesk
Currently Playing:
Legacy: Something U/W Controlish EDH Cube
Hypercube! A New EDH Deck Every Week(ish)!
Creatures definitely seem like they're going to be the "easiest" for the network to learn if you're doing types in a vacuum. They have a large quantity of color-specific keywords, and things like Power and Toughness help index power level to CMC in a much more quantifiable way. Plus, these two factors let you generate a lot of acceptable "dummy" data to help teach it these relationships even more strongly.
Absolutely right. As the other subtypes, it may be more challenging to do more pre-training with artificial data. Artifacts and enchantments often have very tightly interconnected abilities, instants and sorceries can have multiple clauses, etc.
But yes, I'm also very interested in seeing what we can do with other subtypes.
One thing you could do to help resolve the counter-naming disparity is change all types of counter names to $TYPE or something similar. So like Waxmane Baku would have "Whenever you cast a spirit or arcane spell, put a $TYPE counter on $NAME. {1}, Remove X $TYPE Counters: Tap X target creatures".
This doesn't help with cases like +1/+1 or -1/-1 counters where the counters themselves have another meaning, but it should at least help the case where something generates Ki counters and then spends Charge counters.
That's an excellent idea, actually. I'll definitely do that next time around.
Dragon Bodyguard
{11}{G}
Creature - Treefolk
Trample
Whenever a creature attacks you or a planeswalker you control, that creature gets -1/-1 until end of turn.
3/3
Overcosted obviously, but this is a great design. Has this ability ever appeared on a card before? I feel like it's too elegant to be a new construction by the NN, but my search is turning up nothing.
EDIT: Just realized that cost is actually 2G. So, in fact, substantially undercosted.
Overcosted obviously, but this is a great design. Has this ability ever appeared on a card before? I feel like it's too elegant to be a new construction by the NN, but my search is turning up nothing.
EDIT: Just realized that cost is actually 2G. So, in fact, substantially undercosted.
The closest thing to this ability is stuff like Caltrops that damage attackers. This is definitely a cool ability, though it likely belongs on a black card.
Private Mod Note
():
Rollback Post to RevisionRollBack
My Moderator Helpdesk
Currently Playing:
Legacy: Something U/W Controlish EDH Cube
Hypercube! A New EDH Deck Every Week(ish)!
Can you post here the database you broke in parts? That'll be very helpful for me!
Thx!
Certainly. I can try uploading that later today for you. Right now I just have set aside the creatures, but I can do the same for any and all card types. How would you like the data? JSON format? My own format? I can provide you the data in many different ways.
------------------
Goblin Bloodphiest
{1111}{R}{R}{G}{G}
Creature - Dragon
Flying
When $THIS enters the battlefield, gain control of target creature for as long as $THIS remains on the battlefield.
Dash {2}{R} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)
6/6
------------------
I really like this card design. It is, of course, totally busted as costed, but its a cool combination of effects.
------------------
Master of the Scale
4/4
Creature - Werewolf
Haste
{R}: $THIS gains vigilance until end of turn.
3/2
------------------
Glad this behavior occasionally happens to other networks. Mine constantly replaces one 'field' with the expected value type of another one.
------------------
Kavu Scar-Nelibara
{1}{U}
Creature - Illusion
Flying, vigilance
Enchanted creature gets +1/+1 and has flying.
1/1
------------------
This is presumably the fault of bestow, given that enchantments weren't in your training set. Shame it didn't tack on bestow and have the enchanted creature get vigilance as well.
------------------
Broodwarden
{111}{G}
Creature - Elemental
Trample
When $THIS enters the battlefield, put a 1/1 white Soldier creature token onto the battlefield.
10/1
------------------
I really like where this card is going... but white Soldiers? Not quite.
------------------
Rootwater Bobgart
{1111}
Creature - Horror
Flying
When $THIS enters the battlefield, exile target card from a graveyard.
9/9
------------------
Given the current power progression for creatures, maybe we'll have to save this sucker for... 2018?
------------------
Handsoul Gorger
{1111}{G}
Creature - Crocodile
At the beginning of your upkeep, put a spore counter on $THIS.
Remove three spore counters from $THIS: Put a 1/1 green Saproling creature token onto the battlefield.
Sacrifice a Saproling: Draw a card.
4/4
------------------
Good to see it is capable of putting all the pieces together once in a while. Very similar to pyschotrope thallid (much better though), so can't give it too much credit.
------------------
|E S|| Creature Human Rogue | {1}{U} | 1/1 | When $THIS dies, you may exile it. If you do, shuffle your library and put that card on top of it. | Kithkin Mountaineer
{1}{G}
Creature - Fungus
Crowas of the Corend
2/1
------------------
That is a fantastic name for a card, well done.
------------------
Suture Beast
{1111}{U}{B}{B}
Creature - Demon
Flying
When $THIS enters the battlefield, name a card.
7/6
------------------
Is 'name a card' really not sufficiently correlated with effects that use the named card? I don't think I've even seen a card that actually used a named card in any way, despite seeing plenty of the phrase 'name a card'.
Handsoul Gorger 4G
Creature - Crocodile
At the beginning of your upkeep, put a spore counter on $THIS.
Remove three spore counters from $THIS: Put a 1/1 green Saproling creature token onto the battlefield.
Sacrifice a Saproling: Draw a card.
4/4
I also like this one. Similarly, I also noticed its similarity to Psychotrope Thallid. I think it's interesting that, in addition to changing the cost and the P/T, it also felt free to fiddle with the cost of the activated ability. This is totally a printable card.
Sentry of the Silent Primal 3W
Creature - Human Monk
$THIS can't be countered.
Grandeur - Discard another card named $THIS: Destroy target tapped creature.
3/3
It used Grandeur properly AND came up with a new Grandeur ability! This is totally printable and I bet it would see constructed play, at least as a sideboard card. Even the name and creature types work.
Armored Grandmother 3G
Creature - Elf
Whenever an opponent casts a spell, regenerate $THIS.
2/2
Frigging beautiful top to bottom. I know it's a coincidence that the name matches the ability so perfectly, but I love it. Also, it took me a minute to realize that the ability is actually awesome rather than useless, helping the creature dodge a lot of removal. And yet again, I don't think this is an ability Wizards has ever done before.
Skyshroud Recluse 4G
Creature - Spirit
At the beginning of your upkeep, sacrifice $THIS unless you pay GG.
{T}: Add GG to your mana pool.
2/2
Well, that's beautifully useless.....
Granger Pit-Skiggt 2BG
Creature - Human Cleric Shaman
{1}: Search your library for a legendary card, reveal it, then shuffle your library and put that card on top of it.
5/3
Another interesting ability that is slightly different from existing ones. A Golgari Captain Sisay.
Lightning Marshal 2
Creature - Wall
Defender (This creature can't attack.)
At the beginning of your upkeep, destroy target land.
0/0
I love this. A backbreaking effect at a cheap mana cost, but with a substantial hoop you have to jump through to make it work. Of course, this would never see print with Wizards' current opinion of land destruction.
Ebdaty Hound 5U
Creature - Elemental
Flying
When $THIS enters the battlefield, target opponent gains control of all Mountains.
4/4
Hilarious in multiplayer.
Imperiosaur WWUB
Creature - Human Soldier
When $THIS enters the battlefield, put two 2/1 white Soldier creature tokens with flying and deathtouch onto the battlefield.
4/4
I was pumped about the awesome name, then I realized: Imperiosaur. Regardless, with the right flavour, I could see this being printed as a rare or mythic. In one ability, it has managed to make use of all three colours in the casting cost.
Barrenton Valearat 2GG
Creature - Elemental
$THIS can't be countered.
Nandfall - Whenever $THIS attacks, you may discard your hand. If you do, untap $THIS.
6/6
It invented a new ability word AND gave it a new and legal definition. Interestingly, Nandfall would only be playable on massive game-closing creatures, and the NN got there.
Ruboll of Jund 1RR
Creature - Human Warrior
Whenever $THIS deals combat damage to a player, you may sacrifice it. If you do, return it to the battlefield under your control.
4/2
Skittish Shade 1R
Creature - Horror Spellshaper
{B}, {T}, Discard a card: Return target creature to its owner's hand.
1/1
! It figured out spellshapers!
Paladin of Atqeisitor 3W
Creature - Spirit
Flying
When $THIS enters the battlefield, you may search your library for an Equipment card and put it onto the battlefield. then shuffle your library.
1/2
Windbrowner 3G
Creature - Ox
Echo 2G (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)
2/2
Flatulent Ox.
Caretaker Nephilim 2G
Creature - Human Druid
{T}: Add X mana of any one color to your mana pool, where X is your devotion to white. (Each B in the mana costs of permanents you control counts toward your devotion to white.)
1/2
So close...
Grave-Mage 3G
Creature - Beast
Whenever a player casts a black spell, you may draw a card. If you do, draw a card.
3/3
The anti-black tech is strong.
Battlewise Giant 1WW
Creature - Human Cleric
When $THIS enters the battlefield, you may search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library.
2/2
Interesting twist on Transmute.
Hoarding Knight 5RR
Creature - Human Warrior
Whenever $THIS attacks, put a token onto the battlefield that's a copy of a creature token you control.)
5/4
Neat! You need some other way to generate a single token to jumpstart it.
Firemane Dragon 1RR
Creature - Human Knight
When $THIS enters the battlefield, sacrifice it unless you discard a card at random. 1UU, Exile $THIS from your graveyard: Counter target spell unless its controller pays 3.
1/1
It doesn't really work as a whole package, but I do like the Mana Leak from the graveyard ability.
Karplusan Wall
{1111}{R}{R}
Creature - Ogre Warrior
When $THIS enters the battlefield, target opponent gains control of $THIS.
5/4
#Wait, come back!
Wirewood Master
{1}{G}
Creature - Wolf
When $THIS dies, exile it unless you sacrifice an Island unless you control more creatures than attacking player.
2/1
#Hmm, think I'll just let it get exiled? Does it still go to my graveyard if I don't sacrifice an island or I control more creatures than whoever's currently attacking?
Shiling Masopen
{1}{B}
Creature - Human Wizard
{2}, Sacrifice $THIS: Add {2} to your mana pool.
2/1
Emerald Ordx
{111}{B}
Creature - Zombie
Sacrifice $THIS: Put a 1/1 green Insect creature token onto the battlefield with "When this creature dies, you may return target Spirit card with converted mana cost 1 or less from your graveyard to your hand.)
2/4
#Soulshift 1 token creatures!
Shieldmage Acolyte
{G}
Creature - Wizard
When $THIS enters the battlefield, put two 3/3 colorless Eldrazi Spawn creature tokens onto the battlefield. It has "{T}: Attach to a creature you control except it gains haste until end of turn.
1/1
#This could be interesting. If the tap ability allowed it to work like Evoke and become an aura which gives haste, and then when untapped it becomes unattached? That'd be neat.
Scryb Rats
{1}{G}
Creature - Human Warrior
Landfall ? Whenever a land enters the battlefield under your control, you may have $THIS deal damage equal to its power to $THIS.
2/2
#Suicidal, much?
Private Mod Note
():
Rollback Post to RevisionRollBack
Why did I ever think a signature in comic sans was a good idea?
Is 'name a card' really not sufficiently correlated with effects that use the named card? I don't think I've even seen a card that actually used a named card in any way, despite seeing plenty of the phrase 'name a card'.
Yeah, I've been asking myself the same question. Maybe it's because there are so many different things that could happen after you name a card that it can't identify any common characteristics between them. If that's the case, then it could assume that "Name a card" and what follows are conditionally independent, and thus you can end with that clause just as easily as you can continue on with it. In fact, I'm pretty sure that's what's happening.
EDIT: A really hackish way of getting around that may be to change "Name a card." to "Name a card," (with a comma). The network must know that a period signals the end of an idea. We may be able to fool it into thinking there's a stronger connection between that clause and the next than there really is. Something fun to consider.
It used Grandeur properly AND came up with a new Grandeur ability! This is totally printable and I bet it would see constructed play, at least as a sideboard card. Even the name and creature types work.
Another interesting ability that is slightly different from existing ones. A Golgari Captain Sisay.
It's an especially interesting design. You can pay in as much as you'd like, but due to the shuffle, you can only ever keep one legendary card on top of your library.
I've been following this thread for a while, really cool to see that the generated cards are getting better and better.
I was wondering, how long does it take to generate cards from a trained network? Would it be possible to host this on a server and have a web frontend that can generate card sets on demand?
Haha, I'm happy you've been enjoying it. And yes, in principle. It doesn't take overly long on a decent machine, but even if not, the network can churn out tons of cards in advance, ahead of when people ask for them, so it doesn't have to be put on the spot. That is unless you specifically want to prime it to produce certain input, like feeding it a primetext containing 10 arcane instants and sorceries and see what it does from there.
Shiling Masopen
{1}{B}
Creature - Human Wizard
{2}, Sacrifice $THIS: Add {2} to your mana pool.
2/1
#Another case of doing nothing.
But you have to admit, the symmetry that the network produces is beautiful in a way. I've noticed it has an affinity for mirrored things. N of this, and then N of that. That sort of thing. It just that it sometimes leads to very awkward results.
Sabretooth Ogre
{1111}{G}{G}{G}
Creature - Dragon
Flying
Treefolk spells and abilities your opponents control can't cause the total number of +1/+1 counters on $THIS to be greater than seven dreads.
6/6
#I really wish this had stopped at the word "seven." It would still be nonsense but at least working nonsense.
Voice of Tteber
{111}{R}
Creature - Human Wizard
When $THIS enters the battlefield, sacrifice it unless you discard a card at random.
Unearth {3}{R} ({2}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)
2/2
#I like that it gets that having an ability means the creature's cost should be higher but sad that it doesn't understand which abilities should lower the cost instead.
Perilous Warden
{111111}{W}
Creature - Spirit
When $THIS enters the battlefield, put two 1/1 green Insect creature tokens onto the battlefield.
At the beginning of your upkeep, $THIS deals 1 damage to each creature and each player.
5/5
#That is one perilous warden. Hopefully you'll at least get to use those insects as blockers before they die.
Keldon Kinnbaile
{1111}{G}
Creature - Lizard Beast
As $THIS enters the battlefield, an opponent controls a Swamp.
5/5
#What, it just gives them an imaginary swamp? I could see that being interesting. Maybe it gives them one black mana? Or maybe it gives them a token that taps for black? Intriguing concepts.
Stormscape Boar
{1111111}{W}
Creature - Spirit
Whenever you cast a Spirit or Arcane spell, you may put a ki counter on $THIS.
{1}, Remove X ki counters from $THIS: Put a 1/1 green Insect creature token onto the battlefield.
5/5
#Ability is interesting but no accounting for X
Chais Hellkite
{111}{B}
Creature - Human Cleric
When $THIS enters the battlefield, destroy target creature. If that creature is a Zombie, exile it.
2/2
#Like Holy Justicar but ETB and destroy instead of tap. Cleric makes sense. Maybe should be W/B?
Okay! So, sampling completed. For the record, the parameters for the network were "-rnn_size 512 -num_layers 4 -dropout 0.2 -seq_length 200 -gpuid -1", and the data set contained 7702 real creatures and an additional 15000 vanilla and french vanilla creatures generated algorithmically in a way that preserved the relative distribution of colors, CMCs, power/toughness values, etc. I sampled the network at temperature 0.78 and generated a total of 11102 creatures (about 2 megabytes worth of text data).
I appreciate all the graphical sets that you generated, that gave an excellent representation of behavior. I was particularly interested that the heatmap for keyword abilities was not being associated with the color pie. My original worry was that the batch would be too vanilla and bias keywords to specific colors and therefore would make less chaotic builds, but it's nice to see that the abilities are essentially free-for-all.
Fuln Guildmage 2BB
Creature - Human Rogue
Whenever a creature attacks, each other attacking creature gets -1/-1 until end of turn.
2/2
#The maths will get a bit crazy, but this is a pretty good "big combat" deterrent.
Shauku, Renowned Invoker 1R
Creature - Goblin B: Regenerate $THIS.
Threshold ? As long as seven or more cards are in your graveyard, $THIS gets +2/+2 and can't attack or block and its activated abilities can't be activated.)
1/1
#The Johnny in me wants to makes this work somehow.
Okay! So, sampling completed. For the record, the parameters for the network were "-rnn_size 512 -num_layers 4 -dropout 0.2 -seq_length 200 -gpuid -1", and the data set contained 7702 real creatures and an additional 15000 vanilla and french vanilla creatures generated algorithmically in a way that preserved the relative distribution of colors, CMCs, power/toughness values, etc. I sampled the network at temperature 0.78 and generated a total of 11102 creatures (about 2 megabytes worth of text data).
I appreciate all the graphical sets that you generated, that gave an excellent representation of behavior. I was particularly interested that the heatmap for keyword abilities was not being associated with the color pie. My original worry was that the batch would be too vanilla and bias keywords to specific colors and therefore would make less chaotic builds, but it's nice to see that the abilities are essentially free-for-all.
No problem! I thought it might help see what was going on. After all, you can get a mix of crazy and bland cards, but what really matters is what's happening in aggregate, and that's hard to see without using some graphs.
And yeah, after you had mentioned about the possibility of the network getting trapped producing vanilla creatures, it was on my mind also. Actually, at low temperatures, that's exactly what happens. It reverts to simple creatures decorated with essential keywords. But with sufficiently high temperatures, the temptation to experiment is too irresistible for it. It just can't say "Flying" and be done, it has to say more.
Restless Cogra 3R
Creature - Dragon Wizard
Flying
Whenever $THIS deals combat damage to a player, put a +1/+1 counter on it.
Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)
3/3
This is beautiful.
Mindstab Centaur 3WU
Creature - Human Soldier
Horsemanship (This creature can't be blocked except by creatures with horsemanship.)
$THIS has indestructible as long as it has a divinity counter on it.
Remove a divinity counter from $THIS: Put a 1/1 green Insect creature token onto the battlefield for each nontoken creature with power less than or equal to the number of +1/+1 counters on $THIS.
3/4
And this is... legal.
Soul Collector 2W
Creature - Human Cleric
{T}: Gain control of target blocking creature of an opponent's choice.
1/2
Oooooooh...
Warden of Law Wurm 3WWW
Creature - Angel
Flying
At the beginning of your upkeep, you may return target creature card from your graveyard to the battlefield.
6/6
Restless
[quote]Sacellum Guardian 5R
Creature - Giant Warrior
Trample
Whenever a player names a card, $THIS gets +2/+2 and has "When $THIS dies, draw a card.
3/3
HOLY CRAP YOU GUYS. I found out why the network keeps making you name cards to no effect! It's all to enable this guy!
Oh my god... imagine a set so saturated with triggered "Name a card" abilities on permanents that the sorcery that let you name a card and gained you a life was a high pick...
Oh my god... imagine a set so saturated with triggered "Name a card" abilities on permanents that the sorcery that let you name a card and gained you a life was a high pick...
It's... so beautiful...
That would make Roon War Medoma a very draftable common, I agree. We all laughed at it. We didn't understand what the relevance would be.
---
I'm thinking about running the machine overnight on just non-creature artifacts and enchantments. Same parameters as what we did for the creatures you see now. Then I could return with a list of 10000 of those. I'm very curious about what that will do.
Oh my god... imagine a set so saturated with triggered "Name a card" abilities on permanents that the sorcery that let you name a card and gained you a life was a high pick...
It's... so beautiful...
That would make Roon War Medoma a very draftable common, I agree. We all laughed at it. We didn't understand what the relevance would be.
---
I'm thinking about running the machine overnight on just non-creature artifacts and enchantments. Same parameters as what we did for the creatures you see now. Then I could return with a list of 10000 of those. I'm very curious about what that will do.
You guys know what this means, right?
... The network is PLANNING AHEAD.
Be afraid. Be very afraid.
Private Mod Note
():
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
All the creatures in your graveyard have a cold.
First, let's look the break down of the number of creatures at different CMCs. Here's a bar chart that illustrates the difference between the real cards and the generated cards. As you can see, the bar charts for real and generated cards look virtually identical. This means that, say, a 4 CMC creature is just as likely to appear in the generated set as it is to appear in the real set of cards. Not bad!
Next, we can consider the breakdown by color. Here's a graph for that (for all combinations of colors up to size 2). We observe that...
* all monocolored choices are equally likely in the generated card set, but this is actually not the case in the real card set because among real magic cards, blue has slightly fewer creatures and green has slightly more.
* 2-color multicolored creatures are less likely to occur in the generated card set than in the real one, but we do see that in both cases allied color combinations are more likely than enemy color combinations.
Next, we can consider the distribution of power, which I think is a good yardstick for whether or not the network really "gets" what color means. Here is a link to a graph of distribution of power among real creatures, and here is a link to a graph of the distributed of power among generated creatures. Yes, they are highly similar, and that's fantastic. In particular, note that in both the real and generated sets...
* Blue is dominated by 1 power creatures
* White loves 2 power creatures.
* Red's creatures have high representation around powers 4-6, which I call the "dragon territory"
* Green has the same bias towards creatures with high power.
* Black always takes second or third place in terms of relative number of creatures at different powers.
That's awesome! I will note, of course, that unlike among real cards, the number of creatures with power 4, 5, and 6 are slightly inflated among the generated cards, and I have not yet been able to explain why. That's something worth investigating.
Next, we can consider the distribution of abilities. Here is a link to the ability distribution heatmap of the real set of cards, and here is a link to the ability distribution heatmap of the generated set of cards. As you can see, they are very different. The network clearly understands that blue is the king of fliers, green trample, and red haste. However, for all the other abilities, no color clearly dominates. This is not to say that those other keywords don't show up. They do, plenty of times. The problem is that the machine hasn't really learned to associate them with their colors. For instance, from this data, we can conclude that in the generated card set vigilance is equally likely to occur in any of the five colors. That may be partially my fault. In my generated cards, every keyworded ability was lowercase and space separated rather than comma separated as is usually done. It's possible that it didn't pick up on the fact that "Lifelink, vigilance" is the same as "lifelink vigilance", and so that part of the training wasn't as successful as I had hoped. But we can fix that. I think in the next iteration of these experiments we will see much closer matches when we compare the graphs.
So, based on that data, things are looking very good. There are some other stats we can pull out, like color/subtype correlations, but that'll have to wait for another day. Based on what I've seen, the correlations are there but are weaker for the generated cards (the network is much more flexible with creature types than human designers). There's also the question of just how much of an effect temperature is having on all of these stats (I just chose a temperature that I felt would give results that were neither boring nor absolutely chaotic).
So, here's what you've all really been waiting for, a link to the dump of cards. Most of them have fairly short rule bodies, but if you were to turn up the temperature, I'm sure we could get much more exotic creatures. The primary purpose of this experiment was to see if the cards generated by the network were statistically similar in aggregate to the real cards, and I'd argue that they are.
So, please, let me know what you think (and if any of these links don't work for you). I'll be busy for the next couple of days with some important research work, but I'll still be reading and posting and I'd love to get feedback on how to move forward from here. What can we do to get better results? I'm all ears. Oh, and for those of you who are interested, I'll link you to my generation/parsing source code soon.
EDIT: By the way, rofl:
Caravan Openda
3GG
Creature - Beast
Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)
Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)
Evolve (Whenever a creature enters the battlefield under your control, if that creature has greater power or toughness than this creature, put a +1/+1 counter on this creature.)
3/3
#Caravan Openda does all the things!
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
I'd be interested in seeing what a similar experiment using other subtypes would yield.
One thing you could do to help resolve the counter-naming disparity is change all types of counter names to $TYPE or something similar. So like Waxmane Baku would have "Whenever you cast a spirit or arcane spell, put a $TYPE counter on $NAME. {1}, Remove X $TYPE Counters: Tap X target creatures".
This doesn't help with cases like +1/+1 or -1/-1 counters where the counters themselves have another meaning, but it should at least help the case where something generates Ki counters and then spends Charge counters.
Currently Playing:
Legacy: Something U/W Controlish
EDH Cube
Hypercube! A New EDH Deck Every Week(ish)!
Absolutely right. As the other subtypes, it may be more challenging to do more pre-training with artificial data. Artifacts and enchantments often have very tightly interconnected abilities, instants and sorceries can have multiple clauses, etc.
But yes, I'm also very interested in seeing what we can do with other subtypes.
That's an excellent idea, actually. I'll definitely do that next time around.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
Overcosted obviously, but this is a great design. Has this ability ever appeared on a card before? I feel like it's too elegant to be a new construction by the NN, but my search is turning up nothing.
EDIT: Just realized that cost is actually 2G. So, in fact, substantially undercosted.
The closest thing to this ability is stuff like Caltrops that damage attackers. This is definitely a cool ability, though it likely belongs on a black card.
Currently Playing:
Legacy: Something U/W Controlish
EDH Cube
Hypercube! A New EDH Deck Every Week(ish)!
Can you post here the database you broke in parts? That'll be very helpful for me!
Thx!
Certainly. I can try uploading that later today for you. Right now I just have set aside the creatures, but I can do the same for any and all card types. How would you like the data? JSON format? My own format? I can provide you the data in many different ways.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
Goblin Bloodphiest
{1111}{R}{R}{G}{G}
Creature - Dragon
Flying
When $THIS enters the battlefield, gain control of target creature for as long as $THIS remains on the battlefield.
Dash {2}{R} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)
6/6
------------------
I really like this card design. It is, of course, totally busted as costed, but its a cool combination of effects.
------------------
Master of the Scale
4/4
Creature - Werewolf
Haste
{R}: $THIS gains vigilance until end of turn.
3/2
------------------
Glad this behavior occasionally happens to other networks. Mine constantly replaces one 'field' with the expected value type of another one.
------------------
Kavu Scar-Nelibara
{1}{U}
Creature - Illusion
Flying, vigilance
Enchanted creature gets +1/+1 and has flying.
1/1
------------------
This is presumably the fault of bestow, given that enchantments weren't in your training set. Shame it didn't tack on bestow and have the enchanted creature get vigilance as well.
------------------
Broodwarden
{111}{G}
Creature - Elemental
Trample
When $THIS enters the battlefield, put a 1/1 white Soldier creature token onto the battlefield.
10/1
------------------
I really like where this card is going... but white Soldiers? Not quite.
------------------
Rootwater Bobgart
{1111}
Creature - Horror
Flying
When $THIS enters the battlefield, exile target card from a graveyard.
9/9
------------------
Given the current power progression for creatures, maybe we'll have to save this sucker for... 2018?
------------------
Handsoul Gorger
{1111}{G}
Creature - Crocodile
At the beginning of your upkeep, put a spore counter on $THIS.
Remove three spore counters from $THIS: Put a 1/1 green Saproling creature token onto the battlefield.
Sacrifice a Saproling: Draw a card.
4/4
------------------
Good to see it is capable of putting all the pieces together once in a while. Very similar to pyschotrope thallid (much better though), so can't give it too much credit.
------------------
|E S|| Creature Human Rogue | {1}{U} | 1/1 | When $THIS dies, you may exile it. If you do, shuffle your library and put that card on top of it. | Kithkin Mountaineer
{1}{G}
Creature - Fungus
Crowas of the Corend
2/1
------------------
That is a fantastic name for a card, well done.
------------------
Suture Beast
{1111}{U}{B}{B}
Creature - Demon
Flying
When $THIS enters the battlefield, name a card.
7/6
------------------
Is 'name a card' really not sufficiently correlated with effects that use the named card? I don't think I've even seen a card that actually used a named card in any way, despite seeing plenty of the phrase 'name a card'.
I also like this one. Similarly, I also noticed its similarity to Psychotrope Thallid. I think it's interesting that, in addition to changing the cost and the P/T, it also felt free to fiddle with the cost of the activated ability. This is totally a printable card.
It used Grandeur properly AND came up with a new Grandeur ability! This is totally printable and I bet it would see constructed play, at least as a sideboard card. Even the name and creature types work.
Frigging beautiful top to bottom. I know it's a coincidence that the name matches the ability so perfectly, but I love it. Also, it took me a minute to realize that the ability is actually awesome rather than useless, helping the creature dodge a lot of removal. And yet again, I don't think this is an ability Wizards has ever done before.
Well, that's beautifully useless.....
Another interesting ability that is slightly different from existing ones. A Golgari Captain Sisay.
I love this. A backbreaking effect at a cheap mana cost, but with a substantial hoop you have to jump through to make it work. Of course, this would never see print with Wizards' current opinion of land destruction.
Hilarious in multiplayer.
I was pumped about the awesome name, then I realized: Imperiosaur. Regardless, with the right flavour, I could see this being printed as a rare or mythic. In one ability, it has managed to make use of all three colours in the casting cost.
It invented a new ability word AND gave it a new and legal definition. Interestingly, Nandfall would only be playable on massive game-closing creatures, and the NN got there.
Staple in Norin the Wary EDH.
EDIT: A couple more....
! It figured out spellshapers!
Bad neural network! Bad!
Thanks. That helps.
Flatulent Ox.
So close...
The anti-black tech is strong.
Interesting twist on Transmute.
Neat! You need some other way to generate a single token to jumpstart it.
It doesn't really work as a whole package, but I do like the Mana Leak from the graveyard ability.
{1111}{R}{R}
Creature - Ogre Warrior
When $THIS enters the battlefield, target opponent gains control of $THIS.
5/4
#Wait, come back!
Wirewood Master
{1}{G}
Creature - Wolf
When $THIS dies, exile it unless you sacrifice an Island unless you control more creatures than attacking player.
2/1
#Hmm, think I'll just let it get exiled? Does it still go to my graveyard if I don't sacrifice an island or I control more creatures than whoever's currently attacking?
Shiling Masopen
{1}{B}
Creature - Human Wizard
{2}, Sacrifice $THIS: Add {2} to your mana pool.
2/1
#Another case of doing nothing.
Soulbond Giant
{11111}{G}
Creature - Wurm
Spronghack
6/6
#Another new ability!
Emerald Ordx
{111}{B}
Creature - Zombie
Sacrifice $THIS: Put a 1/1 green Insect creature token onto the battlefield with "When this creature dies, you may return target Spirit card with converted mana cost 1 or less from your graveyard to your hand.)
2/4
#Soulshift 1 token creatures!
Shieldmage Acolyte
{G}
Creature - Wizard
When $THIS enters the battlefield, put two 3/3 colorless Eldrazi Spawn creature tokens onto the battlefield. It has "{T}: Attach to a creature you control except it gains haste until end of turn.
1/1
#This could be interesting. If the tap ability allowed it to work like Evoke and become an aura which gives haste, and then when untapped it becomes unattached? That'd be neat.
Scryb Rats
{1}{G}
Creature - Human Warrior
Landfall ? Whenever a land enters the battlefield under your control, you may have $THIS deal damage equal to its power to $THIS.
2/2
#Suicidal, much?
Yeah, I've been asking myself the same question. Maybe it's because there are so many different things that could happen after you name a card that it can't identify any common characteristics between them. If that's the case, then it could assume that "Name a card" and what follows are conditionally independent, and thus you can end with that clause just as easily as you can continue on with it. In fact, I'm pretty sure that's what's happening.
EDIT: A really hackish way of getting around that may be to change "Name a card." to "Name a card," (with a comma). The network must know that a period signals the end of an idea. We may be able to fool it into thinking there's a stronger connection between that clause and the next than there really is. Something fun to consider.
I know, right? I love seeing results like that.
It's an especially interesting design. You can pay in as much as you'd like, but due to the shuffle, you can only ever keep one legendary card on top of your library.
Haha, I'm happy you've been enjoying it. And yes, in principle. It doesn't take overly long on a decent machine, but even if not, the network can churn out tons of cards in advance, ahead of when people ask for them, so it doesn't have to be put on the spot. That is unless you specifically want to prime it to produce certain input, like feeding it a primetext containing 10 arcane instants and sorceries and see what it does from there.
As you can see, the network forces us to ask ourselves deep questions.
EDIT:
But you have to admit, the symmetry that the network produces is beautiful in a way. I've noticed it has an affinity for mirrored things. N of this, and then N of that. That sort of thing. It just that it sometimes leads to very awkward results.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
{1111}{G}{G}{G}
Creature - Dragon
Flying
Treefolk spells and abilities your opponents control can't cause the total number of +1/+1 counters on $THIS to be greater than seven dreads.
6/6
#I really wish this had stopped at the word "seven." It would still be nonsense but at least working nonsense.
Voice of Tteber
{111}{R}
Creature - Human Wizard
When $THIS enters the battlefield, sacrifice it unless you discard a card at random.
Unearth {3}{R} ({2}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)
2/2
#I like that it gets that having an ability means the creature's cost should be higher but sad that it doesn't understand which abilities should lower the cost instead.
Perilous Warden
{111111}{W}
Creature - Spirit
When $THIS enters the battlefield, put two 1/1 green Insect creature tokens onto the battlefield.
At the beginning of your upkeep, $THIS deals 1 damage to each creature and each player.
5/5
#That is one perilous warden. Hopefully you'll at least get to use those insects as blockers before they die.
Keldon Kinnbaile
{1111}{G}
Creature - Lizard Beast
As $THIS enters the battlefield, an opponent controls a Swamp.
5/5
#What, it just gives them an imaginary swamp? I could see that being interesting. Maybe it gives them one black mana? Or maybe it gives them a token that taps for black? Intriguing concepts.
Stormscape Boar
{1111111}{W}
Creature - Spirit
Whenever you cast a Spirit or Arcane spell, you may put a ki counter on $THIS.
{1}, Remove X ki counters from $THIS: Put a 1/1 green Insect creature token onto the battlefield.
5/5
#Ability is interesting but no accounting for X
Chais Hellkite
{111}{B}
Creature - Human Cleric
When $THIS enters the battlefield, destroy target creature. If that creature is a Zombie, exile it.
2/2
#Like Holy Justicar but ETB and destroy instead of tap. Cleric makes sense. Maybe should be W/B?
I appreciate all the graphical sets that you generated, that gave an excellent representation of behavior. I was particularly interested that the heatmap for keyword abilities was not being associated with the color pie. My original worry was that the batch would be too vanilla and bias keywords to specific colors and therefore would make less chaotic builds, but it's nice to see that the abilities are essentially free-for-all.
2BB
Creature - Human Rogue
Whenever a creature attacks, each other attacking creature gets -1/-1 until end of turn.
2/2
#The maths will get a bit crazy, but this is a pretty good "big combat" deterrent.
Shauku, Renowned Invoker
1R
Creature - Goblin
B: Regenerate $THIS.
Threshold ? As long as seven or more cards are in your graveyard, $THIS gets +2/+2 and can't attack or block and its activated abilities can't be activated.)
1/1
#The Johnny in me wants to makes this work somehow.
No problem! I thought it might help see what was going on. After all, you can get a mix of crazy and bland cards, but what really matters is what's happening in aggregate, and that's hard to see without using some graphs.
And yeah, after you had mentioned about the possibility of the network getting trapped producing vanilla creatures, it was on my mind also. Actually, at low temperatures, that's exactly what happens. It reverts to simple creatures decorated with essential keywords. But with sufficiently high temperatures, the temptation to experiment is too irresistible for it. It just can't say "Flying" and be done, it has to say more.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
It's when you have shingles and sniffles at the same time.
This is beautiful.
And this is... legal.
Oooooooh...
Reya Dawnbringer pushed for constructed.
HOLY CRAP YOU GUYS. I found out why the network keeps making you name cards to no effect! It's all to enable this guy!
Oh god, I just laughed so loud. That is amazing. It all makes sense now!
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
I for one welcome our new Sacellum overlord.
It's... so beautiful...
That would make Roon War Medoma a very draftable common, I agree. We all laughed at it. We didn't understand what the relevance would be.
---
I'm thinking about running the machine overnight on just non-creature artifacts and enchantments. Same parameters as what we did for the creatures you see now. Then I could return with a list of 10000 of those. I'm very curious about what that will do.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
You guys know what this means, right?
... The network is PLANNING AHEAD.
Be afraid. Be very afraid.