Project Goal: A powerful general game-playing engine

CadiaPlayer, our general game-playing software agent has won the General Game Playing (GGP) world-championship three times.

GGP Competition 2007

CadiaPlayer earned the title by winning the 3rd International General Game-Playing (GGP) competition, ahead of a field of players from universities world-wide. It won both the preliminaries and the finals. The preliminaries consisted of 8 days of play, with over 40 different games being played.

The GGP competition finals took place at the AAAI conference in Vancouver in July 22-26. The CADIA-Player agent won ClunePlayer, an agent from UCLA, in the final exciting match.

GGP Competition 2008

CadiaPlayer defended the title by winning the 4th International General Game-Playing (GGP) competition, again winning both the preliminaries and the finals. The preliminaries consisted of 6 days of play, with various single- two- and multi-player games being played.

The GGP competition finals this year took place at the AAAI conference in Chicago in July 15-17. Like the year before CADIAPlayer and the UCLA agent ClunePlayer went head to head in the final match, which consisted of three different games. In the end CADIAPlayer was victorious, winning two games of the three.

GGP Competition 2009

CadiaPlayer had a bad run in the 2009 competition, missing out on reaching the 4 finalists heat by a tie breaking rule. This time a pre-tournament playing period (June 15-28) on the Dresden GGP server replaced the preliminaries where CadiaPlayer, still showed its strength by placing 1st.

GGP Competition 2010

This year the preliminaries were a part of the final competition where the top 8 teams advanced to quarterfinals, from there 4 teams advanced to semifinals and finally 2 teams battled for the 1st place.

CADIAPlayer managed to reach the semifinals and placed 3rd overall after winning FluxPlayer which was the other team to reach as far as the semifinals. Ary and Maligne (which knocked out CADIAPlayer) were the teams that made it to the finals and in the end Ary was victorious, defending its title from 2009. Well done Ary!

The GGP competition finals this year took place at the AAAI conference in Atlanta, Georgia July 11-15.

GGP Competition 2011

This year the preliminaries were a part of the final competition where the top 8 teams advanced to quarterfinals, from the winner was determined using double bracket elimination.

With this win CadiaPlayer became the first agent to win the GGP competition three times.

The GGP competition finals this year took place at the AAAI conference in Toronto, Canada July 22-26.

Australian Open 2012

The AI'12 GGP competition took place at the Australasian Joint Conference on Artificial Intelligence in Sydney, Australia December 4-6.
The competition featured an incomplete information track in which 3 teams including CadiaPlayer participated.

Thus, Cadiaplayer is now the reigning world champion in General Game Playing for both, complete information and incomplete information games.

Background

Artificial Intelligence researchers have for decades worked on building game-playing systems capable of matching wits with the strongest humans in the world. The success of such systems has largely been because of years of knowledge-engineering effort on behalf of the program developers, manually adding application-dependent knowledge to their programs.

The hope is to take this approach to the next level: to build intelligent software systems that can, given the rules of any game, automatically learn a strategy for playing the game without any human intervention. Artificial Intelligence technology has now matured to the point where this is within realm of possibility, so Stanford University started the General Game-Playing Competition (http://games.stanford.edu) as an initiative to facilitate further research in the area. This is the third year the competition is held. In the first year ClunePlayer, an entry from University of California Los Angeles, won; FluxPlayer (http://www.fluxagent.org/fluxplayer.htm) from Dresden University of Technology is the reigning GGP world-champion after winning the 2006 competition. This was the first time CADIA, Reykjavik University's AI laboratory, entered the competition.

The GGP project is led by Dr. Yngvi Björnsson. He and Hilmar Finnsson, a graduated Ph.D. student in computer science, are the authors of CadiaPlayer.

CadiaPlayer Source

This code is presented “as is” without any guarantees, but it has been running for several years on both OS X and CentOS.

Instructions

This creates a folder named bin in the current directory which contains all you need, which is:

cadiaplayer - The CadiaPlayer GGP agent.
cadiaplayer.ini - Settings file for the CadiaPlayer GGP agent. Contains info on root parallelization.
games - Folder structure for the GDL to Prolog conversion. Must be in the same folder as the player.
ggp.extensions.pl - Prolog functionality to get game information.
ggpserver - HTTP server to manage communication between Game Manager and a GGP player.
externalserver - HTTP server to manage communication between CadiaPlayer and an external GGP player (root parallelization).
kif2ggp - KIF/GDL to YAP Prolog compiled state.
kif2pl - KIF/GDL to Prolog conversion.

Configuring CadiaPlayer

To configure how CadiaPlayer plays, edit the text file named:

cadiaplayer.ini

This file lets you set the type of agent that should play the games and what extensions to use. Refer to the comments in the file itself for further information. All available setting constants occur in the included cadiaplayer.ini file.

Testing CadiaPlayer

By running ./cadiaplayer you are running a ggp player that communicates in the GGP protocol minus the HTML through the standard in/out pipes. It has an augmented command set for testing purposes. This document, CadiaPlayer Commands, lists all the commands it can be sent.

Running CadiaPlayer

To run CadiaPlayer as a full-fledged GGP agent communicating through HTTP use:

./ggpserver ./cadiaplayer 59834

The ggpserver strips the HTTP protocol information from messages before sending them to the program named as the first parameter (here ”./cadiaplayer”) and constructs HTTP header information for the messages from it, before sending them to the Game Master. The second parameter is the port to listen for messages from the Game Master, the port 59834 shown is also the default port if this parameter is omitted.