Demo Controls

Demo Modes

When running the demo, the first thing you are prompted with is selecting the mode to run. Each mode provide a different functionality of the program. Here is the list.

0. Randomly generate and display cards.

1. Generate cards with specified seeds. The seed to generate a card is used in the name of card, so this mode can help revisiting some cards seen in other modes. Note that as RNG is system/compiler dependent. If a card is generated on a machine and read into the program from another machine (e.g. ones in mode 6 and 7), the number in the card name may not guarantee recovering the same card.

2. Play against AI using decks generated freely or with specified seeds (card pool unknown; directly generating cards for decks).

3. Play against yourself with decks generated freely or with specified seeds (card pool unknown; directly generating cards for decks).

4. Simulate AI Vs AI matches between (different) AI's on the same set of random decks based on a card pool (Warning: this can be long simulation depending on spec).

5. Simulate AI Vs AI matches (with same AI) for evaluating cards (decks) on the same card pool with both random and evolutionary deck building/matching scheme (Warning: this can be long simulation depending on spec). The output data files from one of the runs is provided, so that other modes (6 and 7) may directly use them without re-running this long simulation. Data files containing "human" in the name may make sense to be read. They contains the testing results for cards in the random environment and meta environment respectively.

6.Simulate AI Vs AI matches (with same AI) between different two sets of given decks on the same card pool (Warning: this can be long simulation depending on spec). Both set of decks contains 10 decks, and the decks are matched pairwise and each pair is repeated for multiple times, and the pairwise win rate gets output to a text file like a matrix. The result is expected to be an overwhelming win for the meta decks. 

7. Playing with AI using either the 10 meta decks (from mode 5) or the top 10 random decks (from mode 5) for the optimized set in the thesis. This give a directly feeling on how much better the evolutionary scheme does on evaluating good cards. This is related to one of the claims in the poster paper and the thesis, i.e. game environment/context is very important for evaluating cards (and decks).

8. Test a card pool in terms of balance (Warning: this can be long simulation depending on spec).

9.  Produce an html file for a given card pool. The output contains an html file which can be viewed by browsers.

We recommend trying out mode 0, 2, 7, 9 and they are short and interactive to run. In Mode 7 you would generally expect to feel meta decks to be stronger (may be of similar strengths in rare cases) than top random decks, even given that the the random environment tried much more decks and matches.

Game Control Commands

For most of the parts, you will only need to follow the prompts and input whatever is requested. If a format error occurs, the program is not likely to crash, but mostly would expect you to input the same information again. For the inputs for actually playing the matches (in mode 2, 3, and 7), there are quite a few actions you might want to choose from, so here we demonstrate a little. Note, the following inputs/commands are only valid inside an actual match (x, y, z below indicate integers, they refers to or is related to the numbering labeled on the board, ordered as your leader -> your minions -> opponents minions -> your hand, see the figures below).

Here are some examples of querying actions, given some game state in the middle of a match (blue indicates my inputs).

As shown I can use the numbering on the printed board to querying any cards on my hand or any leader or minion on the field. After querying, I decide playing card 9 and 8 this turn is a good idea. So I first played card 9 with command "P 9 0 -1". Here the second element 0 is for the minion positioning, it means to play it in the very front of the minion list; using 1 instead would put it after the existing minion with label 1. The third element's value does not matter (I usually use -1 to be clear) as it does not have a targeted effect.

The battlecry on the card I just played happens to have its condition satisfied (I do have another card at my hand has Untargetable ability), so quite a few minions are added to the field. Now I want to play what's previously card 8, but now card 11. Note that card labeling will change as the game states change. Within one action, the system is set up so that the labels refers to what it was right before the action, so we do not have to worry much on occasions like the target label changes when minion is inserted with the action. However, after performing one action, we need to make sure to refer to the new label for the next action. So here I would play the card I want by the "P 11 -1 4". Because the card is a spell so positioning is not used (the second element -1), and the third element is 4 because I want to use its targeted effect to destroy that opponent minion (any number from 1 to 5 would be valid, as the spell can target any minion, including my own ones).

 

At this point I still have two characters that can attack, my leader (from a previously played leader card) and a minion I played last turn, and I want to use them to my advantage. So I used the command "A 0 5" and "A 2 4". The first action doesn't cause any label change so the numbers in the second command are still consistent with the figure above, otherwise I would need to first look at what the actual labels are before executing it.

This completes a pretty good turn for me and next I can type in the command "E" to end this turn. As there isn't an animation (doesn't quite make sense to have until there's a graphic visual), AI may execute multiple actions in a sequence very fast, so it may needs some scroll up for a human player to read what's happening with AI's actions. Overall this example shows pretty much what the current console I/O game play is like.