[HN Gopher] Show HN: AI generated Magic The Gathering cards ___________________________________________________________________ Show HN: AI generated Magic The Gathering cards Author : mostelato Score : 138 points Date : 2022-05-17 16:00 UTC (7 hours ago) (HTM) web link (www.urzas.ai) (TXT) w3m dump (www.urzas.ai) | JRKrause wrote: | 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! | wyldfire wrote: | 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 | moron4hire wrote: | Pretty sure doing that would require solving the Halting | Problem. | gabereiser wrote: | >"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. | rhn_mk1 wrote: | 4G "Put +1/+1 counter on creature" sorcery. Each part is | plausible, but the combination unappealing :) | binarymax wrote: | 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. | wyldfire wrote: | 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. | virtue3 wrote: | IMHO draft tournaments for "friday night magic" if that's | still a thing were significantly better and more fun cuz of | this. | aerovistae wrote: | Just wondering - why play over webcam instead of using | cockatrice or untap.in with supplementary voice chat? | armchairhacker wrote: | 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. | feoren wrote: | 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. | thebean11 wrote: | 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. | karpierz wrote: | 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. | thebean11 wrote: | 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. | vgel wrote: | Fun fact, the cards are standard enough that for MTG Arena, | they actually parse them with feature grammars instead of | neural networks. | thebean11 wrote: | Oh wow really? I figured they had a domain specific | language to program the card interactions. Pretty cool | they can parse the text directly. | _sh4dow_ wrote: | moralestapia wrote: | Nice! It would be interesting to play a game with a deck full of | cards from this. | mostelato wrote: | We are experimenting with a deck printing API! We printed a | couple of decks and played with them - it was really delightful | and fun! | HelloNurse wrote: | 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] | ALittleLight wrote: | 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. | nemacol wrote: | 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. | mostelato wrote: | Image loading is down right now, Wombo is throwing more GPUs at | it! | WhyOhWhyQ wrote: | 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? | KaoruAoiShiho wrote: | How do we use the wombo api? Can't find documentation. | rmeertens wrote: | Would love to know this as well! Are you using an official API | or did you reverse engineer it yourself? | kleiba wrote: | "Click the card to generate" does not do anything for me - any | ideas why? | tecleandor wrote: | The backend seems a bit stack. I think we (or others) are | overflowing it with requests :P :D | minimaxir wrote: | 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. | wilhil wrote: | 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 | MrMember wrote: | The card is mostly nonsense but "it gets +1/+1/+1 until end of | turn" really threw me for a loop. | YeGoblynQueenne wrote: | To be honest, it's a bit like an Un-set card. | impalallama wrote: | i just generated a card with the text mirror reversed. | interesting | iamcurious wrote: | "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-... | kuang_eleven wrote: | Seems like a slight variant of the OG Shivan Dragon! | iamcurious wrote: | 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-... | HelloNurse wrote: | Artifcats are obviously artifact cat creatures; there are | currently _12_ among real cards. | eutropia wrote: | 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. | dleavitt wrote: | {4}{R}{R}{R} | nick_ok wrote: | https://www.urzas.ai/cards/?card_id=56bbb053-68c8-4e52-a1e8-... | This one is cool! | ianferrel wrote: | All the ones I'm generating are mirror imaged left-right | reversed. Text, image, everything. | captn3m0 wrote: | Is the card rendered mirrored for anyone else? Chrome/MacOS | TheDauthi wrote: | Came here just to mention that, but I'm Chrome/Windows. | aleksiy123 wrote: | Me too with same tools. | haolez wrote: | Wow! Imagine a new tournament category where you receive an AI | generated deck on every match! Sounds fun :) | frob wrote: | I absolutely love the domain name. I'm immediately pulled back 23 | years to sitting in my uncle's living room. | Piribedil wrote: | Believable art, text and flavor text : | https://www.urzas.ai/cards/?card_id=9d76fd94-95b2-4d20-bbb3-... | chc4 wrote: | 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 | kimixa wrote: | 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 | cptcobalt wrote: | 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. | lukifer wrote: | There's one for Netrunner as well: | https://twitter.com/roborunnercards | kuang_eleven wrote: | 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. | SN76477 wrote: | I love this.. idea! | | I have for a long time wanted to skin MTG with the names and | images from /r/bossfights | chillpenguin wrote: | This is great! The couple cards I generated were spot-on in terms | of what felt like a realistic mtg card. | krapp wrote: | Slurp Juice - | https://www.urzas.ai/cards/?card_id=a0dff4c6-2e59-482b-9f24-... | maxverse wrote: | > 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! | TimPC wrote: | It's like a one-sided pyroclasm on steroids. And pyroclasm was | a playable card. | TimPC wrote: | 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. | hutzlibu wrote: | But in this context it seems that this applies to all the | other creatures of the player(owner) of the target crearure. | latexr wrote: | 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 | Izkata wrote: | 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. | TheDauthi wrote: | Yep, Chandra's Outrage, for example. | | "Chandra's Outrage deals 4 damage to target creature and | 2 damage to that creature's controller." | wyldfire wrote: | Sure: that's why we have the oracle text. | vbhakta wrote: | More GPUs incoming :) | AftHurrahWinch wrote: | 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." | jakelazaroff wrote: | Gotta love "Haste (This creature can't be blocked except by | creatures with flying or reach)" | JadoJodo wrote: | 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 | snarf21 wrote: | Correct. While funny, this would be nothing but a rules | nightmare and source of arguments for players. Would _never_ | happen. | ai_ja_nai wrote: | super funny! :D | angarg12 wrote: | 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.) | msarchet wrote: | 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? | nick_ok wrote: | you need to put mana cost as {2}{R} ! | tintor wrote: | Your website is just a blank page. | mostelato wrote: | Minimalism is all the rage these days! | Acceptance wrote: | My card came out mirrored lol | | https://www.urzas.ai/cards/?card_id=511b085d-da3a-4ab0-af20-... | pmontra wrote: | 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 | lcnPylGDnU4H9OF wrote: | 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! | Zircom wrote: | >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. | lcnPylGDnU4H9OF wrote: | 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. | lcnPylGDnU4H9OF wrote: | 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-... | DLTADragonHawk wrote: | 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. | karweiss wrote: | This is seriously cool--I had way too much fun playing with it. | Wish there was a way to specify a creature subtype! ___________________________________________________________________ (page generated 2022-05-17 23:00 UTC)