If you want a challenge that's not only at the cutting edge of game AI research but also fun to work on, then look no further! How about a game that combines the best aspects of Mafia (the party game) and Mastermind (the reasoning game)? Join the competition to build a bot that can deduce who is a spy, then deceive other bots into thinking it's not a spy!
Modern board games have found an important place in Game AI research, providing many additional challenges than the classical games such as Go, Othello and Chess. In particular, larger numbers of players, partial information, non-determinism and co-operative play are all interesting traits of modern board games. Don Eskridge's THE RESISTANCE, a hybrid card and board game that's ideally played in small groups, is the perfect competitive environment.
Photo 1: The very first impromptu RESISTANCE competition, held at the Dagstuhl seminar on Artificial and Computational Intelligence in Games. There were 8 bot entries written in Python, and written about in this report.
- You can get started from the code on GitHub, and join the mailing list for notifications and support!
- The deadline is September 14th at 23:59:59 UTC, though we encourage you to submit early versions of your bot beforehand.
- The results will be announced at the Game/AI Conference 2012, to be held in Vienna on September 18th.
- Anyone can enter the competition, and you don't have to attend the event to participate in the competition.
- If you attend the conference and submit a bot, you get a special edition mug as a bonus!
- If you submit a bot that beats the intermediate AiGameDev.com bots, you win a bonus PLUS membership.
- The top three places include PREMIUM subscriptions to AiGameDev.com for you or your research lab!
The Rules & Gameplay
THE RESISTANCE competition features five players split into two teams, the Spies (2x red players) and Resistance (3x blue players). There are five missions that take place involving a subset of the players — each with one or more rounds of voting. The team that's first to secure three missions wins; Spies must sabotage missions, and Resistance operatives try to make the mission pass.
Video 2: Overview of the game and its rules produced by Travis from Indie Boards and Cards. This will give you an understanding how the game plays out!
For example, the current mission leader picks a team of 2 players to proceed on the first mission. Everyone discusses it and votes whether they think that's a good idea. Spies try to get onto the mission, and Resistance try to avoid Spies. Then when the mission proceeds the Spies will generally try to sabotage the mission, while Resistance operatives must support the mission.
The Bot API
The game is actually easiest to explain to programmers by the API! Here's what it looks like in Python, for example in a file called mybots.py.
class Stochasticator(Bot): def select(self, players, count): """Pick a sub-group of players to go on the next mission.""" return random.sample(players, count) def vote(self, team): """Given a selected team, decide whether the mission should proceed.""" return random.choice([True, False]) def sabotage(self): """Decide what to do on the mission once it has been approved.""" return random.choice([True, False])
Then you can run your bot against the others using the following command line:
# Play 1k games with your bot on its own... > python competition.py 1000 mybots.Stochasticator # Run 10k games against basic AiGameDev.com bots. > python competition.py 10000 mybots aigd
The results will then be displayed afterwards, and look something like this:
SPIES (voted, selected) LogicalBot 72.13% 54.87% 27.25% Statistician 60.66% 48.11% 23.70% Bounder 59.84% 46.13% 24.53% RESISTANCE (vote, select) Bounder 47.94% 100.0% 61.40% 71.24% LogicalBot 33.94% 100.0% 37.18% 58.84% Statistician 26.49% 96.81% 40.38% 35.74% TOTAL Bounder 64.19% LogicalBot 55.24% Statistician 45.81%
In this case, LogicalBot is the best spy and won 72% of its games being voted 54% of the time and selected 27% of the time. Bounder is the best Resistance player, voting for Resistance and against spies 100% and 61% respectively, while correctly selecting 71% of the time. Bounder also wins most overall at 64% of his games against the default provided bots in aigd.py.
Photo 2: A round of voting during a RESISTANCE mission. Each vote must balance the process of revealing information as well as securing missions for the purpose of winning.
If you'd like to participate, here's everything you need to know:
- Code Repository — Download the code from GitHub using "git pull https://github.com/aigamedev/resistance.git" then look at the bots.py file as an example. Run the competition.py script as above.
- Mailing List — The Google Group is the central place used for updates, support and coordination. Join it if you're planning on participating.
For any further questions, join the mailing list.
The details are to be finalized in conjunction with the participants, but here are the current rules.
- Only one bot is allowed per research group or per independent researcher.
- The competition will be run in two rounds, one preliminary qualifier against beginner to intermediate bots. The second round picks the best performing bots and plays them against each other.
- The number of games run in the two rounds of the competition will be in the order of 1,000 games.
- The maximum time taken for each API call is 0.1s. Bots that time out or throw exceptions are disqualified.
- Source code will be released after the competition, under a license of your choice.
Are you looking for a fun artificial intelligence project? Do you think you have what it takes to build a competitive bot in 1 month? Want to secure some awesome prizes in the process? Then this competition is perfect for you! Go download the code and join the mailing list to get started... Then see you at the Game/AI Conference 2012!