Monday, May 22

Zombology AI Competition

There's been some interest in the AI competition, so I'm going ahead with it - thanks very much for your offers to help me test the balance of Zombology.


I'm trying to test the balance of my card game Zombology after some rules changes in the second edition which I will be releasing later this year. To properly test the game I need to play it hundreds of times, which I'm struggling to do in the flesh around a full-time job, young family and imminent second child! So I've written a game harness that will play the game on a computer and I want to test it using reasonably realistic human-mimicking AIs. The aim is to write a AI to play Zombology, and have it be the best at winning the game across numbers of players. Your AI will not be used for any purpose other than the competition and the testing of the game's balance.


The test will be based on the Zombology second edition rules.

You will need to download the game solution and then implement a subclass of the Player class in the solution in C#. You can use the ConservativeSciencePlayer and RiskySciencePlayer examples for inspiration. Your class must obey the following rules:

  1. You must implement all of the abstract methods on the Player class which describe your choices and return your chosen option.
  2. You cannot change any game state (the base Player class will do this on your behalf).
  3. You cannot share state between multiple instances of your player in a game (i.e. no static members).
  4. You can only use information that would be available to a human player in your position (this should be enforced by the GameState and PlayerState classes - feel free to remember things from previous rounds, but no looking at cards you haven't seen, etc.).
  5. All entrants must provide their Player-derived class to me by the end of 30th June 2017 BST (UTC+1), entrants received after this time will not be included.
  6. In the event that a bug in your class results in the game harness crashing, I will give you as much information as I can about the crash and give you one week to fix it before re-running the test.
If you need to make any changes/fix bugs to my existing classes please detail them in the comments to this post and I'll incorporate them and re-share the solution so everyone has the same information. Please comment below and subscribe to the comments on this post if you are entering, so I know who you are, how many entrants there are and you get notified if I have to change anything. I will copy your player class (and any ancillary classes you've created) into my solution for the test, any changes you've made to the existing classes will not be preserved.

The Test

I will have the harness play 60,000 games, 10,000 each with 3, 4, 5, 6, 7 and 8 players. For each game the harness will pick a random player from my ConservativeSciencePlayer, my RiskySciencePlayer and all the entrant's players for each slot in the game. I will record each player class' total games played and games won stats and will sum these across all sizes of games. The class with the best win/play ratio across all games will be declared the winner. In the event that the top two or more entrants are within 0.01% of each other, I will repeat the test just using the 'tied' entrants - the winner of the second test will be declared the winner, even it if is still within 0.01%.

Remember it's a semi- co-op game: the best result is you are sole winner, the second best result is you are a shared winner, third best is everyone loses and the worst outcome is that you lose but others win.


The winning AI gets huge kudos, plus I'll give you a free, signed and numbered copy of the second edition of Zombology, including free postage worldwide.

No comments: