Thousand Parsec AI Programming Competition

Thousand Parsec is running an AI Programming Competition in which you can win cool prizes. See below for lots of cool details.

News

Submitting your entry

by Mithro

As there is less then 4 days to go until the competition closes, here are the details for submitting your entry for the competition.

Before we tell you how to submit your AI, if you want to compete in the battle section of the competition you must first check that it fits these criteria.

  • The AI must have an executable file which is called "tpai". This can be a symbolic link to the real file.
  • The AI must either run without being installed or when installed to an arbitrary location.
  • Multiple instances of your AI's must be able to be run at the same time.
  • The AI will be called with an URI specifying the server to connect to. This will be as follows below,
    ./tpai tp://<username>:<password>@<server>:<port>/
    
    The URI will be fully specified, even if the port is default. The URI will always use the tp protocol. Support for tps, http, https, tphttp or tphttps is not required.
  • The AI will run in a text console only environment. No graphical environment such as X or the console Frame Buffer will be available.
  • The AI will be restarted for each battle. There is no guarantee that any data will persist across battles (For example, the AI could be run on a different machine or in a different directory or under a different user.)

To submit your entry, you must create a tar.gz or zip file of your AI. This archive must include the following things:

  • An INSTALL file, this file must describe how to setup and install the AI. Include ALL dependencies which may be required and how to get them. It is HIGHLY recommended that you include the Debian/Ubuntu package names (and/or package repositories) in this file.
  • A LICENSE file, this file must describe the OSI approved license you are using for this AI.
  • A README file, this file must include a short description on how your AI works, cool things to look at and general information.
  • Your source code. We will not accept binary only submissions.
  • Optionally, you can include a prebuilt binary which will run on an x86 Ubuntu Edgy Eft install.

You must then upload the archive to a public web location and email the URL and a MD5 sum of the archive to submission@thousandparsec.net. You will get a reply within 24 hours (from a human) confirming we have successfully downloaded your submission.

Some more notes about judging too:

  • If your AI segfaults, stops with a stack trace or has a similar issue. It will not be restarted for the remainder of that battle.
  • A reasonable attempt will be made to build your AI (if required). If we are unable to build your AI it will not be eligible to participate in the battle section of the competition. We may at the judges discretion contact you if we are having problems.

All submissions must be in before 00:01 on the 31st of March 2007 (UTC).

Winners will be announced before the Monday, 30th April.

Wednesday, 28nd Mar 2007

New Links Section

by Mithro

I have added a new Links section to this page which should make it easier to find all the helpful libraries which already exist.

Friday, 12nd Feb 2007

Help for all you AI coders

by Mithro

There have been a lot of interesting updates which should help you produce an even better AI. You have less then two months left now, so get hacking! The due date is the 31st of March.

Rusty Russel on Wesnoth's AI

The first update is a high quality video of the AI section of Rusty's Gaming Miniconf talk. You can find the video here. You can also find the full talk and the other talk from the Gaming Miniconf at the following locations.

MiniSec Battle Simulator

As part if trying to fix MiniSec support in tpserver-py I've had to redo the Battle Simulator. It now runs standalone from the server infrastructure. You can download the required file directly or check out tpserver-py from darcs. It should be useful for getting a feel for how battles occur.

WARNING:This simulator is not exactly the same as the code running in tpserver-cpp (which will be used in the competition battles).

tpserver-cpp config file

Lee has created a server config file which produces a situation that will be very similar to the final config. You can get a copy of this config file here.

Friday, 2nd Feb 2007

End date wrong!

by Mithro

It looks like I stuffed up, the due date for entries is the 31st of March not the 1st of March. This gives you a whole extra month to make your AI even better.

Monday, 22nd Jan 2007

Forum setup!

by Mithro

I've setup a Forum linked to the tp-comp mailing list. It works just like the other mailing lists/forums.

Friday, 19th Jan 2007

Prizes

The most important part of all competitions is what you could possibly win!

There are two major prizes up for grabs, each major prize consists of

  • $AUD 300 in cold hard cash.
  • "Artwork of Thousand Parsec" Wall Calender.
  • Signed Thousand Parsec T-Shirt.
  • Custom Thousand Parsec Mug.

There are also 2 minor prizes, each minor prize consists of

  • "Artwork of Thousand Parsec" Wall Calender.
  • Signed Thousand Parsec T-Shirt.
  • Custom Thousand Parsec Mug.

One major prize and one minor prize will be awarded in each of the two categories:

  • "Battle Points" - The AI which gains the most "battle points" via beating other AI into a bloody pulp.
  • "Good Code" - The AI with the code judged to be the "best".
See below for more information about how each of these categories is judged.

Every AI entry which gains at least 3 battle points will receive a pack of Thousand Parsec stickers to plaster over everything.

Categories

There are two independent categories that each AI will participate in.

Battle Points

The first category is the AI which "wins" the most "battle points". At the competition close, each AI will be run in a number of games. These games will fall into two types. Battle points will be awarded for achieving certain goals in each game.

All battle points achieved will be tallied and then the AI with the largest amount will win the major prize. The AI with the second largest amount will win the minor prize.

One vs One Games

The first type of game will be a One vs One games. In these games each AI will battle it out with one other AI according to the rules listed below.

  • Each AI will compete in a game with every other AI.
  • MiniSec rules as implemented in tpserver-cpp at competition close.
  • The server will be tpserver-cpp.
  • Turns will be 50 seconds long with 10 seconds for turn generation.
  • There will be 25 Planets scattered under a random number of Systems.
  • There will be 2 Planets in each AI's Home System.
  • Winning condition is wiping out all enemy planets.
  • If no AI has won after 500 turns the game will be considered a draw.
  • A winning AI will receive 3 Battle Points.
  • A drawing AI will receive 1 Battle Point.

4 All-Against-All Games

The second type of game will be a 4 way All-Against-All games. In these games each AI will battle it out with three other AI according to the rules listed below.

  • Each AI will compete in a game with every other AI.
  • MiniSec rules as implemented in tpserver-cpp at competition close.
  • The server will be tpserver-cpp.
  • Turns will be 50 seconds long with 10 seconds for turn generation.
  • There will be 50 Planets scattered under a random number of Systems.
  • There will be 4 Planets in each AI's Home System.
  • Each AI's home planet will be a minimum of 5 turns by battleship away from each.
  • The Universe will be (at it's widest point) 20 turns by battleship across.
  • Winning condition is wiping out all enemy planets.
  • If no AI has won after 1500 turns the game will be considered a draw (of the remaining AI).
  • A winning AI will receive 9 Battle Points.
  • A drawing AI will receive 3 Battle Point.

Good Code

For the second category, each AI will be graded by a panel against a set of criteria. The grades in each category will be added together to obtain a total grade for the AI. The AI with the highest total grade will be awarded the major prize, the AI with the second height total grade will be awarded the minor prize.

Judging Criteria

  • Readability, how easy it is to figure out what the code is trying to do. Good documentation plays a very large part of this category. Quality rather then quantity will also improve your score.
  • Extendability, how easy it would be to use the same AI for MTSec.
  • Simplicity, how simply the code which actually works is.
  • Usability, how easy it is to setup and get the client running on a standard Ubuntu box.

Judges

Their will be 3 judges for this section, there names are listed below.

  • Tim Ansell (mithro)
  • Lee Begg (llnz)
  • Jure Repinc (JLP)

Submission Details

All submissions must be in before 00:01 on the 31st of March 2007 (UTC).

Submission Details will be released closer to the closing date.

Contact

Register your interest or intent to compete by sending an email to the following address comp@thousandparsec.net. This email address can also be used if you have any problems or suggestions.

Mailing List

You can also join the mailing list which you can discuss how totally kick arse your AI is. You can also organise test games and other stuff. List can be found here.

Forum

There is also an Internet forum which is linked to the mailing list like other forums.

Links

This is just a general AI programming competition. You can use any language, Python, C++, Ruby, Haskel (even Perl). Some languages will be easier to use however as they have protocol libraries already written for them. Below is a list of useful links sorted by language.

All

MiniSec Definition Documentation
Defines the rules the game will be run by.
TP Protocol Spec (03)
Defines how to talk to the game servers.
Object Descriptions
Defines what objects exist in the universe and what properties they have on them.

Python

Python Thousand Parsec Protocol Library

A library for connecting to Thousand Parsec servers and issuing commands. Works in both blocking and non-blocking mode.
Stable Version
The current stable version of the library.
Darcs Repository
The latest, yet to be released code.
Online Documentation
The latest documentation. Can also be downloaded here.

Python Thousand Parsec Client Helper Library

A library which provides a bunch of useful tools for working with Thousand Parsec servers. Including:
  • Incremental Download using a reloadable cache.
  • Threading for Network, Finding Servers, etc.
  • Support for MVC type systems.
Stable Version
The current stable version of the library.
Stable Darcs Repository
The latest, yet to be released code.
Stable Documentation
The latest documentation. Can also be downloaded here.
Unstable Darcs Repository
The latest code including a bunch of changes which break a lot of things.
Unstable Documentation
Documentation for the unstable version. Can also be downloaded here.

Python Simple AI Example

A simple AI which I started but never got around to finishing. Uses libtpclient-py.
Darcs Repository

C++

C++ Thousand Parsec Client Protocol Library

A library for connecting to Thousand Parsec servers and issuing commands.
Stable Version
The current stable version of the library.
Darcs Repository
The latest, yet to be released code.
Online Documentation
The latest documentation. Can also be downloaded here.

C++ Text Client

A simple client which uses the C++ Protocol Library.
Darcs Repository
The latest, yet to be released code.

Other Terms and Conditions

The competition prizes will only be awarded if there are more then 4 competitors (or at the discretion of the judges when less then 4 competitors).

A competitor may submit more then one AI, however a competitor may only win one prize in each category. (IE They can win the major prize in both "Battle Points" and "Good Code". They CAN NOT win both the major and minor prize in the "Battle Points" category.)

All code must be released under an OSI approved Open Source License which is GPL compatible.

All AI clients must run via normal client connections. Integrating with the server is not an option.

All code must be run on Ubuntu Dapper Drake using only tools and libraries with OSI approved licenses. (For example, Don't use Java functions which are not implemented in the free versions.)

Any programming language which can runs on Ubuntu Dapper Drake and has an implementation with an OSI approved license can be used. Note however that some languages naturally rate low on the Readability category.

Judges or their close family will not be allowed to participate.

This page and the competition details can change without notice. No change will reduce the overall cash value of any of the prizes.