David's Diplomacy AI Page

This page contains the files I've made available for the DAIDE project. I've also written an explanation of how to use them.


These all require Windows 95/98/NT/2000/XP. For NT, Service Pack 6 is required.

The DAIDE Mapper is a version of Mapper for use with the AI Server. It provides a map which is updated in real time from the server. It can act either as an observer to let you see the game as it progresses, or as a Human Client to allow you to play against the AI's (or against other Humans)

The DAIDE Server is the central server for the DAIDE project. It runs the games played between the AIs. As it is developed, and bugs are fixed, new versions will be uploaded here on a regular basis. The zip file contains everything that is needed to get the Server running on a Win32 machine.

Everybody else has written a Holdbot so I thought I should do so too...

And once you've got a HoldBot, the next thing to write is a RandBot

If you want something that plays a little better than either of these, then try DumbBot

Other Bots are also available from other Authors. See the DAIDE Central Website, Client Download page for details.


The DAIDE Overview gives an overview of the project, and how it all fits together.

The DAIDE Syntax Document gives the syntax that AI Clients must use to connect to the AI Server. Note that the tokens in this document are encoded into 16 bit values, not sent as text over the TCP/IP link.

The Low Level Protocol explains how the messages are sent over a TCP/IP connection.

The FAQ contains questions and answers on the project. Currently they are mainly questions about why things have been done the way they have.

Source Code

Microsoft Visual Studio Version 6 or above is required to build this software.

The AI Client Framework is a framework which does all the basic stuff an AI has to do, leaving the AI programmer to get on with the difficult bit ! Based on three classes - MapAndUnits contains all the information on the game map and the current position. AiClientDlg contains the main dialog (which does very little), and BaseBot is the Base class from which the users AI is derived. It can equally well be used as the basis for an observer.

The Holdbot above was written using the above framework. This file contains the two new and one changed file that must be added to the AI Client Framework Project to make it into a HoldBot.

The Randbot above was written using the above framework. This file contains the two new and one changed file that must be added to the AI Client Framework Project to make it into a RandBot.

The DumbBot above was also written using the AI Client Framework. Once again, DumbBot requires just three files - a .cpp and .h for the Bot class, and a new Bot_Type.h to set the type of Bot. DumbBot was written in just 2 days, and the logic is all pretty simple. As such it is a fairly good coding example of how to write a slightly competent Bot.

In order to compile these, you need the DAIDE CSP DLL, written by Andrew Rose. The latest version can be found at the DAIDE Central Website. However, at times, the latest version of the code there will not work with the above source, until I have the time to update the AI Client Framework to include the latest modifications. The version of the DAIDE CSP DLL which works with the above Source code can be found here.

There is no proper help for The AI Client Framework. However there is a text file containing a series of e-mails where I explain how it is meant to all work here.

The source code for the Mapper and Server are not currently available, as I am still developing them, and want to avoid the problems of source control, etc. However, if there is a specific module that you'd like to see the source code for, then please ask. Here is:


The DAIDE Central Website