{"id":6010,"date":"2017-11-23T14:45:00","date_gmt":"2017-11-23T14:45:00","guid":{"rendered":"http:\/\/www.gamasutra.com\/view\/news\/310236"},"modified":"2017-11-23T14:45:00","modified_gmt":"2017-11-23T14:45:00","slug":"blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2017\/11\/23\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards\/","title":{"rendered":"Blog: Creating a machine learning algorithm to illustrate Magic cards"},"content":{"rendered":"<p><strong><em><small>The following blog post, unless otherwise noted, was written by a member of Gamasutra\u2019s community.<br \/>The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.<\/small><\/em><\/strong><\/p>\n<hr \/>\n<p>[This post originally appeared on <a href=\"http:\/\/andymakesgames.tumblr.com\/post\/167733819029\/urzas-dream-engine-the-roborosewater-robodraft\">my blog<\/a>]<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards.png\" \/><\/p>\n<p><a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fandymakes.com%2Furzasdreamengine%2F&amp;t=ZWNkMjQxMjY1NDg5OGYwNzI2Mzk3MGI2Y2JjNzA4OTQ4NTI3YzA1YixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Urza\u2019s Dream Engine<\/a>\u00a0is a neural network project I\u2019ve been working on for a few months. It\u2019s a bot that creates art in the style of\u00a0<em>Magic: The Gathering<\/em>\u00a0cards. It began as an effort to create art to go with the cards created by the amazing Twitter bot,\u00a0<a href=\"https:\/\/twitter.com\/RoboRosewater\">RoboRosewater<\/a>, and grew into its own beast. It was my first foray into machine learning as well as my first project focused on producing still images.<\/p>\n<p>You can see some of the output on the site for the project here:\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fandymakes.com%2Furzasdreamengine%2F&amp;t=ZWNkMjQxMjY1NDg5OGYwNzI2Mzk3MGI2Y2JjNzA4OTQ4NTI3YzA1YixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">http:\/\/andymakes.com\/urzasdreamengine\/<\/a><\/p>\n<p>Although Urza\u2019s Dream Engine grew a life of its own, it culminated in a booster draft, held at\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fbabycastles.com%2F&amp;t=MGY1Zjk3YmQ3Mzg3Y2M3NmY5NzQxMzJjNDFiOTk5MGVlMGQ0M2UxNCxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Babycastles<\/a>\u00a0in NYC on Nov 18th 2017, using the RoboRosewater cards paired with my bot\u2019s art. This was a game played by humans, but designed and illustrated by machines. In this post I\u2019ll go through my process step by step starting from the initial idea to the Babycastles event.<\/p>\n<p>The\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fandymakes.com%2Furzasdreamengine%2F&amp;t=ZWNkMjQxMjY1NDg5OGYwNzI2Mzk3MGI2Y2JjNzA4OTQ4NTI3YzA1YixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Urza\u2019s Dream Engine<\/a>\u00a0site has downloads for the images, cards, and print-and-play booster packs used at the Babycastles event.<\/p>\n<h2>Conception<\/h2>\n<p>This whole project started because I was enamored with a twitter bot called @RoboRosewater. I certainly wasn\u2019t the only one; as of this writing, the account has 23,500 followers. RoboRosewater is a neural network bot created by\u00a0<a href=\"https:\/\/twitter.com\/pickfifteen\">Chaz<\/a>\u00a0and\u00a0<a href=\"https:\/\/twitter.com\/rmmilewi\">Reed<\/a>\u00a0that has been running since 2015. Each day it posts a new\u00a0<em>Magic: The Gathering<\/em>\u00a0card generated by a machine learning algorithm. Basically, it is a program that has been trained on all of the existing\u00a0<em>MTG<\/em>\u00a0cards (roughly 30,000 over the course of the game\u2019s two decade run) and which now attempts to create new ones in the same vein. The bot itself only generates the text for these cards.<\/p>\n<p>Most of the cards it makes are borderline nonsense (but still very fun), but a surprising amount of the output is actually playable. Maybe broken in the sense that the card is too strong or too weak, but actually legal within the (fairly complex) rules of the game. Even these legal cards are still alien, like a glimpse into a bizarre alternate reality of the game. Some are amusingly pointless (like a card that states that players must pay the cost of the spells they cast). Others staple three seemingly unrelated abilities together. And some have genuinely interesting effects that as far as I know have never been used in the game\u2019s long run. If you like\u00a0<em>Magic<\/em>\u00a0or bots I highly recommend\u00a0<a href=\"https:\/\/twitter.com\/RoboRosewater\">following this account<\/a>.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-1.png\" \/><\/p>\n<p>Given my interest in exploring unusual parts of the game in my\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fweirdmtg.com&amp;t=MWI5OGFhNGE3ODg5OTlkMTY0MjM1NzJjOTRkOTRkMTA1YTU1MGVmMSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Weird: MTG<\/a>\u00a0series, holding a RoboRosewater\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fmagic.wizards.com%2Fen%2Farticles%2Farchive%2Flo%2Fbasics-booster-draft-2014-11-03&amp;t=Nzk3ZjU2NWQ2YTViMGM1NjEwYTg2Y2FkOGRiZWZiZmJlY2FmMTkyYSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">booster draft<\/a>\u00a0seemed like a natural fit. I had something of a convenient problem though: the cards posted on the RoboRosewater account use stock images of computers as their art. They basically all looked the same, and trying to play with them would be hugely difficult as card art is an important identifying feature, especially when playing with a new set. Imagine having to read 20 identical cards on a table every time you are thinking about your next move.<\/p>\n<p>I say a \u201cconvenient\u201d problem because I am usually keen to try a new project, and the challenge of creating illustrations for these cards sounded exciting. The text was generated via automation, so I knew the images should be as well. Early on I thought about trying to create an\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fopenframeworks.cc%2F&amp;t=NDc3ZGE4ZDIzYTg3NDBiMDc2MjY0NDhjZTA3ODlkYzA5NWRiMTI5MixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">openFrameworks<\/a>\u00a0sketch that would cut up and recombine the existing art from the game, but it didn\u2019t feel quite right. The cards were created by a neural network so the art should be as well. I\u2019d never messed around with neural networks myself, but I was as blown away by\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDeepDream&amp;t=YzI1OTRkZjg0NDI4YjVjYjU1NjI3OTA3NTUxZTY2OWMxYjM0YzkxNCxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Google\u2019s Deep Dream<\/a> <a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDeepDream&amp;t=YzI1OTRkZjg0NDI4YjVjYjU1NjI3OTA3NTUxZTY2OWMxYjM0YzkxNCxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">algorithm<\/a>as anybody else so now seemed like the time to learn!<\/p>\n<h2>Getting Started<\/h2>\n<p>I\u2019m a total script kiddie when it comes to machine learning. People get their PhDs creating and working with these techniques. I\u2019m a game designer who likes to tinker. As a result, I tried setting up a lot of different neural nets on my laptop (non-GPU enhanced, but I wasn\u2019t going to let that stop me). With most, I ran into some roadblock after 5 or 6 hours that couldn\u2019t be solved by importing a new Python library, and I\u2019d move on to the next one. Finally I had success with a\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fgithub.com%2Fcarpedm20%2FDCGAN-tensorflow&amp;t=NDBjOThmODcyNjVjYjIxOTVhZDc0ZjA5ZTQzY2VlMTY0NWM3ZWZjNyxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Tensorflow implementation<\/a>\u00a0of Deep Convolutional Generative Adversarial Networks by\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fcarpedm20.github.io%2F&amp;t=NmY1ZDZmOTgyYzM5OTUxYTFjOWJhM2Y2MmE3ZmM0ZThlN2ZmMmEyOSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Taehoon Kim<\/a>. I followed the instructions on the\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fgithub.com%2Fcarpedm20%2FDCGAN-tensorflow&amp;t=NDBjOThmODcyNjVjYjIxOTVhZDc0ZjA5ZTQzY2VlMTY0NWM3ZWZjNyxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">GitHub<\/a>\u00a0page and\u00a0 trained the bot on some sample images of faces. After tweaking some of the source code to work on my machine, I produced a set of my own slightly-off faces and I was off to the races.<\/p>\n<h2><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-2.png\" \/><\/h2>\n<h2>Getting the Data<\/h2>\n<p>Part of how neural networks function is that before they can attempt to replicate a style, they must first train on an existing dataset to learn what the thing is. This data set is no trivial thing. In order to work well, the data must be ordered (being of similar type and presented in the same way) and there must be a lot of it. The sample set that came with Kim\u2019s Tensorflow implantation contained 200,000 images of celebrities\u2013all from the neck up, facing the camera and cropped to be the same size.<\/p>\n<p>Fortunately, the sheer volume of data associated with\u00a0<em>Magic: The Gathering\u00a0<\/em>is huge, probably rivaled only by major sports like baseball. It\u00a0is the first &amp; longest running collectible card game. It first launched in 1993, and Wizards of the Coast, the company that produces it, has released multiple new sets every year since then. This means that there are currently over 30,000 unique\u00a0<em>Magic<\/em>\u00a0cards. This pool, while small in terms of what would be best for neural net generated art, is still larger than any other game I could hope for. Of course, the art in the game is also not nearly as uniform as the celebrity data set I described above, but I didn\u2019t need perfect output. I was ok with things getting weird and I wanted to see what the bot could do.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-3.png\" \/><\/p>\n<p>First things first, I needed to get that data. Luckily, I am not the first person who wanted to scrape info from all existing\u00a0<em>MTG<\/em>\u00a0cards. There is a piece of software called\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fwww.mtgsalvation.com%2Fforums%2Fmagic-fundamentals%2Fother-magic-products%2Fthird-party-products%2F337224-mtg-gatherer-extractor-v4-3-database-pics&amp;t=OWI3ZmJhOTZjZGVlZjY4MjhkMGIxNzY1Y2JlNjQ5OGE1ZWVmN2ZhNixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Gatherer Extractor<\/a>\u00a0that will download text and images within certain parameters from Wizard\u2019s official\u00a0<em>MTG<\/em>\u00a0online card database,\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fgatherer.wizards.com%2FPages%2FDefault.aspx&amp;t=OTI4NmNiNDU3MzBlYTAyOGM3ZTVkYWE4N2Q2ZmMzNmU5ZjY0MGQ4ZSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Gatherer<\/a>. This software, release for free by MTG Salvation user\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fwww.mtgsalvation.com%2Fmembers%2F27162-chaudakh&amp;t=NzYyZDQ2NTAyNGY2NjgyY2RkZWFjZWM1MjIzNWVmNWE1MzkxMTZmYyxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">chaudakh<\/a>, prepares an Excel spreadsheet file with all of the requested information and can also download the card-scans (the image showing the full card). To my delight it also had a check-box to crop the card image to just the art, saving me a Python or openFrameworks script to do the same thing.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-4.png\" \/><\/p>\n<p>I tested Gatherer Extractor with a single expansion set, and after seeing that it did what I wanted, I set it to work pulling the card text and image of every card in the game. The resulting spreadsheet makes my computer chug a little bit, but it had everything, cross-referenced with the image associated with each card.<\/p>\n<h2>Sorting<\/h2>\n<p>Card art in\u00a0<em>Magic: The Gathering<\/em>\u00a0is dependent on a lot of things, but there are some game factors that are frequent indicators of aspects of the illustration. Card color is a big one. Red cards tend to lean toward warm colors in their palette, blue cards toward cool colors, etc. Creatures also tend to look different than artifacts, which look different that sorcery spells (or so I thought\u2013more on that in a bit).<\/p>\n<p>Initially I had hoped to have the bot simply train on all of the card text and art so that it could learn the difference between, say, a red creature and a white enchantment itself, but I soon realized that this was more than I could do with my setup (or at least with my experience level). It became clear that the best course of action was to sort the art beforehand by whatever metric I wanted to use, and then have the bot train only on those images. To do this, I built a simple Python script that would let me set some parameters (for instance \u201cblue creatures\u201d or \u201cenchantments\u201d) and would then scan the spreadsheet to find all cards that met the criteria. For each card that fulfilled the search query, the image associated with that card was copied to a new folder to use as the training set.<\/p>\n<h2>Early Batches<\/h2>\n<p>The first training set I tried was all creatures with the \u201cgoblin\u201d creature type. This resulted in a little under 400 images for the bot to train on. After a few hours the results were still rubbish. After more experimentation I would learn that I had made two errors: 400 images was a minuscule dataset, and a few hours was not nearly enough time to train, even with a good data set.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-5.png\" \/><\/p>\n<p>I switched gears and tried white creature cards, figuring that color was the major indicator of the palette used in the art and that creatures would at least all have a main subject in the art (as opposed to sorceries or enchantments). I let it run for four days this time. As it worked, it would spit out a sample image every hour or so. I was able to watch a formless mess turn into something more discernible. (The sample images are produced in an 8&#215;8 grid, so each sheet contains 64 separate images produced by the bot).<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards.gif\" \/><\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-6.png\" \/><\/p>\n<p>This bird-fish giant was the first image produced by Urza\u2019s Dream Engine (then unnamed) that I really loved. It\u2019s still one of my favorites.<\/p>\n<p>At this point, I knew things were working. I messed around with the settings for other groups, but as far as the code I was using, very little changed. The biggest modification was that I shifted from breaking up the images by card type and started using color as the only criteria for sorting. Contrary to my initial assumption, I realized that nearly every card in Magic has a central figure in the art, not just the creature cards. In order to illustrate the magical effect of a spell or enchantment the art shows a central figure either reaping the benefits of or being victimized by the spell in question. Since there was little artistic difference between them, there was no reason to make smaller training sets.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-7.png\" \/><\/p>\n<p>These three cards all represent spells in the game, but the art could just as easily go with a creature, since each one focuses on a character.<\/p>\n<h2>Creating and Posting<\/h2>\n<p>The next two months or so were spent with the bot quietly running in the background of my laptop (and absolutely destroying my battery life when unplugged). I worked on other projects, most notably finishing up my sequencer toy\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fbleepspace.com%2F&amp;t=OTFmOTQ5MjI2NjhhNzFhOGU3NmU4NWNkYzljNzUwNTk1Y2VkNWQ3NixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\"><em>Bleep Space<\/em><\/a>\u00a0with musician\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fdanfriel.com%2F&amp;t=ZmJhZjQ1NGVlYmFlNTE0YTAxYmQzN2U2NWVmMzliZTM2MzgwNWIyMSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Dan Friel<\/a>. During this time I occasionally posted the images the bot created on this\u00a0<a href=\"http:\/\/andymakesgames.tumblr.com\/tagged\/machine-learning\">Tumblr<\/a>\u00a0and on\u00a0<a href=\"https:\/\/twitter.com\/search?l=&amp;q=MTG%20bot%20from%3Aandy_makes&amp;src=typd&amp;lang=en\">Twitter<\/a>. The images resonated with a lot of folks and I always enjoyed hearing what people saw in them. The images are abstract enough that while conveying the general vibe of\u00a0<em>MTG<\/em>\u00a0art, they function a bit like a Rorschach test, allowing for many interpretations.<\/p>\n<p>In order to make the images a bit more human-readable, I used a few Photoshop actions that I could run as a batch. The main one I used took the 8&#215;8 grid of images that the machine learning bot spat out and cut the image into 64 individual images. These images were then blown up slightly to be a bit easier to see and so that they would eventually fit nicely onto the RoboRosewater card frames.<img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-8.png\" \/><\/p>\n<p>Around this time, the images were featured in an\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fwaypoint.vice.com%2Fen_us%2Farticle%2Fd38x87%2Fthese-surreal-magic-the-gathering-cards-were-made-by-a-robot&amp;t=OGQ0M2VmMTcyNDYyMDQ4MWY5Njg3N2E1MDEzNjI4NzJjMWViMDA5YixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">article on Waypoint<\/a>\u00a0(The games culture wing of Vice) by\u00a0<a href=\"https:\/\/twitter.com\/ckunzelman\">Cameron Kunzelman<\/a>. As I noted in the article, one of the things I was enjoying most about the bot was that it was generating images that seemed to have some of the flowing style of\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fwww.rebeccaguay.com%2F&amp;t=NWMyMjIyM2U3YjBkMTFmN2VjNTgwZTdjMWNiODEzNGFkMmU3NzI4MSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Rebecca Guay<\/a>, my favorite illustrator for\u00a0<em>MTG<\/em>.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-9.png\" \/>On top are Guay\u2019s illustrations for\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fgatherer.wizards.com%2FPages%2FCard%2FDetails.aspx%3Fmultiverseid%3D397701&amp;t=NTQyYTY4MTJjZDczMmYzNzY0OTM0ZTQ4MjE0ODkxMmM5ZDUxMmJjOCxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Bitterblossom<\/a>\u00a0and\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fgatherer.wizards.com%2FPages%2FCard%2FDetails.aspx%3Fmultiverseid%3D193739&amp;t=OWRiZGE1NGMxNmJjMWU5ODc5NTRiMTk4YjcwZDJjZTg5MTQ5OTdmMyxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Regenerate<\/a>. On the bottom are two of the pieces created by Urza\u2019s Dream Engine.<\/p>\n<h2>Creating The RoboDraft<\/h2>\n<p>I was collecting and displaying the images, but I still wanted to\u00a0<em>do<\/em>\u00a0something with them. My background is in interaction, and that hasn\u2019t changed. My original plan was to pair my images with Roborosewater cards and hold a booster draft with them, and that was still what I wanted to do. My previous\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fweirdmtg.com&amp;t=MWI5OGFhNGE3ODg5OTlkMTY0MjM1NzJjOTRkOTRkMTA1YTU1MGVmMSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Weird MTG<\/a>\u00a0events had been much simpler (a booster draft using cards from Legends and Arabian Nights, a tournament only allowing\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fkotaku.com%2Ffan-organized-magic-the-gathering-tournament-only-allo-1791821047&amp;t=ZjlmMmU5NDZmOWM0NjJhZDM2M2QzMGU0YjcyMTBhZjI0NWEzZjIwNSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">cards from 1994<\/a>, and\u00a0<a href=\"http:\/\/andymakesgames.tumblr.com\/post\/160454362304\/weird-magic-vol-3-top-of-the-trash-heap-draft\">a cube draft made of \u201crare\u201d cards that were worth 25 cents or less<\/a>). Most of these had involved printing proxies (printed cards used in place of real cards that are too valuable to actually play with), so I had a tool chain in place for that, but the scale of this one was much bigger, and it involved creating the card images before printing them.<\/p>\n<p>A booster draft is a specific type of\u00a0<em>Magic<\/em>\u00a0tournament that involves creating a deck on the fly. The typical tournament type, called \u201cconstructed,\u201d involves players building a deck at home with cards they own and bringing it to the tournament. Booster drafts are of a type of tournament, known as \u201csealed\u201d, where players come empty handed and are given unopened\u00a0<em>MTG<\/em>\u00a0products to build their decks with. The \u201cdraft\u201d part of \u201cbooster draft\u201d comes from how players build their decks at these tournaments. The players sit in a circle, and each player opens a booster pack (containing 15 cards), selects one card to add to their pool, and passes the remaining cards to the player next to them. This process continues until each player has 15 cards, at which point the players open their next pack. Each player starts with three booster packs, so at the end each player has 45 cards to use in building their deck (not all of the cards need to be used), but because they drafted cards from the packs going around, the card pool for the tournament is actually much larger and players can exercise significant strategy in building their pool of 45 cards.<\/p>\n<p>Being more interested in playing than actual deck-building (and being pretty awful at deck-building), booster draft has always been my favorite format. It also lends itself well to an event that uses cards that nobody owns or could possibly own. It did, however, mean that I had to construct booster packs for players.<\/p>\n<h2>Selecting the Cards<\/h2>\n<p>The first thing I needed to do was create the pool of cards to draw from. To do this I went through every image that @RoboRosewater has every posted (roughly 830 at the time). To get started, I sorted the images into four categories. Here are my criteria and a ballpark value on how many cards posted by the bot fell into that category<\/p>\n<p><strong>Legal<\/strong>: Cards that could be played as written. I\u2019d say roughly 40% of the cards posted by RoboRosewater were legal.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-10.png\" \/><\/p>\n<p><strong>Legal but Functionless<\/strong>: Cards that could be played but effectively did nothing. While these are fun to see printed, they essentially represented dead cards in a booster pack. This category was small, making up only about 5% of the cards. (Yes, there are niche cases where these cards would do something, but the use case is so narrow as to effectively be 0 in a sealed format)<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-11.png\" \/><\/p>\n<p><strong>Nearly Legal<\/strong>: Cards that were not technically legal within the rules of the game, but which had only one obvious interpretation. These had to be things that could be fixed with a slight edit that would not be dependent on me making design decisions for the card. I was pretty strict about not editorializing, so anything that could potentially be interpreted multiple ways was pushed to the next category. The result was that this also made up about 5% to the total cards.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-12.png\" \/><\/p>\n<p><strong>Illegal<\/strong>: Cards that simply did not work within the rules of the game. These cards tend to be collections of\u00a0<em>Magic<\/em>\u00a0terms that do not work in any comprehensible way in the game (they also tend to come from shorter training period as\u00a0<a href=\"https:\/\/twitter.com\/RoboRosewater\/status\/617045553017409536\">indicated by the art on the card<\/a>). The longer the text on the card, the more likely it was to veer into this territory. This was the biggest category, with about\u00a050% of the posted cards landing here. While these cards can be great fun to see\u2013the close-but-no-cigar nature of their wording exists in the same vein as\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dg0TaYhjpOfo&amp;t=MGZlMGY3NzUxNjliMTQ3Mjg4NTg5NDYwYzQ2NzAxOTBmMTk0NzljYyxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">videos of robots falling down<\/a>\u2013they wouldn\u2019t work for this event.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-13.png\" \/><\/p>\n<p>Power level did not factor into the decision making at all (besides avoiding cards that basically did nothing). My goal was not to create a balanced environment, and in fact, I think that trying to \u201ccorrect\u201d for the weird power levels created by the bot would have undermined the authenticity of the event. All of the cards in the \u201clegal\u201d or \u201cnearly legal\u201d categories were initially included, even cards like\u00a0<a href=\"https:\/\/twitter.com\/roborosewater\/status\/731558514779377665?lang=en\">Teferi\u2019s Curse<\/a>\u00a0that threatened to stall out games.<\/p>\n<p>A quick note: it may seem at first glance that having less than half of the cards be legal suggests some kind of failing on the part of RoboRosewater and its creators, but this simply isn\u2019t true.\u00a0<em>Magic: The Gathering<\/em>\u00a0is a deeply complex game with many accumulated rules and abilities on cards over the years. The fact that RoboRosewater can create\u00a0<em>any<\/em>\u00a0cards that are legal is astounding. The fact that it can do it on a regular basis is all the more impressive. I would be over the moon if I made a similar project for any game that was able to succeed 40% of the time. I certainly did not include even 10% of the total output of Urza\u2019s Dream Engine on\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fandymakes.com%2Furzasdreamengine%2F&amp;t=ZWNkMjQxMjY1NDg5OGYwNzI2Mzk3MGI2Y2JjNzA4OTQ4NTI3YzA1YixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">my website for it<\/a>. Furthermore, the purpose of the bot is to create\u00a0<em>interesting<\/em>\u00a0cards. They were never meant to be played, so my metrics for what would work for this event are not the same ones the bot\u2019s creators were using.<\/p>\n<p>After sorting the cards into these groups, I broke them down by color. Booster drafts work best when each color is represented somewhat equally. I found that black was the weakest with only 40 viable cards, while white and green were overrepresented with around 60 each. Although I was reluctant to apply my own design decisions to the game, I decided that removing some white and green cards in order to keep some color balance was a good idea. I bumped a few of the cards that were in the \u201cnearly legal\u201d category from those colors and pulled a few more that were borderline functionless. This was the extent of my own design decisions for the draft.<\/p>\n<p>The result was a 308 card set. Definitely a large set, but not so big that players in a draft won\u2019t see some of the same cards go around more than once. Because the cards generated have no rarity level (typically common, uncommon, rare &amp; mythic), all cards were equally likely to show up in a given booster pack.<\/p>\n<h2>Putting the Cards Together<\/h2>\n<p>Now that I had all of the RoboRosewater cards sorted by color (or type in the case of artifacts and land), it was time to combine them with the images that Urza\u2019s Dream Engine had created. Once again, I wanted to maintain automation\u2019s control over the output. My purpose in this process was to curate and facilitate that automation. I wanted a program to randomly pair cards with art of the same type.<\/p>\n<p>To do this, I built an\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fopenframeworks.cc%2F&amp;t=NDc3ZGE4ZDIzYTg3NDBiMDc2MjY0NDhjZTA3ODlkYzA5NWRiMTI5MixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">openFrameworks<\/a>\u00a0application that would accept an input card image folder and an input art image folder. Once given these folders (for example, red RoboRosewater cards &amp; red card images produced by Urza\u2019s Dream Engine), it would randomly select from the two pools, combine the images and save the output as a new image. As it did this, it would remove both the card and image from the pool to guarantee that there would be no repeats.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-14.png\" \/><\/p>\n<p>As I mentioned earlier, the abstract images produced by Urza\u2019s Dream Engine lend themselves to multiple interpretations. This wound up being a serious boon when paired with the cards. Between RoboRosewater\u2019s liberal use of abilities and fascinating names, and my own bot\u2019s hazy images, nearly every pairing\u00a0<em>felt<\/em>\u00a0like it made sense, even though it was random beyond the color of the card. Although I knew the power of the human mind to seek connections and narrative is an amazing thing I was pleasantly surprised by just how\u00a0<em>right<\/em>\u00a0everything felt.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-15.png\" \/><\/p>\n<h2>Printing the Boosters<\/h2>\n<p>Luckily, this was not my first Weird MTG event that involved making proxy boosters. I\u2019ve created a tool for myself that does exactly this which is\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fandymakes.itch.io%2Fbooster-pack-generator&amp;t=OTFiZTVhNDNkM2E1MzEwZDllNzU5YzgyOTc2NTM1OWRlNmU0MDc0MCxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">available for free<\/a>. This tool draws cards from input folders and creates PDFs of print-and-play ready booster packs. The printable cards include a small number in the bottom corner to identify what pack they belong to. The purpose of this is to preserve the randomness generated by the program, including the rule that no pack contain duplicates of the same card.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-16.png\" \/><\/p>\n<p>I printed a total of 72 packs. Enough for 24 players. The resulting stack had some real heft to it.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards.jpg\" \/><\/p>\n<h2>Cutting and Sorting<\/h2>\n<p>I took the whole thing to Kinkos and got to work at the paper cutter. It took a little over an hour to cut everything out.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-1.jpg\" \/><\/p>\n<p>Once I got home, my partner Jane and I watched shows while sleeving cards. Because these proxy cards are printed on paper, they do not have the weight to be played with by themselves. To get around this, they must be put in a protective card sleeve using a real card as a backing to give them the necessary weight. These sleeves are very common in the game, and are typically used to allow players to use valuable cards without worrying about scuffing them or having something spilled on them. I buy them in bulk.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-2.jpg\" \/><\/p>\n<p>Once they were sleeved (at the expense of nearly every common magic card I own), they were ready to be sorted into their packs. This is where the little ID number at the bottom of the card comes in handy. Because I am usually cutting multiple sheets at a time, the order gets a little shuffled as cards wind up not next to their neighbors, but actually the card that was in the same location on the sheet above or below it. I started by grouping everything by their tens place (0-9, 10-19 etc).<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-3.jpg\" \/><\/p>\n<p>Once they were in more manageable piles, I got to work placing them into their actual packs. At the end I had 72 stacks of 15 cards for 1080 total cards, enough for 24 players to draft. After counting each pile to make sure it had the right number, I put them in baggies that would act as surrogate wrappers. I packed up a bunch of basic lands along with them (for players to use when building their decks) and the setup for the event was complete.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-4.jpg\" \/><\/p>\n<h2>Contact with RoboRosewater<\/h2>\n<p>In the week leading up to the event, I posted\u00a0<a href=\"https:\/\/twitter.com\/Andy_Makes\/status\/930465545908113410\">about<\/a>\u00a0<a href=\"https:\/\/twitter.com\/Andy_Makes\/status\/930865344893374469\">it<\/a>\u00a0<a href=\"https:\/\/twitter.com\/Andy_Makes\/status\/931204096505339906\">a<\/a>\u00a0<a href=\"https:\/\/twitter.com\/Andy_Makes\/status\/931587908078899201\">lot<\/a>. I was having great fun creating sample packs that not only showed the Urza\u2019s Dream Engine art, but also asked players to think about the RoboRosewater cards in a game context rather than just as abstract individual cards. I also made sure to tag RoboRosewater in these posts. I had previously attempted to reach out the the developers on the both on Twitter and on\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fwww.mtgsalvation.com%2Fforums%2Fcreativity%2Fcustom-card-creation%2F612057&amp;t=NzU5Zjg0ZDg1YThiOGQ3OWE4ZWM0MTU1ZjMxZjY0YmFjMDkzYTcxMSxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">MTG Salvation<\/a>, the forum where it had originally been posted. There was no info on either about who actually made the bot and I wanted to be sure that I could credit them and that I had their blessing.<\/p>\n<p>Luckily, a few days before the event at\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fbabycastles.com%2F&amp;t=MGY1Zjk3YmQ3Mzg3Y2M3NmY5NzQxMzJjNDFiOTk5MGVlMGQ0M2UxNCxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Babycastles<\/a>, I received a Twitter DM from the RoboRosewater account asking if there would be any pictures of the event. I was thrilled to hear from them, and honestly a bit starstruck. I was happy to know that they approved of the event and was glad for the opportunity to ask about how they wanted to be credited. I want to give a huge thanks to\u00a0<a href=\"https:\/\/twitter.com\/pickfifteen\">Chaz<\/a>\u00a0and\u00a0<a href=\"https:\/\/twitter.com\/rmmilewi\">Reed<\/a>\u00a0for making the bot that got the ball rolling on this project.<\/p>\n<h2>Playmats<\/h2>\n<p>As a prize to give away at the Babycastles event, I ordered two custom playmats from\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=https%3A%2F%2Fwww.inkedgaming.com%2F&amp;t=YWZhMTM1NzFjNWI1MWE5NDc2OGMzZDI1MzU4ZGI4YTdhZWQ0ODllYyxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Inked Gaming<\/a>\u00a0with a collage of some of the images generated by Urza\u2019s Dream Engine. It\u2019s a small thing, but it was fun to see them, and I hope they\u2019ll get some use from the folks who won them.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-5.jpg\" \/><\/p>\n<h2>The Draft<\/h2>\n<p>The event itself was fantastic. I knew the cards would be interesting to play, but I wasn\u2019t sure they would be fun. It turns out that as weird as the draft environment was, it was also very playable. The set offered multiple viable strategies both for deck building and playing. There are a few leftover packs and I\u2019m looking forward to doing it again. A photographer,\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Flippemfg.org%2F&amp;t=MmE0NjEyZmFmNmMzYTRhYzhjMTRiNzlhYzM2MTAyZjBmODYyZTM5OCxWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Lippe<\/a>, took some\u00a0<a href=\"http:\/\/andymakesgames.tumblr.com\/post\/167717400899\/amazing-photos-of-the-roborosewater-robodraft-at\">lovely pictures<\/a>\u00a0of the event.<\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-6.jpg\" \/><\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-7.jpg\" \/><\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-8.jpg\" \/><\/p>\n<p><img decoding=\"async\" alt=\"image\" src=\"https:\/\/www.sickgamedev.win\/wp-content\/uploads\/2017\/11\/blog-creating-a-machine-learning-algorithm-to-illustrate-magic-cards-9.jpg\" \/><\/p>\n<h2>\u00a0<\/h2>\n<h2>Closing Remarks<\/h2>\n<p><em>Magic<\/em>\u00a0is a game that I love, and this was a fascinating way to interact with it. It was also my first glimpse into machine learning and image generation as a whole. I\u2019m very please with the result both of\u00a0<a href=\"http:\/\/t.umblr.com\/redirect?z=http%3A%2F%2Fandymakes.com%2Furzasdreamengine%2F&amp;t=ZWNkMjQxMjY1NDg5OGYwNzI2Mzk3MGI2Y2JjNzA4OTQ4NTI3YzA1YixWanNZWkhzaQ%3D%3D&amp;b=t%3Am6DjqU2Y9T2Q_w4nx_LjeQ&amp;p=http%3A%2F%2Fandymakesgames.tumblr.com%2Fpost%2F167733819029%2Furzas-dream-engine-the-roborosewater-robodraft&amp;m=1\">Urza\u2019s Dream Engine<\/a>\u00a0and the resulting booster draft. Finally I want to extend another thanks to Chaz and Reed for creating\u00a0<a href=\"https:\/\/twitter.com\/RoboRosewater\">RoboRosewater<\/a>\u00a0and giving me an tool to build around.\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The following blog post, unless otherwise noted, was written by a member of Gamasutra\u2019s community.The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company. [This post originally appeared on my blog] Urza\u2019s Dream Engine\u00a0is a neural network project I\u2019ve been working on for a few months. It\u2019s a [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":6011,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-6010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/6010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=6010"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/6010\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media\/6011"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=6010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=6010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=6010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}