Just curious about your approach to increasing the resolution, since you mentioned that it was hard-coded in the network: did you look at all into making the convolutional/deconvolutional part of the structure recursive? I had good luck with adapting the DCGAN code to use recursive deconvolution, which is nice for passing in how many iterations of deconvolution I want without having to retrain the network.
Just curious about your approach to increasing the resolution, since you mentioned that it was hard-coded in the network: did you look at all into making the convolutional/deconvolutional part of the structure recursive? I had good luck with adapting the DCGAN code to use recursive deconvolution, which is nice for passing in how many iterations of deconvolution I want without having to retrain the network.
I could have / should have done that. As written, the code has a 32x32 network configuration and a 64x64 network configuration. I changed it so that I could create an NxN configuration for some value of N that I passed. Easy enough. But yes, recursive deconvolution is a thing, and I should look into it. My first goal right now is to condition the network using tags for cards, so that it learns to relate goblin/sorcery/green card artworks with each other. That way, I can control the output by asking it to make something extra "goblin-y", for example. That increases the odds that the art will make sense in the context that I want to use it. I just about have that ready to go; I'm just waiting on the opportunity to run the code again, and that should be soon. Then I can see about restructuring things to get higher resolution images out.
A pipe turning into a bird is awesome. I'd really enjoy having a script that you could give it an image and it 'reimagined' it as something different. Also, the art in the card you posted looks really good at thumbnail size; it looks almost real. The problem is, when you see the card at normal size you see the art at the lower resolution and it doesn't look that great again. But I'm sure you'll get it rendering higher-res stuff soon.
Massive Hunter update! Added discrete search fields for rules, flavour, type text and artist name. Also; any blue text you see in the list results is clickable, so if you're viewing all cards with 'war' in the flavour text, you can click on the 'knight' part of Adun Oakenshield and voila, the Knight subtype filter gets added to the list. If you click that again, the filter goes away. The filters now stack inside the filter boxes, so to remove one just click the specific subtype. Other clickable stats are power, toughness, and in the Details tab (i.e. when you click on a card image), the set name, artist name and legalities.
Even more fun; you'll notice a new tab, 10 closest cards. This brings the neural network research into Hunter, showing you the 10 closest cards (surprise!) based on rules text cosine similarity. I'm not quite happy with how they're currently displayed, hovering and enlarging has problems in some situations. I'm very open to suggestions as to how people would like to see the 10 closest cards (or maybe you want fewer than 10?).
As you'll notice, the types/subtypes aren't rendered perfectly yet (no spaces between words, the dash appears regardless) but this is still a prototype, and I'm working on that. Also, a question: would people mind only having one card be selectable at a time? If that were the case, it would enable me to implement Disqus comments while now, with the potential for multiple cards selected/opened, this doesn't work. Related question; does the expanding list item work, or would you guys prefer a side panel on the right that showed selected card info? Something like this very rough mockup.
A pipe turning into a bird is awesome. I'd really enjoy having a script that you could give it an image and it 'reimagined' it as something different. Also, the art in the card you posted looks really good at thumbnail size; it looks almost real. The problem is, when you see the card at normal size you see the art at the lower resolution and it doesn't look that great again. But I'm sure you'll get it rendering higher-res stuff soon.
Massive Hunter update! Added discrete search fields for rules, flavour, type text and artist name. Also; any blue text you see in the list results is clickable, so if you're viewing all cards with 'war' in the flavour text, you can click on the 'knight' part of Adun Oakenshield and voila, the Knight subtype filter gets added to the list. If you click that again, the filter goes away. The filters now stack inside the filter boxes, so to remove one just click the specific subtype. Other clickable stats are power, toughness, and in the Details tab (i.e. when you click on a card image), the set name, artist name and legalities.
Even more fun; you'll notice a new tab, 10 closest cards. This brings the neural network research into Hunter, showing you the 10 closest cards (surprise!) based on rules text cosine similarity. I'm not quite happy with how they're currently displayed, hovering and enlarging has problems in some situations. I'm very open to suggestions as to how people would like to see the 10 closest cards (or maybe you want fewer than 10?).
As you'll notice, the types/subtypes aren't rendered perfectly yet (no spaces between words, the dash appears regardless) but this is still a prototype, and I'm working on that. Also, a question: would people mind only having one card be selectable at a time? If that were the case, it would enable me to implement Disqus comments while now, with the potential for multiple cards selected/opened, this doesn't work. Related question; does the expanding list item work, or would you guys prefer a side panel on the right that showed selected card info? Something like this very rough mockup.
Right now the 10 closest cards aren't showing up at all - I just get a message saying "no closest cards"
Which card are you looking at? Some of them slipped through the process for reasons unknown and that I'm trying to debug. 99% of cards (that aren't Un-set or scheme/avatar cards) have got the 10 closest ones, though.
edit: Oh, I see what you mean. I changed the sources of the closest cards in the latest update, clearly I messed something up. Should be able to fix that today.
edit again: No, it's the server's card index that hasn't been updated with the flip/closest card info. I'll be able to fix that soon.
edit update: Fixed the index issue, you should now see closest 10 cards as well as doublesided ones. Also improved the tag filters; removed the blue colour but if you hover over something that can be added as a filter, it'll show up with a blue background. I think that's an improvement.
The closest to that is something like this, where you have a specific card name in the search field. Since I have no 'details page' per card, there's no concept of 'selecting' a card per se. That's something I can change, if that's the better way of doing it though.
edit: I've been messing with the Grid view, and come up with something like this after stumbling across another startup magic site, combodeck.net. Thoughts?
I'm taking another stab at a Robo-Cube for a local games convention coming up this weekend. I've copied everything rules-legal from @RoboRosewater into MSE and will probably start sifting this thread next. Once I've got a fun and varied set, I'll trim it down until I have some semblance of a mana curve.
Stuff that'll be on my mind as I pick things:
I'm only using cards in human-readable format. Time's too tight for me to parse raw dumps.
I'm not editing costs or effects from what the RNNs produced. Color pie? Balance? Bah.
I do correct minor grammar errors and trim superfluous text. Cards that are just word soup whose "intent" can't be guessed at, though, I skip.
One trend I'm noticing, though, is that there is a huge overabundance of creatures vs. other types of cards in the RoboRosewater set, and to a certain extent those have floated to the top here too. So! What are your favorite RNN-generated non-critters? Point me at them and I'll do my durndest to get them onto a game table!
I've been working on that, too, using this thread and the roborosewater twitter feed. Been using deviant art to lo cate matching pictures. At first, I was Googling the card name and setting the art to be whatever was result 1 on a Google image search, but some names gave me no results.
Also, I strongly disagree with editing the output at all. The typos and incomparable text are part of the charm. It's like playing during alpha wI th out a rule book. What does the card do? Who knows, give it your best shot!
I am about 75 percent done. Do ya want the mse2 file when I'm wrapped up?
Sure, that sounds awesome, thank you! If you don't have a good place to host it, I'm "sabrecat" at Gmail.
I go back and forth on the editing thing. I agree about the charm, but on the other hand, I'd like a playable game. I don't want cards that will bring the game to a screeching halt or which no one will draft because they don't actually do anything by present rules. But I guess that can be accomplished at the card selection level, leaving minor oddments in place on individual cards.
More results to come from me before too long. I've had a slew of personal and professional crises to deal with (these things always seem to happen concurrently). I'm keen on getting things to a point of maturity and stability where we can reliably generate relevant artwork for RoboRosewater cards.
On a related note, I retooled my scripts so that I could feed in animations like GIF files.
Still no face on the Lampshade Lady, but as I pointed out before, I messed up the bounding boxes when we trained the last network, and faces got cut out so often that the network seems to strategically place objects in the way of faces in order to avoid having to draw them. That'll get fixed in the next iteration, and we'll also have increased resolution.
Again, the idea here isn't to try and perfectly reconstruct the input, but to use the input as a means of situating ourselves inside the vector space in a region that structurally/semantically resembles the input. The waterfall, for example, isn't the original waterfall, but happens to be another, similar waterfall inside our miniature MTG-art-inspired universe. You can think of these animations as if you were looking through a tiny pinhole into this bizarre little world.
It's fun to play with, because we never trained the system on animations, and it's nice to see that the concept of motion carries over well. That and it's fun to set people, places, and things on fire.
More to come in the near future. Sorry for the wait.
Oh, and I saw a fun paper by Li Fei-Fei's people at Stanford University on real-time neural style transfer and super-resolution. Like, a speed-up by a factor of 1000. Like I said several months ago, these improvements would come along :D. At this point, I'm just waiting for someone to come out with a Google Cardboard app so I can strap it on and see everything as a Van Gogh painting.
@nyrt: Fascinating find! Thank you for sharing!
@Elseleth: I'm excited to see your robo-cube come to fruition. I can try and pull out all the good non-creature cards that I can find later for you.
Sure, that sounds awesome, thank you! If you don't have a good place to host it, I'm "sabrecat" at Gmail.
Cool, thanks. I'll toss my work product up on Dropbox or something in a few days once I've at least taken a stab and finalizing all of the cards. You'll want to tinker with it further if you are going to correct the typos, and almost certainly you'll want to trim some of the cards. I included just about every result posted by Talcos in this thread prior to the twitter feed going up, and then everything on Roborosewater. So, there's a lot there to choose from.
I go back and forth on the editing thing. I agree about the charm, but on the other hand, I'd like a playable game. I don't want cards that will bring the game to a screeching halt or which no one will draft because they don't actually do anything by present rules. But I guess that can be accomplished at the card selection level, leaving minor oddments in place on individual cards.
Yeah, it's personal preference. In my view, the only reason to make a cube out of the product of these neural networks is to preserve the charm of having to figure out (between beers) what exactly the card is supposed to do. Gotta reach a consensus on what "Birdiestruck" means ("1 Damage dealt by spells or permanents with Birdiestruck is fatal to Bird creatures?") as you play it.
If you're gonna fix em, then you're just playing a crappy-designed custom set, ya know?
@Elseleth: I'm excited to see your robo-cube come to fruition. I can try and pull out all the good non-creature cards that I can find later for you.
If you're going to do that, shoot me a line, too. I will note, though, that I didn't really see a huge disparity in the number of creatures versus spells; at least not that you wouldn't see in a regular Magic set. Removal tends to be really rare, though, and when it does exist, it's AMAZING. (Coral Witch ftw!) Also, the network loves to make Elves, Goblins, Beasts, Humans, and Horrors, but not so much other tribes. Odd.
If you're going to do that, shoot me a line, too. I will note, though, that I didn't really see a huge disparity in the number of creatures versus spells; at least not that you wouldn't see in a regular Magic set. Removal tends to be really rare, though, and when it does exist, it's AMAZING. (Coral Witch ftw!) Also, the network loves to make Elves, Goblins, Beasts, Humans, and Horrors, but not so much other tribes. Odd.
Yeah, I can look into that later and let y'all know. And yeah, the distributions that the machine learns and the actual distributions can vary. I mean, within cards, it does a good job, like Dragons and Angels should almost always have flying, but in terms of the distribution of card types, colors, etc. there can be some deviations.
Like you said, I think that some creature types get subsumed into others. Like merfolk and vedalken are functionally similar, but there are more merfolk than vedalken, so if it wants to create a Caller of Gales-esque utility creature, it might be biased towards merfolk even when a vedalken would have worked just as well. Upping the temperature can fix that, but it also causes it to make more mistakes as a result of its frantic excitement.
-------
As an aside, I just got done with fielding questions over Skype reagrding population projections using neural networks for the benefit of folks at a US Census Bureau conference. To paraphrase myself: "I know that our techniques must seem like witchcraft to you... and you would be right! It *is* witchcraft. And it's incredibly effective."
Maybe it's just @RoboRosewater who likes creatures. I only trimmed the most incomprehensible cards, and ended up with 111 creatures vs. 50 among everything else.
EDIT: OK, I'm coming around to the idea of having nonsense keywords and whatnot in there. @MaximumC, would you mind sharing your work in progress? I'll need to print these tonight or tomorrow if I'm to have them ready for the weekend.
Oh, and I saw a fun paper by Li Fei-Fei's people at Stanford University on real-time neural style transfer and super-resolution. Like, a speed-up by a factor of 1000. Like I said several months ago, these improvements would come along :D. At this point, I'm just waiting for someone to come out with a Google Cardboard app so I can strap it on and see everything as a Van Gogh painting.
Woah! Near-real-time performance is pretty mind-blowing.
Apparently I skipped way more Twitter @RoboRosewater cards than I'd thought. After I went back and put in every card I'd skipped, it was 182 creatures, 114 other.
I can probably make a 4-person cube out of what I've got, though as MaximumC noted, there is a serious lack of removal spells, hah. Definitely still interested in getting suggestions from folks for cards outside the Twitter set.
out of curiosity, would anyone mind seeding one of their nets to have it spit out some 0 cmc cards? (creature, artifacts, spells, w/e). I'm curious to see what it thinks would be a balanced 0 cmc card.
I had a look through gatherer to see what kind of things would appear, based on existing CMC 0 cards.
There were a few 0/1 Kobolds, and some artifacts with activated effects. A bunch of these are pure X costs, or roughly equivalent. There's also Suspend, and at least one card with Splice onto Arcane, and the pacts. Also, the back half of every transform card; I heard that was changing? There's also every single Mox, so I guess it's a little hard to predict the results solely from existing CMC 0 cards.
To get my set, I pulled all @RoboRosewater cards, added a chunk of removal and black from early in this thread, and grabbed 180 at random to print off. I went the "damn the torpedoes" route advocated by MaximumC, and it proved to be a great time. We went for consensus ruling of the four players whenever weirdness came up, with an axiom of "where possible, interpret card text such that it does something."
My deck started off URW, which I swiftly pared down to UR after struggling to get the right mana in my first game. I went for high-efficiency creatures like Slidshocking Krow (ruling was that Tromple and Mointainspalk did nothing, alas; folks felt 4/2 for U was quite enough), bolstered with punchy R effects like Necropousy (+3/+3 totem armor) and Lightning Wind (+5/+5 and flying for the turn).
Player2 went BW, aiming for massive card draw with plays like Garruk, Leap in the Carapas (creature with 1: draw a card) to bring out the game-ending Giant Loyod (land, BB, T: deal 5 damage to a player).
Player3 was G with a splash of U, getting lots of use out of aggressive creatures like Emberty (3/2, haste, shadow--no other creatures with shadow were in the cube!), Callerwast (land that on ETB spawns a hasted 3/3 Saproling) and Colelenhan Right (3/1 for G with a tap ability to draw a card for bringing a creature onto the battlefield).
Player4 was BGU, fielding a main force of hitters like Onoch Wall (5/5, may cast for free) with artifacts like Untarswell of Aira (1, tap for G or G) and Steel's Flapse (3, same tap effect as Untarswell but also generates a tapped 2/2 Goblin each turn) to help ramp up.
After getting crushed by Player2 in first game, I tried to bring in some white hate in the form of Living Paladin (enchantment, XUU, white spells cost 3 more to cast), but he just shrugged and played mono-black. I couldn't keep his Aacotelb Mright down (5/5 for 3B, pay 2B to bring back to hand from graveyard).
My matchup against Player4 went much better; he only managed to get small token creatures out while I hammered away with Amel'rpen Threestel (5/5 for 3U, returns two creature cards to hand from graveyard every upkeep).
I had Player3 on the ropes for a little while with a cool sacrifice cycle going: Goblin Marpher (1/1 for R, sacrifice a creature max 1/turn to get 2 +1/+1 counters) fed by the Bisor Slaver (2/1 defender for 1U, returns to hand from graveyard whenever a creature ETB). But then she dropped Deers of Aodo (1G destroy all permanents), and recovered much better than I did from the board reset.
I don't know too much about what happened in the matchups I didn't play. I did catch that Player3 swapped in her sideboarded Path of Bone (enchantment, GGGG, players can't cast spells without paying their mana costs) to keep Onoch Wall out of her hair. ^.^
After the round-robin was done, we decided to hold a voting round where we went thumbs-up/thumbs-down on whether to keep each card in the cube. The voted-out cards will be ditched and replaced with new RNN cards for a later iteration of the cube!
Aacotelb Mright
Agemental Beat (ruling: "it" is the player, not the card)
Ancient Donger
Appry Bloodshot
Ashisu, Gluttendain Djinn
Beom Bump
Bisor Slaver
Blast of Dart
Bloodruin Dead
Chall the Call
Cloud Hound
Coral Witch
Cornepority (ruling: "choose" should be "shuffle")
Craecher Feel
Creature
Cub Famitauriar
Demonic to you Cyclom
Devour of Servant
Dopbletabe Marla
Dreamn Changeling
Dream Seizer
Edal Overanty Rifts
Ethereal Bolt
For-Gaog (ruling: destroys all enchantments in play)
Gift of Caanndy (ruling: alternate effect takes place if countered)
Glusanch of Sliver
Goblin Marpher
Graspblaze Battlemage
Gristing Reef
Harchlatch
Heart Myr
Hydromorph Frog Core
Identless Horror
Ifcryper of the Necdoness
Impetufle Randor
Iron Weader
Joweraver Troning
Keldon Warrior
Kragu Affurion. Armagest
Lightning Wind
Magure of Lylem
Mardu Adept
Merrow Packly Cut
Mided Hied Parira's Scepter
Mimorbood of Drubdasting
Moonall Kros
Necropousy
Nimben Gerepist (ruling: deals damage to target creature or player)
Obelisk of the Wild
Outlongrift
Owerflight Loyalta
Paloki, Rarn of Dorrangerers
Paragon of Gethes
Prezon Shaman
Rasha Bloodscape
Rashal, Rings of Attendant
Rebirthbound
Reksring Gord Blider
Rold Dragon
Rootwanding Charm
Row of Madgusion
Sacred Fist
Saddint Hulk
Saprazzan Shield
Seal of Axsons
Shring the Artist
Skombladron Piric
Skull of the Chaseler
Slarecaster
Sludge of the Machine
Spider Sliver
Static Dwarf
Steel's Flapse
Streegoght Squad
Strings, the One
Stronghold Guardian
Sulvital Sliver
Templedden Rist
Teom Avatar
Teres Sarde
Tormenter's Charm
Torsethed Sliver
Untarswell of Aira
Vuruling Vitu
Werkunstewant of the Monaw (ruling: return to owner's hand)
Wildstoke Foulis (ruling: always 1/1 creature, player's choice whether green Centaur or blue artifact flying)
Wishra's Light
Yomiza-Trib the Martor
Ageseal's Artifact
Amel'rpen Threestel
Amostal Shrere
Apsedagu Ropoor
Avogeren Chasmat
Balmins Brovaligance
Barren Scar
Bimblard Blith
Blast Shark
Blood of Lavnion (ruling: "slay" is just "put into your graveyard")
Bloodmane Gargoyle
Callerwast
Calow of Wast
Clogud of Rarge (ruling: double Flying can't be blocked by normal Flying! but still not worth exiling your library)
Colelenhan Right
Commandengle
Content's Faster
Deers of Aodo
Deggry Barri
Desiziar Infernerity1
Dorsersteel Lava
Dragon-Beary Scarpel
Dragonheers
Eherglass Laberation
Elvosal Sadk
Emberty (ruling: where reminder text doesn't match the real rules of a keyword, both standard rules and the reminder text apply. Not that you ever want to block your own fliers, but whatever)
Encrashing Birds
Eviral Nearue
Exgo the Rickers (alas, no one could make sense of Horshers)
Flame's Field
Flumestooth of Marborge (ruling: T, T turns the card upside down. One untap brings it to tapped state. Not worth it to shuffle one's library)
Gargalian
Garruk, Leap in the Carapas
Gate of Kresh
Giant Loyod
Giant Ruins
Goldmy's Mana
Guissers Aach
Handso
Hendtance Ibunder
Heroia of Vandishade
Ibrided Fovern
Indical Lrightcaon
Kerrenders Joquots
Khinisana Mur
Kilkorn Radker
Kraeding's Ghost
Len Asywamatanl
Living Paladin
Lulteater Megavos
Mamoo World
Manduj Masthorow
Meinour
Micster Dawnscault
Miracight Monges
Mountain (the land Aura, not the basic land )
Noxlo Greater
Onoch Wall
Outtan Recruit
Pambash Warrior
Path of Bone
Pyredal Slamble
Razderod Rework
Ri Low's Teremage
Roon War Medoma (but Beom Bump made the cut... go figure)
Runger's Lill
Rute of Jeirast
Scalen of Urday
Seating Tute
Senterung Session
Sings of Junay
Skylacker Spirit
Slethward Bestroh
Slidshocking Krow
Sliverform Sliver ("this land" was a dealbreaker apparently)
Spellfeatter Wild
Spirit of Elemental
Sporatporing Angater
Strught Mailinds
Surs of Ally
Threshorge Wider
Tinglertal Bleem
Time Tide
Troll of the Barrelcruarian
Turn the Wilds
Wall of Plague
Weal's xaradless
Weatherseer Maggot
Worph of Engroft
Wulder of Boon
Yus Chasere
Zecross of Griffin
EDIT: Here's the MSE to spare you having to hunt around to see what any of the above are!
I am so jealous of you and your friends, getting to play with those cards. Got any pics of what they look like in paper form? What was your (and their) favourite card of the experiment?
I'm almost done with the MSE2+DeviantArt version. Only a few more cards to place and a few pieces of artwork to re-allocate. To be really appropriate, someone should actually e-mail all of the artists to see if they're cool with someone actually printing them for private use. I haven't done that yet. Once that's accomplished, you can get playing-card quality prints done for sub $100 per set, even for 300 cards or so, on numerous places online.
Anyway, Elseth, I'll have a draft for you this weekend, possibly tonight. Then I'll start working on a ROBOROSEWATER back for the cards.
Apparently I skipped way more Twitter @RoboRosewater cards than I'd thought. After I went back and put in every card I'd skipped, it was 182 creatures, 114 other.
I can probably make a 4-person cube out of what I've got, though as MaximumC noted, there is a serious lack of removal spells, hah. Definitely still interested in getting suggestions from folks for cards outside the Twitter set.
What I considered doing to fix this problem was actually use rarities. That is, commons are x4 in the cube, uncommons are x3, rares are x2, and mythics are x1. This leads to more expensive print run, but it allows you to manipulate the cards by moving absurd things up and necessary things (REMOVAL!) down in rarity.
They don't look all that special; they're prints using MSE defaults (I didn't take the time to get art for everything, yikes) on a printer that's starting to falter with old age, haha.
My fave from my deck was Cornepority, though I didn't actually get to play it. I also like Tormenter's Charm and Ethereal Bolt.
Player2 had a lot of respect for Goblin Marpher and Bloodruin Dead, in the voting round. Not sure what he most liked in his own deck other than the obvious power cards.
Player3 expressed a lot of love for Ancient Donger and Rold Dragon (she played Rold Dragon despite not doing much red, thanks to the green Suspend cost).
Player4 liked the token generators, particularly Steel's Flapse.
Gift of Caanndy got the most laughs, which landed it in the keep pile despite being kinda dubious otherwise. And of course everyone chuckled over Ancient Donger and Necropousy (M:tg came out when I was a preteen; it takes me back, I guess!). The text on Ageseal's Artifact broke Player3 pretty good, too.
They don't look all that special; they're prints using MSE defaults (I didn't take the time to get art for everything, yikes) on a printer that's starting to falter with old age, haha.
Yeah, that's what is taking so long. I'm trying to avoid any artwork that third parties (games, books) might hold a copyright on because, like I said, it would be wise to ask permission from the artists before the artwork was used even for personal reasons on a printed set. Assuming I can get permission, and I can design a back, I plan on actually having them printed up by one of those playing card online jobs. They won't match MTGO cards at all, but then, that's the point anyway.
Private Mod Note
():
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
I could have / should have done that. As written, the code has a 32x32 network configuration and a 64x64 network configuration. I changed it so that I could create an NxN configuration for some value of N that I passed. Easy enough. But yes, recursive deconvolution is a thing, and I should look into it. My first goal right now is to condition the network using tags for cards, so that it learns to relate goblin/sorcery/green card artworks with each other. That way, I can control the output by asking it to make something extra "goblin-y", for example. That increases the odds that the art will make sense in the context that I want to use it. I just about have that ready to go; I'm just waiting on the opportunity to run the code again, and that should be soon. Then I can see about restructuring things to get higher resolution images out.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
Massive Hunter update! Added discrete search fields for rules, flavour, type text and artist name. Also; any blue text you see in the list results is clickable, so if you're viewing all cards with 'war' in the flavour text, you can click on the 'knight' part of Adun Oakenshield and voila, the Knight subtype filter gets added to the list. If you click that again, the filter goes away. The filters now stack inside the filter boxes, so to remove one just click the specific subtype. Other clickable stats are power, toughness, and in the Details tab (i.e. when you click on a card image), the set name, artist name and legalities.
Even more fun; you'll notice a new tab, 10 closest cards. This brings the neural network research into Hunter, showing you the 10 closest cards (surprise!) based on rules text cosine similarity. I'm not quite happy with how they're currently displayed, hovering and enlarging has problems in some situations. I'm very open to suggestions as to how people would like to see the 10 closest cards (or maybe you want fewer than 10?).
As you'll notice, the types/subtypes aren't rendered perfectly yet (no spaces between words, the dash appears regardless) but this is still a prototype, and I'm working on that. Also, a question: would people mind only having one card be selectable at a time? If that were the case, it would enable me to implement Disqus comments while now, with the potential for multiple cards selected/opened, this doesn't work. Related question; does the expanding list item work, or would you guys prefer a side panel on the right that showed selected card info? Something like this very rough mockup.
Right now the 10 closest cards aren't showing up at all - I just get a message saying "no closest cards"
edit: Oh, I see what you mean. I changed the sources of the closest cards in the latest update, clearly I messed something up. Should be able to fix that today.
edit again: No, it's the server's card index that hasn't been updated with the flip/closest card info. I'll be able to fix that soon.
edit update: Fixed the index issue, you should now see closest 10 cards as well as doublesided ones. Also improved the tag filters; removed the blue colour but if you hover over something that can be added as a filter, it'll show up with a blue background. I think that's an improvement.
edit: I've been messing with the Grid view, and come up with something like this after stumbling across another startup magic site, combodeck.net. Thoughts?
I'm taking another stab at a Robo-Cube for a local games convention coming up this weekend. I've copied everything rules-legal from @RoboRosewater into MSE and will probably start sifting this thread next. Once I've got a fun and varied set, I'll trim it down until I have some semblance of a mana curve.
Stuff that'll be on my mind as I pick things:
Also, I strongly disagree with editing the output at all. The typos and incomparable text are part of the charm. It's like playing during alpha wI th out a rule book. What does the card do? Who knows, give it your best shot!
I am about 75 percent done. Do ya want the mse2 file when I'm wrapped up?
I go back and forth on the editing thing. I agree about the charm, but on the other hand, I'd like a playable game. I don't want cards that will bring the game to a screeching halt or which no one will draft because they don't actually do anything by present rules. But I guess that can be accomplished at the card selection level, leaving minor oddments in place on individual cards.
On a related note, I retooled my scripts so that I could feed in animations like GIF files.
Forest waterfall -> reconstruction
Scarecrow model from World of Warcraft -> reconstruction
A peaceful scene -> reconstruction
A peaceful scene + vector representation of an image of fire -> the clouds are now a fiery tempest eradicating everything
Simulated rotation of the Girl with the Pearl Earring -> Simulated rotation of the Lampshade Lady.
Still no face on the Lampshade Lady, but as I pointed out before, I messed up the bounding boxes when we trained the last network, and faces got cut out so often that the network seems to strategically place objects in the way of faces in order to avoid having to draw them. That'll get fixed in the next iteration, and we'll also have increased resolution.
Again, the idea here isn't to try and perfectly reconstruct the input, but to use the input as a means of situating ourselves inside the vector space in a region that structurally/semantically resembles the input. The waterfall, for example, isn't the original waterfall, but happens to be another, similar waterfall inside our miniature MTG-art-inspired universe. You can think of these animations as if you were looking through a tiny pinhole into this bizarre little world.
It's fun to play with, because we never trained the system on animations, and it's nice to see that the concept of motion carries over well. That and it's fun to set people, places, and things on fire.
More to come in the near future. Sorry for the wait.
Oh, and I saw a fun paper by Li Fei-Fei's people at Stanford University on real-time neural style transfer and super-resolution. Like, a speed-up by a factor of 1000. Like I said several months ago, these improvements would come along :D. At this point, I'm just waiting for someone to come out with a Google Cardboard app so I can strap it on and see everything as a Van Gogh painting.
@nyrt: Fascinating find! Thank you for sharing!
@Elseleth: I'm excited to see your robo-cube come to fruition. I can try and pull out all the good non-creature cards that I can find later for you.
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
Cool, thanks. I'll toss my work product up on Dropbox or something in a few days once I've at least taken a stab and finalizing all of the cards. You'll want to tinker with it further if you are going to correct the typos, and almost certainly you'll want to trim some of the cards. I included just about every result posted by Talcos in this thread prior to the twitter feed going up, and then everything on Roborosewater. So, there's a lot there to choose from.
Yeah, it's personal preference. In my view, the only reason to make a cube out of the product of these neural networks is to preserve the charm of having to figure out (between beers) what exactly the card is supposed to do. Gotta reach a consensus on what "Birdiestruck" means ("1 Damage dealt by spells or permanents with Birdiestruck is fatal to Bird creatures?") as you play it.
If you're gonna fix em, then you're just playing a crappy-designed custom set, ya know?
If you're going to do that, shoot me a line, too. I will note, though, that I didn't really see a huge disparity in the number of creatures versus spells; at least not that you wouldn't see in a regular Magic set. Removal tends to be really rare, though, and when it does exist, it's AMAZING. (Coral Witch ftw!) Also, the network loves to make Elves, Goblins, Beasts, Humans, and Horrors, but not so much other tribes. Odd.
Yeah, I can look into that later and let y'all know. And yeah, the distributions that the machine learns and the actual distributions can vary. I mean, within cards, it does a good job, like Dragons and Angels should almost always have flying, but in terms of the distribution of card types, colors, etc. there can be some deviations.
For example, there are more green creature cards than creature cards of any other color, but, when you analyze RoboRosewater's output, you tend to find that all colors are equally likely. RoboRosewater also has a stronger bias towards making 3 CMC creatures than you see in the set of real Magic cards.
Like you said, I think that some creature types get subsumed into others. Like merfolk and vedalken are functionally similar, but there are more merfolk than vedalken, so if it wants to create a Caller of Gales-esque utility creature, it might be biased towards merfolk even when a vedalken would have worked just as well. Upping the temperature can fix that, but it also causes it to make more mistakes as a result of its frantic excitement.
-------
As an aside, I just got done with fielding questions over Skype reagrding population projections using neural networks for the benefit of folks at a US Census Bureau conference. To paraphrase myself: "I know that our techniques must seem like witchcraft to you... and you would be right! It *is* witchcraft. And it's incredibly effective."
My LinkedIn profile... thing (I have one of those now!).
My research team's webpage.
The mtg-rnn repo and the mtg-encode repo.
EDIT: OK, I'm coming around to the idea of having nonsense keywords and whatnot in there. @MaximumC, would you mind sharing your work in progress? I'll need to print these tonight or tomorrow if I'm to have them ready for the weekend.
Woah! Near-real-time performance is pretty mind-blowing.
I can probably make a 4-person cube out of what I've got, though as MaximumC noted, there is a serious lack of removal spells, hah. Definitely still interested in getting suggestions from folks for cards outside the Twitter set.
There were a few 0/1 Kobolds, and some artifacts with activated effects. A bunch of these are pure X costs, or roughly equivalent. There's also Suspend, and at least one card with Splice onto Arcane, and the pacts. Also, the back half of every transform card; I heard that was changing? There's also every single Mox, so I guess it's a little hard to predict the results solely from existing CMC 0 cards.
To get my set, I pulled all @RoboRosewater cards, added a chunk of removal and black from early in this thread, and grabbed 180 at random to print off. I went the "damn the torpedoes" route advocated by MaximumC, and it proved to be a great time. We went for consensus ruling of the four players whenever weirdness came up, with an axiom of "where possible, interpret card text such that it does something."
My deck started off URW, which I swiftly pared down to UR after struggling to get the right mana in my first game. I went for high-efficiency creatures like Slidshocking Krow (ruling was that Tromple and Mointainspalk did nothing, alas; folks felt 4/2 for U was quite enough), bolstered with punchy R effects like Necropousy (+3/+3 totem armor) and Lightning Wind (+5/+5 and flying for the turn).
Player2 went BW, aiming for massive card draw with plays like Garruk, Leap in the Carapas (creature with 1: draw a card) to bring out the game-ending Giant Loyod (land, BB, T: deal 5 damage to a player).
Player3 was G with a splash of U, getting lots of use out of aggressive creatures like Emberty (3/2, haste, shadow--no other creatures with shadow were in the cube!), Callerwast (land that on ETB spawns a hasted 3/3 Saproling) and Colelenhan Right (3/1 for G with a tap ability to draw a card for bringing a creature onto the battlefield).
Player4 was BGU, fielding a main force of hitters like Onoch Wall (5/5, may cast for free) with artifacts like Untarswell of Aira (1, tap for G or G) and Steel's Flapse (3, same tap effect as Untarswell but also generates a tapped 2/2 Goblin each turn) to help ramp up.
After getting crushed by Player2 in first game, I tried to bring in some white hate in the form of Living Paladin (enchantment, XUU, white spells cost 3 more to cast), but he just shrugged and played mono-black. I couldn't keep his Aacotelb Mright down (5/5 for 3B, pay 2B to bring back to hand from graveyard).
My matchup against Player4 went much better; he only managed to get small token creatures out while I hammered away with Amel'rpen Threestel (5/5 for 3U, returns two creature cards to hand from graveyard every upkeep).
I had Player3 on the ropes for a little while with a cool sacrifice cycle going: Goblin Marpher (1/1 for R, sacrifice a creature max 1/turn to get 2 +1/+1 counters) fed by the Bisor Slaver (2/1 defender for 1U, returns to hand from graveyard whenever a creature ETB). But then she dropped Deers of Aodo (1G destroy all permanents), and recovered much better than I did from the board reset.
I don't know too much about what happened in the matchups I didn't play. I did catch that Player3 swapped in her sideboarded Path of Bone (enchantment, GGGG, players can't cast spells without paying their mana costs) to keep Onoch Wall out of her hair. ^.^
After the round-robin was done, we decided to hold a voting round where we went thumbs-up/thumbs-down on whether to keep each card in the cube. The voted-out cards will be ditched and replaced with new RNN cards for a later iteration of the cube!
Agemental Beat (ruling: "it" is the player, not the card)
Ancient Donger
Appry Bloodshot
Ashisu, Gluttendain Djinn
Beom Bump
Bisor Slaver
Blast of Dart
Bloodruin Dead
Chall the Call
Cloud Hound
Coral Witch
Cornepority (ruling: "choose" should be "shuffle")
Craecher Feel
Creature
Cub Famitauriar
Demonic to you Cyclom
Devour of Servant
Dopbletabe Marla
Dreamn Changeling
Dream Seizer
Edal Overanty Rifts
Ethereal Bolt
For-Gaog (ruling: destroys all enchantments in play)
Gift of Caanndy (ruling: alternate effect takes place if countered)
Glusanch of Sliver
Goblin Marpher
Graspblaze Battlemage
Gristing Reef
Harchlatch
Heart Myr
Hydromorph Frog Core
Identless Horror
Ifcryper of the Necdoness
Impetufle Randor
Iron Weader
Joweraver Troning
Keldon Warrior
Kragu Affurion. Armagest
Lightning Wind
Magure of Lylem
Mardu Adept
Merrow Packly Cut
Mided Hied Parira's Scepter
Mimorbood of Drubdasting
Moonall Kros
Necropousy
Nimben Gerepist (ruling: deals damage to target creature or player)
Obelisk of the Wild
Outlongrift
Owerflight Loyalta
Paloki, Rarn of Dorrangerers
Paragon of Gethes
Prezon Shaman
Rasha Bloodscape
Rashal, Rings of Attendant
Rebirthbound
Reksring Gord Blider
Rold Dragon
Rootwanding Charm
Row of Madgusion
Sacred Fist
Saddint Hulk
Saprazzan Shield
Seal of Axsons
Shring the Artist
Skombladron Piric
Skull of the Chaseler
Slarecaster
Sludge of the Machine
Spider Sliver
Static Dwarf
Steel's Flapse
Streegoght Squad
Strings, the One
Stronghold Guardian
Sulvital Sliver
Templedden Rist
Teom Avatar
Teres Sarde
Tormenter's Charm
Torsethed Sliver
Untarswell of Aira
Vuruling Vitu
Werkunstewant of the Monaw (ruling: return to owner's hand)
Wildstoke Foulis (ruling: always 1/1 creature, player's choice whether green Centaur or blue artifact flying)
Wishra's Light
Yomiza-Trib the Martor
Ageseal's Artifact
Amel'rpen Threestel
Amostal Shrere
Apsedagu Ropoor
Avogeren Chasmat
Balmins Brovaligance
Barren Scar
Bimblard Blith
Blast Shark
Blood of Lavnion (ruling: "slay" is just "put into your graveyard")
Bloodmane Gargoyle
Callerwast
Calow of Wast
Clogud of Rarge (ruling: double Flying can't be blocked by normal Flying! but still not worth exiling your library)
Colelenhan Right
Commandengle
Content's Faster
Deers of Aodo
Deggry Barri
Desiziar Infernerity1
Dorsersteel Lava
Dragon-Beary Scarpel
Dragonheers
Eherglass Laberation
Elvosal Sadk
Emberty (ruling: where reminder text doesn't match the real rules of a keyword, both standard rules and the reminder text apply. Not that you ever want to block your own fliers, but whatever)
Encrashing Birds
Eviral Nearue
Exgo the Rickers (alas, no one could make sense of Horshers)
Flame's Field
Flumestooth of Marborge (ruling: T, T turns the card upside down. One untap brings it to tapped state. Not worth it to shuffle one's library)
Gargalian
Garruk, Leap in the Carapas
Gate of Kresh
Giant Loyod
Giant Ruins
Goldmy's Mana
Guissers Aach
Handso
Hendtance Ibunder
Heroia of Vandishade
Ibrided Fovern
Indical Lrightcaon
Kerrenders Joquots
Khinisana Mur
Kilkorn Radker
Kraeding's Ghost
Len Asywamatanl
Living Paladin
Lulteater Megavos
Mamoo World
Manduj Masthorow
Meinour
Micster Dawnscault
Miracight Monges
Mountain (the land Aura, not the basic land )
Noxlo Greater
Onoch Wall
Outtan Recruit
Pambash Warrior
Path of Bone
Pyredal Slamble
Razderod Rework
Ri Low's Teremage
Roon War Medoma (but Beom Bump made the cut... go figure)
Runger's Lill
Rute of Jeirast
Scalen of Urday
Seating Tute
Senterung Session
Sings of Junay
Skylacker Spirit
Slethward Bestroh
Slidshocking Krow
Sliverform Sliver ("this land" was a dealbreaker apparently)
Spellfeatter Wild
Spirit of Elemental
Sporatporing Angater
Strught Mailinds
Surs of Ally
Threshorge Wider
Tinglertal Bleem
Time Tide
Troll of the Barrelcruarian
Turn the Wilds
Wall of Plague
Weal's xaradless
Weatherseer Maggot
Worph of Engroft
Wulder of Boon
Yus Chasere
Zecross of Griffin
EDIT: Here's the MSE to spare you having to hunt around to see what any of the above are!
I'm almost done with the MSE2+DeviantArt version. Only a few more cards to place and a few pieces of artwork to re-allocate. To be really appropriate, someone should actually e-mail all of the artists to see if they're cool with someone actually printing them for private use. I haven't done that yet. Once that's accomplished, you can get playing-card quality prints done for sub $100 per set, even for 300 cards or so, on numerous places online.
Anyway, Elseth, I'll have a draft for you this weekend, possibly tonight. Then I'll start working on a ROBOROSEWATER back for the cards.
EDIT: I love me some Deers of Aodo
What I considered doing to fix this problem was actually use rarities. That is, commons are x4 in the cube, uncommons are x3, rares are x2, and mythics are x1. This leads to more expensive print run, but it allows you to manipulate the cards by moving absurd things up and necessary things (REMOVAL!) down in rarity.
My fave from my deck was Cornepority, though I didn't actually get to play it. I also like Tormenter's Charm and Ethereal Bolt.
Player2 had a lot of respect for Goblin Marpher and Bloodruin Dead, in the voting round. Not sure what he most liked in his own deck other than the obvious power cards.
Player3 expressed a lot of love for Ancient Donger and Rold Dragon (she played Rold Dragon despite not doing much red, thanks to the green Suspend cost).
Player4 liked the token generators, particularly Steel's Flapse.
Gift of Caanndy got the most laughs, which landed it in the keep pile despite being kinda dubious otherwise. And of course everyone chuckled over Ancient Donger and Necropousy (M:tg came out when I was a preteen; it takes me back, I guess!). The text on Ageseal's Artifact broke Player3 pretty good, too.
Yeah, that's what is taking so long. I'm trying to avoid any artwork that third parties (games, books) might hold a copyright on because, like I said, it would be wise to ask permission from the artists before the artwork was used even for personal reasons on a printed set. Assuming I can get permission, and I can design a back, I plan on actually having them printed up by one of those playing card online jobs. They won't match MTGO cards at all, but then, that's the point anyway.