4. Wait, the result of this card is that I do something pointless, then I give my opponent 7 cards from my library, then I put the rest of my library into my graveyard?
This is remarkably more coherent than previous attempts at M:tG card generation with a deep RNN [1] but on the other hand, the ability text on the few cards I've generated so far seems oddly famliar.
In fact, I got one that is identical to an actual card.
Generated by GPT-2 [2]:
Tephraderm {1}{R} (common)
Sorcery
Each player sacrifices a land.
Actual M:tG card (copied by hand by me and keeping the same notation):
Tremble {1}{R} (Odyssey common)
Sorcery
Each player sacrifices a land.
Also, the names of cards don't seem to be generated by the RNN. "Tephraderm", above, is an actual Magic card (a red rare creature from Onslaught). I certainly did see a "Bontu, Primal Calamity" (which I didn't save) whose name was basically a mashup of the names of "Bontu the Glorified" and "Zacama, Primal Calamity".
I go into it more in the README but yes, GPT-2 overfits Magic cards very quickly despite my best efforts (usually it shifts the mana cost/rarity a bit more though than your example).
Hm. Sorry to hear that. I'm looking into the pregenerated dump you posted on github earlier and I'm seeing a lot of cards that are basically copies of existing cards.
These are from mtg-gpt-2-cloud-run/generated_card_dumps/temp_0_7/cards_0.txt and just the top few rows (also, only the ones I immediately recognised):
Shrieking Specter {6}{B} (common)
Creature ~ Specter (4/4)
Flying
Whenever Shrieking Specter attacks, defending player discards a card.
Luminous Bonds {2}{W} (common)
Enchantment ~ Aura
Enchant creature
Enchanted creature can't attack or block.
Mwonvuli Acid-Moss {3}{G} (uncommon)
Sorcery
Destroy target land. Search your library for
a forest card and put that card onto the battlefield
tapped. Then shuffle your library.
Druid'S Deliverance {1}{G} (common)
Instant
Prevent all combat damage that would be dealt this turn. Populate.
And so on.
Don't ask me why I immediately recognised Shrieking Specter.
It would take a bit of work to figure out which of the generated cards are mashups of existing cards, or the characteristics of existing cards with new names, and which ones are original. Do you have a way to figure this out?
Hey, this is an interesting project regardless. At least with M:tG cards it's very easy to see when GPT-2's output is identical to its input. Imagine trying to figure that out with arbitrary text...
I'd imagine it'd be hard to avoid? There isn't exactly a lot of text on these cards, with so many parameters in the model it wouldn't be surprising that it overfits
To avoid copying the training set you can increase the temperature at sampling time. This should trade off between accuracy (maximum likelihood) and quirkiness (more stochastic background).
Color pie violations are not an inherent bug, just an outcome of the inherent random nature of AI. This AI does a better job than previous ones of following the color pie.
> (For some reason, the text on the side says "Uncast" instead of "counter".)
That's how the source script encodes it (to differentiate it from "counters" like +1/+1 counters) but for some reason it's not fixed during decode. I'm tempted to manually add a fix.
> Putin ran away to the north pole while the ice was melting. then a huge car crashed and one person died. The other person then was injured while in the car. How long did it take for the ice to melt?
I think towards the end of the thread the initiator of the thread and some of the people in the impromptu community that formed around him started discussing how to generate illustrations and even did it to some extent.
That issue is likely due to a race condition when two images are generated at the exact same time. (I'm thinking it's due to how Python's subprocess module works, but it's not an easy thing to debug!)
The first one I generated was a 1/1 creature costing 1 black mana, that had the ability "if you control 8 or more lands during your upkeep you win the game". It's been a while since I've played Magic, but that seems a little overpowered to me :)