There is a popular discord (PlayEDH) where people play MTG over webcam against one another. Due to the nature of MTG it's important that the deck each player is wielding be properly balanced in power level against each opponent. (For those unfamiliar, it's possible to construct highly efficient, and expensive, MTG decks that trigger game-winning infinite combos within 1-4 turns. There's a continuous scale of deck effectiveness from this point).
These power levels are pre-checked by volunteers of this discord.
I had the idea of aggregating all decks + their graded power levels and training a prediction network capable of this task. The side effect being it could also tell you which cards in your deck could be changed to increase it's predicted power.
I ended up abandoning the project, largely due to the painful nature of parsing the discord logs.
This reminds me of that project, primarily due to needing to generate a meaningful/compressed embedding of the cards prior to training the deck-level network.
Anyways, nice work!
I don't feel like this is a good application of predictive networks, but maybe I'm wrong. Tiny changes in wording of a card can make or break an exploitable synergy. You can say "tigers basically look like this, ish" to an image recognizer, but you can't just say "decks that look kinda like this are super strong; decks that look kinda like that are super weak". I'd think the best approach here would be to have an agent just play the deck against other decks a million times with an evolving strategy. I know if you say the term "genetic algorithm" nowadays you get laughed at and branded as an old-fashioned ignoramus who doesn't understand real AI, but sometimes the answer is to get off the bandwagon.
Magic the Gathering cards have pretty standard and predictable wording and keywords. Not sure it could understand everything, but there would be easy patterns that apply to hundreds or thousands of cards.
I don't think GP is saying we'd have difficulty encoding the cards. I think they're saying that deck performance is very sensitive to minor changes, and dependent on a lot of interactions between sets of cards.
To add to that point, decks can be good or bad based on the ecosystem (meta) they're playing in. A deck that aims to rush you down might be great in a meta where players expect slow decks, but terrible in a meta where many decks have means of healing themselves.
Exactly - the landscape of decks is extremely chaotic and I can't imagine gradient descent having any real power to discover the few towering singularities of super-exploit power-decks when changing a 3 to a 2 in the middle of the effect description of one card would render the same deck just meh. You don't really find exploits by approaching them slowly from a distance.
EDH less so though due to the bigger deck size and 1 copy per card limitation. This means you end up with bigger groups of cards with common synergies vs specific sets of cards you need to draw in regular 60-card.
Sometimes there's subtlety. Well it's a language unto itself, that's why everyone can play with any language cards (except Asian language cards sometimes) no problem. It's mostly image recognition, you see the image and you're like "Oh fuck, that's the last thing I wanted him to play!" And weep a little inside, from the pain of losing alone, no bets really. Never bet on the outcome of a casual game.
I created a (hopelessly incomplete) model of a MtG game and tried to use it to measure deck mana balance dynamically instead of statically. It was such a fun project but a ton of work and eventually I lost interest. I may resurrect it someday.
I had really grand visions of using it and machine learning (reinforcement learning) to have it pick its own decks.
I wonder if you could adopt AlphaZero to this. Something like:
- Train a model using MCTS to play MtG games. The model takes an MtG game state and estimates the “value” (how likely current player will win) and “policy” (ideal move for current player)
- Each “game” has 2 phases: drafting cards to create a deck, and then playing the actual deck. So the model learns to both a create deck and play its deck well
- After training, you input a state where both players have “drafted” their decks, right before the actual gameplay. The output “value” is the power of Player 1’s deck relative to Player 2: ideally you want this to be as close to 0 as possible.
As a bonus you also get a model capable of actually playing MtG.
One nuance is that the “value” are not a complete ordering: comparing the values, you could get a situation where deck A > deck B > deck C > deck A. Honestly this is probably a benefit because it forces the players to use “skill” vs choosing the right deck for the right opponent.
This is the reason I gave up on MTG in the 90s. I was a broke teen and it was clear that tournaments were won by the biggest investors in the cards. So I went back to chess.
IMO the game has been designed to fix those balance problems. There's various subsets of cards that are legal in tournament play and I think only "Legacy" includes all of the original cards. I used to occasionally attend new set release weekends and play some sealed duels or some 2HG with a buddy. It's a good time - you get a box with a few boosters and some time to craft your deck.
Drafts for new set releases are definitely some of my fondest memories.
Everyone opening new cards with no idea what they're going to get. You had to be extremely adaptable and there were different strategies to employ within the metagame of the format.
>”For those unfamiliar, it's possible to construct highly efficient, and expensive, MTG decks that trigger game-winning infinite combos within 1-4 turns. There's a continuous scale of deck effectiveness from this point”
You been to FNM too? /s
The cool thing about this project is that, from what I could generate, these could be legitimate cards. 2/2 blue flying. 3/4 zombie. 2/6 red giant. This is actually really cool. I’d love to see an AI generated green red aggro deck from this just to see how it would play.
I used to know what kind of deck someone was going to play by what they brought to the table. A bag of counters… yeah ok R/G. A box of “extra cards”? Black zombie or rat packs. Absolutely nothing? Mono blue counter burn.
There was a very popular Twitter account that was tweeting out a similar concept (starting way back in 2015, even!) https://twitter.com/RoboRosewater
LoadingReadyRun, a very popular MTG YouTube channel, even did a cube draft using only cards that were generated by RoboRosewater that I thought was funny to watch https://youtu.be/UuG5YLbwsQk
LoadingReadyRun frequently has done RoboRosewater and other AI MTG card segments during their Desert Bus telethon for charity.
There is nothing so funny as seeing these folks, sleep deprived and loopy, trying to read out these cards without being incapacitated with laughter. I've seen double and triple takes from just looking at the card combined with what the AI called it, and once they did a segment called 'Is It Playable Or Is It Not' off these cards that was very special... riffing straight-faced about pro strats on how the cards are played, except the cards are gibberish, so some offhand remark corpses the whole room...
My husband and I play MTG (and do some speculative card investments on the side) and have been cracking up while slowly making our way through the LRR vod for this new AI Masters cube. So much great stuff.
Oof, now there's a name I have not heard in a long while! Has it really turned into a MTG channel? It used to be first and foremost a sketch comedy group that would occasionally do gaming videos.
I had another tool to generate images of the AI-generated cards but unfortunately using Wine + Magic Set Editor on Linux is very fussy. I might revisit it someday.
Hey, a few months back I trained a NN to generate MTG cards. I submitted a post to the MTG subreddit but it got blocked as spam and I never managed to get the mods to approve it.
My question was whether natural language generating networks could be used as a tool to assist game design. I must say I'm quite impressed with the results. Many cards could be legit with minor tweaks and some balance.
The point isn't to produce fully procedural content, but to assist designers to produce better content faster. Honestly I think people should start taking these tools seriously in the procedural content generation world.
Guardian of Chains
Counter target spell. It deals 4 damage to any target
Orchid's Fury
Target Vampire creature gets +1/+0 until end of turn
Surveyor's Arch
Untap target player. It deals 3 damage to that player. You lose 1 life
Partisans of the Undying
Search your library for a basic land card, reveal that card, put it
into your hand, then shuffle
Caravan Ritual
Enchant creature When caravan Ritual enters the battlefield, return
target creature to its owner's hand. Activate only during your upkeep.
Equip {2}
Brahms of the Grave
When Ithabadi Troghr enters the battlefield, return target creature
card from your graveyard to your hand. It gains haste until end of
turn'
Sleeping Dread Knight
Flying (This creature can't be blocked except by two or more creatures
card types.) Whenever Sleeping Dread Knight deals combat damage to a
player, creatures you control get +X/+X until end of turn
Genswurm, the Flesh Orchard
When Gnojscos, God of Vampires enters the battlefield, sacrifice a
land. {5}{G}{G}, Sacrifice Genswurm: Draw a card
Storm Call
Choose up to two target lands. You gain 1 life. An opponent has "{T},
Sacrifice Storm Call: Regenerate this permanent, then create a token
with "{T}, Sacrifice Storm Call: Add up to X +1/+1 counters."
Wandering Hollow
{T}: Create a red and white Zombie artifact creature token with base
power and toughness 5/5. Illus. Angel Albatross on the battlefield
(This creature enters the battlefield with X +1/+1 counters on it.
When it dies, return it to the battlefield under your control.)
Illustrations are impressive, but text seems very fragile. I generated in sequence from names:
Ice Lake
Land - Islanders
T: add U or R
Tiger Lake
Land
Tiger Lake enters the battlefield tapped
T: add U or R
Alder Lake
Land
Alder Lake enters the battlefield tapped
T: add U or R
Cannon Lake
Land
Cannon Lake enters the battlefield tapped
T: U or R
"Rocket Lake" is completely wrong:
1R
Two-Headed Dead
Instant
Rocket Lake deals 1 damage to target creature
Comet Lake
Land
T: add 1
1,T, sacrifice Comet Lake: search your library for a basic land card, put it onto the battlefield tapped, then shuffle
Coffee Lake
Land
T: add 1
T: add U or R
Whiskey Lake is drunk:
Whiskey Lake
Land
T: add 1
1,T: add U, U, U or U, U, or U, U, or U,or U,or U,or U,or U,or U,or U, [truncated]
This is really cool! I noticed a few things you might be interested in:
It looks like there might be issues rendering mana costs that have, e.g., 1GG where it does not render the second G. That is to say, it's rendered but only the barest left edge can be seen. This appears to only be the case if the card's name is sufficiently long (I noticed this with "Bethen, Cenn's Heavenly Sleep").
That being said, I have no idea how powerful Bethen, Cenn's Heavenly Sleep really is as a 4/4 flyer because it's CMC is "at least 3" because I can't see the full mana cost. The mana costs that I can see seem to suggest that the card's strength matches the mana cost pretty well, though, so I'd guess Bethen's cost was 4 or 5.
The text can sometimes say some weird things (from a 2/2 Zombie creature that costs 1 B(lack) called Null Slayer; also Zombie Human Clue is my new favorite creature type):
> (1 B(lack), Exile this card from your graveyard: Create a token that's a copy of it, except it's a black Zombie Human Clue [it's amusing to me that the reincarnated token gains the Human type] with no mana cost. Exile it at the beginning of the next end step or if it would leave the battlefield [the latter half is redundant with it being a token]. You gain life equal to the life lost this way [good to know?].)
It's still really impressive the effects it comes up with!
>Exile it at the beginning of the next end step or if it would leave the battlefield [the latter half is redundant with it being a token].
It's not necessarily redundant or useless, there are some cards that will trigger off exiling permanents, or count the number of permanents that have been exiled during the turn to change how powerful an ability is, so if it was destroyed in battle or kill-spelled and instead exiled, it would be more useful than it simply being destroyed unexiled since it would trigger the ability or increase the count of permanents exiled that turn.
Not quite, it actually does fully exile, and even exists very briefly in the exile zone, but then fizzles once state based actions are checked again, which is usually very quickly.
I'm having too much fun with this. I just generated Pyromancer's Purge[0] (it doesn't do anything and I can't stop giggling to myself; I want more of these that seemingly do something but then actually just nothing):
1R
Instant
This spell costs 1 less to cast if you control a creature with power 4 or greater.
Scavenge 1R (1R, Exile this card from your graveyard: Put a number of +1 / +1 counters equal to this card's power on target creature. Scavenge only as a Sorcery.)
Also you found an error. “Your opponent” is not valid in the language of M:TG it needs to be “target opponent” because “your opponent” is not well defined outside of two-player games.
I swear I also remember some burn spells that target a creature and then also deal damage to that creature's controller. I'd guess the wording came from trying to combine that with something else.
Pretty good! All of the cards I saw were reasonably balanced - not unlike looking through random cards in a new set. Makes me think there could be a game type online where all cards are automatically generated. Or, perhaps a player could fine-tune their generator and play with totally novel cards that fit their preference or play style.
Anyone know the correct mana syntax for advanced options? I tried 4RRR and got the text "4RRR" in the mana cost, instead of red mana symbols and 4 colorless.
How "far" from the training art is the resulting generated art? Do the generated cards have features which are recognizably lifted from the training data?
In some of the tries below I didn't realise the URL is unique to a card. In
others, I did, but I copied the URL too soon and it points to an earlier card.
First, some random generation, without "Advanced Options"
Curse of Cripling Memory
[Image: Maybe a laboratory? Someone with his face fading in a dark cloud?]
1U
Instant
Choose a Creature type. You may cast creature spells as though they had flash.
(The blades of the unskilled never rust)
Cloud Portal
3
[Image: clouds, something that could be a flat-top pagoda, maybe runes on the
clouds?]
Artifact
3, {T}: Draw a card.
(Even a whisper can still be heard above the rest of the world.
Note that the {T}ap symbol on this is...red. Like a red mana symbol.
Dusk Hovergard
2U
[Image:A blob with a blob next to it]
Creature - Spirit
Flying
When Dusk Hovergard enters the battlefield target creature can't block this turn
1/1
(Can't read the flavour text because the card text is white on white background)
Morbid Regimen
2{B}
Enchantment - Aura
Enchant creature
Enchanted creature gets +2/+2
(Once each night, the sleeper awoke to find his house had been transformed into
a death garden.)
The following were made with "Advanced options": name, mana cost and type chosen
by me.
Booby Trap
2B
[Image: something steampunk?]
Enchantment
Whenever a creature attacks, sacrifice Booby Trap unless you discard a card.
(When the lives of Naya used to be short, he never lost his temper. Now he just
smiles)
^ I was trying to get it to geneate something offensive, I confess.
Black Thunder
BBB
[Image: a threatening cloacked figure with pink thunder around its head]
Sorcery
Each player loses 1 life.
(Forged from the same material as the hilts of a star shell, the power of the
Raegstrom can't be blocked by armor.)
Helm of Fire
1R
[Image: Kind of a melted helm, ok]
Artifact - Equipment - Equipment
Equipped creature gets +1/+0 and has haste.
Equip 1 (1: Attach to target creature you control. Equip only as a sorcery)
Sea of Knowledge
4U
[Image: A nondescript landscape, perhaps with thralls?]
Instant
Put target card from a graveyard onto the battlefield under your control
("Let the spirits of the dead join the living" - Nicol Bolas)
Word of Might
[Image: A nondescript figure perhaps with wings, in front of a colorful
landscape]
4G
Enchantment - Aura
Enchant creature
Enchanted creature gets +2/+2
("The law is one stone cannot be broken" - Xantcha, ancient astronomer)
^ I only asked for "Enchantment" on this one but it correctly added "Aura" to
match its Ability.
Guardian of the Peace
[Image: A nondescript figure, perhaps in desert attire, in front of what could
be an abstract rendering of a modern city's skyline.]
WW
Creature - Human Soldier
{W}, {T}: Destroy target attacking or blocking creature.
(When the silver finds her feet, it grants her sisterhood. Only one person will
survive).
2/2
^ In this card too the Tap symbol has a red hue. Why?
Scorching Sunset
5RR
[Image: abstract tiles that could be fields with what could be a burning palace
in the background]
Sorcery
Scorching Sunset deals 3 damage to any target.
(Once the flames begin to subside, the spark is forgotten)
Mana Bomb
5
[Image: Maybe a kind of mock-oriental cauldron or boiler? Nondescript background
that could be attempts at reproducing ideograms?]
Artifact
{T}: Add {R}, {W}, or {U}
(Amass in corpse and feed it)
Lightning Bolt
{R}
[Image: a nondescript view of what might be clouds with a yellow shape that
could be a bolt]
Instant
Lightning Bolt deals 3 damage to any target.
(If you can see the clouds, the lightning will strike.)
^ OK, so if we give it the name, cost and type of a known card...
Llanowar Elves
{G}
Creature - Elf Druid - Elf Druid
{T}: Add {G}
(As the evil spirit called the spirits of the dead, so the holy fire of
Llanowar, and our lifeblood, we bow in honor to them and the fire that would
never die)
Dark Ritual
{B}{B}{B}
[Image: nondescript hooded figures perhaps conducting a ritual]
Sorcery
Each player sacrifices a creature. You gain life equal to the life lost this
way.
^ Ah-hah! Dark Ritual has not seen nearly as many reprints as Bolt and Elves, so
it can't be reproduced as easily. My theory.
Honda Array
{P}{}{} (Empty mana circles)
[Image: could be a distorted rendition of a car?]
Factory - Car Factory - Vehicle
Horsepower (P/P) (P/P) (P/P) (P/P) (P/P) (P/P) .... (P/P) (
^ It can sort of generate nonsense but not quite. Also, it can't close parens.
Typical.
Colossus of Rhodes
11
[Image: clearly a distorted image of a giant status in front of an abstract city
with sea]
Statue
When Colossus of Rhodes enters the battlefield, exile target artifact or
creature.
(Those who could tell of a scepter, one end of the alphabet, and dawn.)
^ What? What could those people do? Anyway it will happily generate cards with
nonexistent (base) types.
Donald Trump
{}{}{} (Empty mana circles)
[Image: could be Donald Trump and Imperial Palace Guards]
POTUS - Don'task target creature.
1{U},{T}: Draw a card
areoiarg;iargea
a;eroigja;oerijg
[Image: a surrealistic depiction of people in kind of georgian dress?]
a;rgoijaer;oigjaerg - a;rgoijaer;oigjaerg
ifnd has access to look at the top card of target player's library.
(it's almost a month after they've shuffled)
Mark Rosewater
{} (Empty mana circle)
[Image: no idea. Something out of Bladerunner?]
Boss
2, {T}: Create a 0/1 colorless Clue artifact creature token.
Conclusions:
a) The ability text is not bad. Sometimes it makes sense, sometimes it doesn't.
b) It has absolutely no clue of the relation between mana costs and abilities,
but that's fine because neither does WoTC.
c) It will happily reproduce existing cards, but probably only if they have many reprints.
d) Forget about generating coherent images.
e) Forget about generating coherent reminder text.
For the last two tasks in particular, images and character text, my hunch is
that one would need to train on way, way more M:tG specific data. Or it might
need a separate system trained on a different prompt, because it doesn't seem to
find enough information in the generated card text or fluff.
Verdict: MaRo's job is still secure.
Also, having seen the attempt at M:tG Salvation that I think powers
RoboRosewater, this is not a substantial improvement over that. It would be if
it could produce meaningful art, but. No.
There is a popular discord (PlayEDH) where people play MTG over webcam against one another. Due to the nature of MTG it's important that the deck each player is wielding be properly balanced in power level against each opponent. (For those unfamiliar, it's possible to construct highly efficient, and expensive, MTG decks that trigger game-winning infinite combos within 1-4 turns. There's a continuous scale of deck effectiveness from this point). These power levels are pre-checked by volunteers of this discord.
I had the idea of aggregating all decks + their graded power levels and training a prediction network capable of this task. The side effect being it could also tell you which cards in your deck could be changed to increase it's predicted power.
I ended up abandoning the project, largely due to the painful nature of parsing the discord logs. This reminds me of that project, primarily due to needing to generate a meaningful/compressed embedding of the cards prior to training the deck-level network. Anyways, nice work!
I don't feel like this is a good application of predictive networks, but maybe I'm wrong. Tiny changes in wording of a card can make or break an exploitable synergy. You can say "tigers basically look like this, ish" to an image recognizer, but you can't just say "decks that look kinda like this are super strong; decks that look kinda like that are super weak". I'd think the best approach here would be to have an agent just play the deck against other decks a million times with an evolving strategy. I know if you say the term "genetic algorithm" nowadays you get laughed at and branded as an old-fashioned ignoramus who doesn't understand real AI, but sometimes the answer is to get off the bandwagon.
Magic the Gathering cards have pretty standard and predictable wording and keywords. Not sure it could understand everything, but there would be easy patterns that apply to hundreds or thousands of cards.
Fun fact, the cards are standard enough that for MTG Arena, they actually parse them with feature grammars instead of neural networks.
Oh wow really? I figured they had a domain specific language to program the card interactions. Pretty cool they can parse the text directly.
Can you elaborate or point to a source? This is highly relevant to my interests.
I don't think GP is saying we'd have difficulty encoding the cards. I think they're saying that deck performance is very sensitive to minor changes, and dependent on a lot of interactions between sets of cards.
To add to that point, decks can be good or bad based on the ecosystem (meta) they're playing in. A deck that aims to rush you down might be great in a meta where players expect slow decks, but terrible in a meta where many decks have means of healing themselves.
Exactly - the landscape of decks is extremely chaotic and I can't imagine gradient descent having any real power to discover the few towering singularities of super-exploit power-decks when changing a 3 to a 2 in the middle of the effect description of one card would render the same deck just meh. You don't really find exploits by approaching them slowly from a distance.
EDH less so though due to the bigger deck size and 1 copy per card limitation. This means you end up with bigger groups of cards with common synergies vs specific sets of cards you need to draw in regular 60-card.
Sometimes there's subtlety. Well it's a language unto itself, that's why everyone can play with any language cards (except Asian language cards sometimes) no problem. It's mostly image recognition, you see the image and you're like "Oh fuck, that's the last thing I wanted him to play!" And weep a little inside, from the pain of losing alone, no bets really. Never bet on the outcome of a casual game.
I created a (hopelessly incomplete) model of a MtG game and tried to use it to measure deck mana balance dynamically instead of statically. It was such a fun project but a ton of work and eventually I lost interest. I may resurrect it someday.
I had really grand visions of using it and machine learning (reinforcement learning) to have it pick its own decks.
https://news.ycombinator.com/item?id=31078151#31079186
I wonder if you could adopt AlphaZero to this. Something like:
- Train a model using MCTS to play MtG games. The model takes an MtG game state and estimates the “value” (how likely current player will win) and “policy” (ideal move for current player)
- Each “game” has 2 phases: drafting cards to create a deck, and then playing the actual deck. So the model learns to both a create deck and play its deck well
- After training, you input a state where both players have “drafted” their decks, right before the actual gameplay. The output “value” is the power of Player 1’s deck relative to Player 2: ideally you want this to be as close to 0 as possible.
As a bonus you also get a model capable of actually playing MtG.
One nuance is that the “value” are not a complete ordering: comparing the values, you could get a situation where deck A > deck B > deck C > deck A. Honestly this is probably a benefit because it forces the players to use “skill” vs choosing the right deck for the right opponent.
This is the reason I gave up on MTG in the 90s. I was a broke teen and it was clear that tournaments were won by the biggest investors in the cards. So I went back to chess.
IMO the game has been designed to fix those balance problems. There's various subsets of cards that are legal in tournament play and I think only "Legacy" includes all of the original cards. I used to occasionally attend new set release weekends and play some sealed duels or some 2HG with a buddy. It's a good time - you get a box with a few boosters and some time to craft your deck.
IMHO draft tournaments for "friday night magic" if that's still a thing were significantly better and more fun cuz of this.
Drafts for new set releases are definitely some of my fondest memories.
Everyone opening new cards with no idea what they're going to get. You had to be extremely adaptable and there were different strategies to employ within the metagame of the format.
>”For those unfamiliar, it's possible to construct highly efficient, and expensive, MTG decks that trigger game-winning infinite combos within 1-4 turns. There's a continuous scale of deck effectiveness from this point”
You been to FNM too? /s
The cool thing about this project is that, from what I could generate, these could be legitimate cards. 2/2 blue flying. 3/4 zombie. 2/6 red giant. This is actually really cool. I’d love to see an AI generated green red aggro deck from this just to see how it would play.
4G "Put +1/+1 counter on creature" sorcery. Each part is plausible, but the combination unappealing :)
I used to know what kind of deck someone was going to play by what they brought to the table. A bag of counters… yeah ok R/G. A box of “extra cards”? Black zombie or rat packs. Absolutely nothing? Mono blue counter burn.
Just wondering - why play over webcam instead of using cockatrice or untap.in with supplementary voice chat?
Pretty sure doing that would require solving the Halting Problem.
There was a very popular Twitter account that was tweeting out a similar concept (starting way back in 2015, even!) https://twitter.com/RoboRosewater
LoadingReadyRun, a very popular MTG YouTube channel, even did a cube draft using only cards that were generated by RoboRosewater that I thought was funny to watch https://youtu.be/UuG5YLbwsQk
LoadingReadyRun frequently has done RoboRosewater and other AI MTG card segments during their Desert Bus telethon for charity.
There is nothing so funny as seeing these folks, sleep deprived and loopy, trying to read out these cards without being incapacitated with laughter. I've seen double and triple takes from just looking at the card combined with what the AI called it, and once they did a segment called 'Is It Playable Or Is It Not' off these cards that was very special... riffing straight-faced about pro strats on how the cards are played, except the cards are gibberish, so some offhand remark corpses the whole room...
Just last week they did another with a new set
https://www.youtube.com/watch?v=bbqS7PXKFhc
This was created by people on the MTG Neural Net Discord - if you're interested it might be worth checking out https://discord.gg/EH4BTDk
My husband and I play MTG (and do some speculative card investments on the side) and have been cracking up while slowly making our way through the LRR vod for this new AI Masters cube. So much great stuff.
Oof, now there's a name I have not heard in a long while! Has it really turned into a MTG channel? It used to be first and foremost a sketch comedy group that would occasionally do gaming videos.
There's one for Netrunner as well: https://twitter.com/roborunnercards
I don't think it's ready for prime time... My first card is giving me a headache trying to understand what it is doing!
https://snipboard.io/AXjDS7.jpg
The card is mostly nonsense but "it gets +1/+1/+1 until end of turn" really threw me for a loop.
To be honest, it's a bit like an Un-set card.
https://www.urzas.ai/cards/?card_id=56bbb053-68c8-4e52-a1e8-...
Hacker - Creature (Human Wizard) 3U Flash, Flying, Haste 2 / 2 "When it cries out, look around for prey."
Gotta love "Haste (This creature can't be blocked except by creatures with flying or reach)"
I have a GitHub repo to create more optimized encoding of MtG cards from the JSON card dumps: https://github.com/minimaxir/ai-generated-magic-cards
I also have a Colab Notebook which lets you generate cards from a trained AI on it, allowing you to specify components of cards to constrain the generation: https://colab.research.google.com/drive/1VOt090UzvltoBgMdUZm...
I had another tool to generate images of the AI-generated cards but unfortunately using Wine + Magic Set Editor on Linux is very fussy. I might revisit it someday.
Bastard Operator From Hell [1] https://www.urzas.ai/cards/?card_id=84f979cf-c377-4028-8d9e-...
[1] https://en.wikipedia.org/wiki/Bastard_Operator_From_Hell
Hey, a few months back I trained a NN to generate MTG cards. I submitted a post to the MTG subreddit but it got blocked as spam and I never managed to get the mods to approve it.
My question was whether natural language generating networks could be used as a tool to assist game design. I must say I'm quite impressed with the results. Many cards could be legit with minor tweaks and some balance.
The point isn't to produce fully procedural content, but to assist designers to produce better content faster. Honestly I think people should start taking these tools seriously in the procedural content generation world.
This is the (pretty rough) repo with my code.
https://github.com/angarg12/this_trading_card_does_not_exist
These are some examples of cards
Guardian of Chains Counter target spell. It deals 4 damage to any target
Orchid's Fury Target Vampire creature gets +1/+0 until end of turn
Surveyor's Arch Untap target player. It deals 3 damage to that player. You lose 1 life
Partisans of the Undying Search your library for a basic land card, reveal that card, put it into your hand, then shuffle
Caravan Ritual Enchant creature When caravan Ritual enters the battlefield, return target creature to its owner's hand. Activate only during your upkeep. Equip {2}
Brahms of the Grave When Ithabadi Troghr enters the battlefield, return target creature card from your graveyard to your hand. It gains haste until end of turn'
Sleeping Dread Knight Flying (This creature can't be blocked except by two or more creatures card types.) Whenever Sleeping Dread Knight deals combat damage to a player, creatures you control get +X/+X until end of turn
Genswurm, the Flesh Orchard When Gnojscos, God of Vampires enters the battlefield, sacrifice a land. {5}{G}{G}, Sacrifice Genswurm: Draw a card
Storm Call Choose up to two target lands. You gain 1 life. An opponent has "{T}, Sacrifice Storm Call: Regenerate this permanent, then create a token with "{T}, Sacrifice Storm Call: Add up to X +1/+1 counters."
Wandering Hollow {T}: Create a red and white Zombie artifact creature token with base power and toughness 5/5. Illus. Angel Albatross on the battlefield (This creature enters the battlefield with X +1/+1 counters on it. When it dies, return it to the battlefield under your control.)
I was looking at the advanced options, and specifying Name, Mana Cost and Type don't seem to do what I expect.
Example:
Fire Bomb 2R Instant
the mana is loaded as 2R instead of 2(Mountain Symbol) and the name/type don't seem to line up with what is generated.
Is there something I am missing here or do those inputs just override what is on the card?
you need to put mana cost as {2}{R} !
https://www.urzas.ai/cards/?card_id=1c9e446b-608b-4b21-a87b-...
> Cabal Transfixion - Instant Add {B} for each opponent. “Reveal the top card of your library. You choose a card.” -- Ignore. 1 {B}
It's been a while since I played, but flavor text is not actionable, correct? Pretty funny
Correct. While funny, this would be nothing but a rules nightmare and source of arguments for players. Would never happen.
"Those who cannot get along with humans often make them wizards." Love this text.
2/2 red flying angel with a 4R cost, a bit expensive BUT its ability is pay R and get +1/+0. Damn.
https://www.urzas.ai/cards/?card_id=82e1f185-2cfa-4b07-96b5-...
I loved that one, but it also gives broken cards like this though:
text right to cost.
effect is all mangeld up "+1+1/+0" ? "creatures you control gain control of artifcats you control"?
flavor text talks about shuffling hands.
https://www.urzas.ai/cards/?card_id=4ca04b29-f84c-4d48-95d8-...
Artifcats are obviously artifact cat creatures; there are currently 12 among real cards.
Seems like a slight variant of the OG Shivan Dragon!
Illustrations are impressive, but text seems very fragile. I generated in sequence from names:
"Rocket Lake" is completely wrong: Whiskey Lake is drunk:https://www.urzas.ai/cards/?card_id=2ff42256-1794-4720-a008-...
the generated card for me is somehow reversed. makes me wonder if the image is captured on the client-side and then uploaded.
I also got a reversed image: https://www.urzas.ai/cards/?card_id=c724aa3b-80d0-488b-b83b-...
This is really cool! I noticed a few things you might be interested in:
It looks like there might be issues rendering mana costs that have, e.g., 1GG where it does not render the second G. That is to say, it's rendered but only the barest left edge can be seen. This appears to only be the case if the card's name is sufficiently long (I noticed this with "Bethen, Cenn's Heavenly Sleep").
That being said, I have no idea how powerful Bethen, Cenn's Heavenly Sleep really is as a 4/4 flyer because it's CMC is "at least 3" because I can't see the full mana cost. The mana costs that I can see seem to suggest that the card's strength matches the mana cost pretty well, though, so I'd guess Bethen's cost was 4 or 5.
The text can sometimes say some weird things (from a 2/2 Zombie creature that costs 1 B(lack) called Null Slayer; also Zombie Human Clue is my new favorite creature type):
> (1 B(lack), Exile this card from your graveyard: Create a token that's a copy of it, except it's a black Zombie Human Clue [it's amusing to me that the reincarnated token gains the Human type] with no mana cost. Exile it at the beginning of the next end step or if it would leave the battlefield [the latter half is redundant with it being a token]. You gain life equal to the life lost this way [good to know?].)
It's still really impressive the effects it comes up with!
>Exile it at the beginning of the next end step or if it would leave the battlefield [the latter half is redundant with it being a token].
It's not necessarily redundant or useless, there are some cards that will trigger off exiling permanents, or count the number of permanents that have been exiled during the turn to change how powerful an ability is, so if it was destroyed in battle or kill-spelled and instead exiled, it would be more useful than it simply being destroyed unexiled since it would trigger the ability or increase the count of permanents exiled that turn.
Oh, that makes sense. It doesn't technically exile when it's removed from the battlefield; there's just nothing to come back.
Thanks for the clarification!
To explain my position a bit more, I was considering, e.g., Restoration Angel but that's still moot with your point.
Not quite, it actually does fully exile, and even exists very briefly in the exile zone, but then fizzles once state based actions are checked again, which is usually very quickly.
I'm having too much fun with this. I just generated Pyromancer's Purge[0] (it doesn't do anything and I can't stop giggling to myself; I want more of these that seemingly do something but then actually just nothing):
1R
Instant
This spell costs 1 less to cast if you control a creature with power 4 or greater.
Scavenge 1R (1R, Exile this card from your graveyard: Put a number of +1 / +1 counters equal to this card's power on target creature. Scavenge only as a Sorcery.)
[0] https://www.urzas.ai/cards/?card_id=b85a4661-f723-4419-ae64-...
The flavor text really makes the card. "It scavenges with a tide of deceit" makes it feel as if the AI knew the card did nothing when scavenging.
> Foreboding Blast deals 2 damage to target creature and 2 damage to each creature your opponent controls. {1}{R}.
That's crazy powerful for 2 mana!
Also you found an error. “Your opponent” is not valid in the language of M:TG it needs to be “target opponent” because “your opponent” is not well defined outside of two-player games.
There are examples of MTG cards referring to a single opponent in old editions[1], digital editions[2], and Un-sets[3].
[1]: https://scryfall.com/card/leg/6/clergy-of-the-holy-nimbus
[2]: https://scryfall.com/card/ymid/14/clone-crafter
[3]: https://scryfall.com/card/ugl/62/gus
I swear I also remember some burn spells that target a creature and then also deal damage to that creature's controller. I'd guess the wording came from trying to combine that with something else.
Yep, Chandra's Outrage, for example.
"Chandra's Outrage deals 4 damage to target creature and 2 damage to that creature's controller."
Sure: that's why we have the oracle text.
But in this context it seems that this applies to all the other creatures of the player(owner) of the target crearure.
It’s like a one-sided pyroclasm on steroids. And pyroclasm was a playable card.
Believable art, text and flavor text : https://www.urzas.ai/cards/?card_id=9d76fd94-95b2-4d20-bbb3-...
My card came out mirrored lol
https://www.urzas.ai/cards/?card_id=511b085d-da3a-4ab0-af20-...
I've had a lot of fun playing around with this, great job! One thing I thought was awesome was the imo incredible flavor this randomly generated card has all around: https://www.urzas.ai/cards/?card_id=528291aa-33f8-40b8-a7be-...
I thought it was so good I checked if a similar card already exists, but to the best of my knowledge it does not. Very cool!
Is the card rendered mirrored for anyone else? Chrome/MacOS
Came here just to mention that, but I'm Chrome/Windows.
Me too with same tools.
How do we use the wombo api? Can't find documentation.
Would love to know this as well! Are you using an official API or did you reverse engineer it yourself?
Also curious about what from the outside looks like an off-label usage.
I would play AI generated MTG Draft in a heart beat. Maybe a 50/50 mix with real cards so you don't have to learn every single card every game.
Pretty good! All of the cards I saw were reasonably balanced - not unlike looking through random cards in a new set. Makes me think there could be a game type online where all cards are automatically generated. Or, perhaps a player could fine-tune their generator and play with totally novel cards that fit their preference or play style.
Wow! Imagine a new tournament category where you receive an AI generated deck on every match! Sounds fun :)
Slurp Juice - https://www.urzas.ai/cards/?card_id=a0dff4c6-2e59-482b-9f24-...
Elon Musk - https://www.urzas.ai/cards/?card_id=a5064377-edf2-4792-9de0-...
Richard Stallman - https://www.urzas.ai/cards/?card_id=81431fca-e2fa-4922-8316-...
The Gay Agenda - https://www.urzas.ai/cards/?card_id=e53674d7-4838-4f6b-8ec6-...
Donald Trump - https://www.urzas.ai/cards/?card_id=0b505456-4730-4be8-b222-...
Cult Of Personality - https://www.urzas.ai/cards/?card_id=9ca01fe6-17c3-4d3e-a3ab-...
https://www.urzas.ai/cards/?card_id=56bbb053-68c8-4e52-a1e8-... This one is cool!
I’m happy with this one https://www.urzas.ai/cards/?card_id=7da46b0a-9975-4d8a-bbe1-...
Anyone know the correct mana syntax for advanced options? I tried 4RRR and got the text "4RRR" in the mana cost, instead of red mana symbols and 4 colorless.
{4}{R}{R}{R}
How "far" from the training art is the resulting generated art? Do the generated cards have features which are recognizably lifted from the training data?
I absolutely love the domain name. I'm immediately pulled back 23 years to sitting in my uncle's living room.
This is seriously cool—I had way too much fun playing with it. Wish there was a way to specify a creature subtype!
This is great! The couple cards I generated were spot-on in terms of what felt like a realistic mtg card.
I love this.. idea!
I have for a long time wanted to skin MTG with the names and images from /r/bossfights
All the ones I'm generating are mirror imaged left-right reversed. Text, image, everything.
"Click the card to generate" does not do anything for me - any ideas why?
The backend seems a bit stack. I think we (or others) are overflowing it with requests :P :D
Nice! It would be interesting to play a game with a deck full of cards from this.
We are experimenting with a deck printing API! We printed a couple of decks and played with them - it was really delightful and fun!
Image loading is down right now, Wombo is throwing more GPUs at it!
Your website is just a blank page.
Minimalism is all the rage these days!
i just generated a card with the text mirror reversed. interesting
More GPUs incoming :)
super funny! :D
Let's try a few things.
In some of the tries below I didn't realise the URL is unique to a card. In others, I did, but I copied the URL too soon and it points to an earlier card.
First, some random generation, without "Advanced Options"
Note that the {T}ap symbol on this is...red. Like a red mana symbol.https://www.urzas.ai/cards/?card_id=78e7e720-c965-45f8-82ca-...
https://www.urzas.ai/cards/?card_id=1ff17f7e-c112-4a58-8ebe-... https://www.urzas.ai/cards/?card_id=12ce1065-cfa5-4e67-bbeb-...The following were made with "Advanced options": name, mana cost and type chosen by me.
https://www.urzas.ai/cards/?card_id=1ff17f7e-c112-4a58-8ebe-...^ I was trying to get it to geneate something offensive, I confess.
https://www.urzas.ai/cards/?card_id=56991776-6250-4940-ac29-... https://www.urzas.ai/cards/?card_id=96966793-2a0b-4b5d-9fb0-... https://www.urzas.ai/cards/?card_id=96966793-2a0b-4b5d-9fb0-... https://www.urzas.ai/cards/?card_id=19b78a8c-a058-4adc-95b2-...^ I only asked for "Enchantment" on this one but it correctly added "Aura" to match its Ability.
https://www.urzas.ai/cards/?card_id=7fa99ef1-8708-40b4-a387-...^ In this card too the Tap symbol has a red hue. Why?
https://www.urzas.ai/cards/?card_id=6b8d57c0-0477-41fe-96af-... https://www.urzas.ai/cards/?card_id=6b8d57c0-0477-41fe-96af-...Let's try a few curveballs.
https://www.urzas.ai/cards/?card_id=0549337b-0b6b-4328-bbac-...^ OK, so if we give it the name, cost and type of a known card...
https://www.urzas.ai/cards/?card_id=a64540fe-2d9c-49be-8381-... https://www.urzas.ai/cards/?card_id=a64540fe-2d9c-49be-8381-...^ Ah-hah! Dark Ritual has not seen nearly as many reprints as Bolt and Elves, so it can't be reproduced as easily. My theory.
https://www.urzas.ai/cards/?card_id=363ad84e-4379-44f6-8447-...^ It can sort of generate nonsense but not quite. Also, it can't close parens. Typical.
https://www.urzas.ai/cards/?card_id=c0c106da-1fae-4733-bb89-...^ What? What could those people do? Anyway it will happily generate cards with nonexistent (base) types.
https://www.urzas.ai/cards/?card_id=962a7972-f6b4-4cfc-8200-... https://www.urzas.ai/cards/?card_id=13a713b4-cc67-4434-8c31-...^ They can't be playing a combo deck then.
https://www.urzas.ai/cards/?card_id=f1441b95-59a9-4527-a759-...OK, I'm out of ideas.
Conclusions: a) The ability text is not bad. Sometimes it makes sense, sometimes it doesn't.
b) It has absolutely no clue of the relation between mana costs and abilities, but that's fine because neither does WoTC.
c) It will happily reproduce existing cards, but probably only if they have many reprints.
d) Forget about generating coherent images.
e) Forget about generating coherent reminder text.
For the last two tasks in particular, images and character text, my hunch is that one would need to train on way, way more M:tG specific data. Or it might need a separate system trained on a different prompt, because it doesn't seem to find enough information in the generated card text or fluff.
Verdict: MaRo's job is still secure.
Also, having seen the attempt at M:tG Salvation that I think powers RoboRosewater, this is not a substantial improvement over that. It would be if it could produce meaningful art, but. No.