Computational pool is a relatively recent entrant into the group of games played by computer agents. It features a unique combination of properties that distinguish it from others such games, including continuous action and state spaces, uncertainty in execution, a unique turn-taking structure, and of course an adversarial nature. This article discusses some ofthe work done todate, focusing on the software side of the pool-playing problem. We discuss in some depth CueCard, the program that won the 2008 computational pool tournament. Research questions and ideas spawned by work on this problem are also discussed. We close by announcing the 2011 computational pool tournament, which will take place in conjunction with the Twenty-Fifth AAAI Conference.
Title: Computational Pool: A New Challenge For Game Theory Pragmatics
Author: Christopher Archibald, Alon Altman, Michael Greenspan and Yoav Shoham
Each software agent executes independently on its own machine. A game server coordinates and runs the tournament, matches, and individual games. When it is an agent’s turn in a game, the server will contact the agent and request a shot, passing it the information required for the agent to shoot. The server will coordinate multiple games at the same time, to enable multiple separate agents to be calculating shots at the same time (for different games). The client code necessary and a skeleton agent (written in C++) are provided so the only necessary work is to implement the agent.
To play two AI’s against each other, we have chosen to adopt the client-server model. The server will run a ‘game control’ program that will instantiate game play, as well as shoot the cue with the given properties supplied by each AI at the appropriate times. In order to expedite game play, we will allow multiple games to occur at once, even between the same two AI’s on the same machines. (This way, both can (almost) always be calculating a next shot.)
The server interacts with the clients. A fully functional client has been provided, implemented in C++, and it will handle all necessary communications with the server.
The server logs all information into a database, which allows an efficient analysis of the data after the tournament.
The physics library resides on both the server as well as the client and should be used to calculate shot trajectories. The AI’s will use it to evaluate potential shots, and the server will use it to calculate the AI’s chosen shot and give the appropriate player the set up for their turn.
The (open source) code for the client, physics library and server are available here.
If you have any suggestions or questions, please email: firstname.lastname@example.org