Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better CLI options #1

Open
4 tasks
DEGoodmanWilson opened this issue May 31, 2018 · 8 comments
Open
4 tasks

Better CLI options #1

DEGoodmanWilson opened this issue May 31, 2018 · 8 comments

Comments

@DEGoodmanWilson
Copy link
Owner

DEGoodmanWilson commented May 31, 2018

  • Options for mana curve
  • Options for card type distribution
  • Options for weighting various factors' importance (e.g., should we pay closer attention to creature power? Or ignore creatures entirely? Does the color distribution matter really?)
  • Options for deck format (Standard, Commander, etc.)
@cgapperi
Copy link

Tonight I was driving from Chicago to Iowa City. On my way, I was listening to a presentation on TensorFlow. Don’t ask me why my head went to using ML to optimize a deck. Probably because I am so tired of my sons laughing at “Papa’s decks”. The biggest question, I think, is how to create the training data, right? What constitutes a ‘good’ deck. I think in some regard you are onto something. We have to start somewhere. I like the concept of setting an expectation and then testing the Euclidean distance of the training decks. You have really hit on some of the complexities of the features to include in the training data, but I think the real meat is in the labels. How do we know if it is playable? I was brainstorming on this and came up with a few models, but recognize the simplicity of the models, really didn’t scratch the itch. So, what if we used training data to then build some decks and play those decks against each other in another neural node of the pipeline? Then, the ML would start to learn what is a good deck, no? Or maybe even playing the new decks against the decks I own that I have already established as playable?

I am completely new to ML programming, but would be interested in at least bouncing models off the wall with you.

@DEGoodmanWilson
Copy link
Owner Author

It's a huge open question, isn't it? Because I'm using a GA to evolve decks, we need to be able to evaluate millions of decks quickly. My most recent efforts are around doing two things:

  • Classifying cards into one or more categories based on their rules text
  • Looking at popular / winning decks from decklists online to find associations between card categories. I.e., discovering things like (to make up an example) winning decks that include flyers also include counter-spells. Then using those associations to evaluate candidate decks (Ah, this deck has flyers—but does it also have counter-spells? Yes? +10 points!)

This work is going on in a branch, but I don'T recall which one. TBH the repo is a bit of a mess, and I haven't messed with this in some months—maybe almost a year now. I'll take some time to consolidate my work, and see if I can't put together a reasonable set of introductory documents!

Thanks for your interest! Would love to have more folks on hand helping out 😄

@solomonhawk
Copy link

solomonhawk commented Jul 22, 2019

Hey @DEGoodmanWilson, I enjoyed your blog post about this project and I've dreamed of making something similar but haven't seriously approached the problem. I wonder if you've considered any applications of NLP on helping to generate tags/labels to help w/ the ML approach.

As for a pipe dream scenario I dream of having:

  1. a labeling component that, given a set of cards can process the text and generate tags of varying degrees of complexity (i.e. basic abilities, phase based triggers, condition-based triggers, zone interactions)
  2. a higher-level synergy analysis component that given the labels above can generate the more abstract concepts you've touched on (e.g. archetype classification, synergistic relationships based on rules text [tags]) - which I also imagine requires datasets for evaluating the success of those synergies e.g. mtgtop8 deck rankings/listings
  3. a novel decklist generating component that can, given the above 2 sets of data, generate novel deck combinations, possibly using GA

Very much in line with your thinking and efforts so far. It's probably wise not to try and tackle everything at once but I am curious to hear what you've been up to recently.

Cheers

@DEGoodmanWilson
Copy link
Owner Author

@solomonhawk I have! The project has evolved considerably since my original blog post to do a lot of what you're asking for, in fact! I have some branches to merge, several ugly bugs to work out, a few performance tweaks to consider, oh and also I need to write up the current state of things. Happy to walk you through the current state if you're interested in chipping in!

@solomonhawk
Copy link

Right on, glad to hear it. I don't want to create extra work for you in terms of orienting me around the project or teaching me about all of the super neat things you're pursuing. I am quite curious though - perhaps I'll await a follow-up blog post. Consider this a small nudge of encouragement to look for another milestone and to write about it. :)

@DEGoodmanWilson
Copy link
Owner Author

Consider the light lit. I have a (very) long train trip coming up, wherein Internet access will be dodgy—I plan on getting a lot of my writing backlog done then 💃

@Dead-Ra
Copy link

Dead-Ra commented Jul 23, 2019

Just saying, i am totally excited if this will work completly in the future. I am sadly a noob in programming and so my own idea of programming something that generates a nice comander deck by giving it some must have colors/cards/commanders stayed a dream. But understanding your code and to get it running at home held me bussy for a week :).
Greetings.

@RhythmicGaming
Copy link

this is what i would like to do personally

https://docs.google.com/presentation/d/1UoviS5iTHr-RgU9ungPa9ZVO7o41nyhc0YMCVt8qzM0/edit?usp=sharing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants