Tuesday, December 8, 2015

Zombie Dice AI Challenge

The Gist

In this challenge, you write an AI for the game Zombie Dice. The AI has to make a simple, binary decision: cash in the brains or roll again. You are provided with all of the code to play the game and run tournaments. The only thing that you may submit is an AI that inherits the based AI class. One of its method takes in a few parameters, and return a True/False decision. 



Alright, what is Zombie Dice?

The game is simple, a few dices, some brains and shotguns.
Zombie Dice is a small game produced by Steve Jackson Games. You may find the game in a local gaming store, in the Apple App store, and on Amazon. It is a "push your luck" kind of game. N players sit around a table. In turn, a player draws three dice and rolls them. There are three possible outcomes: brains, shotgun blasts and feet. Each brain is worth a point for as long as the player accumulates less than three shotgun blasts. The decision required is whether the player should cash the brains or roll again. In the case of a re-roll, all dice with "feet" are picked up and more dice are drawn from the cup, up to 3 dice in hand. The dice then are rolled and the process repeats itself. If at any time the count of blasts on the table is 3 or more, the player scores 0 points and must pass the cup to the next player.

The game ends at the end of the first turn where at least 1 player has a cumulative score of 13 or more. The winner is the player with the highest cumulative tally of brains.

Details about the game

The cup contains 13 dices: 6 green, 4 yellow and 3 red. The green die has 3 brains, 2 feet and 1 blast. Red die has 3 blasts, 2 feet and 1 brain. The yellow die has an even number of feet, brains and blasts. The maximum score for a turn is thus 13, while the minimum is 0. 

Ok, how does it works?

Step 1 - Get the code

The code is available on GitHub. Download a zip archive, or clone the repository (preferable to get updates).


If you don't know Python... time to get started. You only need to write the content of one method (minimally). You only need to know enough to handle the game's logic. 

Step 2 - Register by joining the slack channel

Quick communication can be done via a slack channel. Feel free to join here:


You will need to request an invitation. Private (e)mail Christian Blouin with your email address to get one. "cblouin" + "@" + "dalhousie"[:3] + '.' + 'canada'[:2] Note: cs.dal.ca and dal.ca address can now auto-enroll. 

Step 3 - Understand what needs to be done

Please refer to this separate post to understand better the code base and what needs to be done. 

Step 4 - Run the tournament yourself

Place your AI class(es) into the tournament folder and execute the ZDtournament.py script. The outcome will appear on leadersboards once the tournament ranking is stable.

Step 5 - Submit your absolute best shot

When you feel confident that your best solution is competitive, submit your code to the tournament admin. 

Grand finale

The official tournament will take place on February 1st 2016. There will be three criteria:

  • 1 vs 1 [1 point]
  • 4 player table [1 point]
  • Most efficient AI on 4 players [tie breaker, 1.1 point]
Each AI will be run in duplicates within the same competition to provide a coarse assessment of variance with respect to sampling error. Each tournament is made of mini-tournaments of 20 games. Opponents are selected at random but should play approximately 5000 mini tournament each. These parameters may change when I determine the shortest stable tournament length.

There will be three divisions:

  • Division 1: out of program and BCS/BInf/ undergraduates with less than 20 courses completed.
  • Division 2: General undergraduate students.
  • Division 3: All of the above, plus Master's, Ph.D. and alumni.


We'll meet over lunch to reveal the final leaderboard. The leader in each categories may then share their awesomeness with everyone else.

Ranking

All AI enter the tournament with a set amount of gold. Each game played require each AI to put forward a fraction of 20 gold based on its prior probability to win against the set of opponents (current rank over the sum of ranks of opponents). After each mini tournament, an AI recovers gold in proportion to its frequency of actual victories.

No comments:

Post a Comment