World Championships Computer Stratego
As far as I know, there has never been a tournament for Stratego AI's, though I consider it a very interesting game from the AI point of view, having incomplete information and bluffing/anticipating the opponent as well as strategic and tactical move planning in partially known world.
I recently made an AI for Stratego for my graduation project from university and am now helping organising a tournament solely for Stratego programs. We will probably hold it in the end of oktober, which might be a little too soon if you'd have to start from scratch but if you have something and are interested in participating please contact me vdeboer_nl at yahoo.com
Note: I realise this might be seen as advertising, but we have no commercial motives just want to compare the strengths of our programs against other programs out there as even the best programs I know of have a hard time winning against any moderately experienced human opponent. This is a great way to see the strength and weaknesses of different AI algorithms in a type of game that has received relatively little research.
This sounds like an interesting game to go into, but I don't think I am going to have any time to give it a try; I haven't even found time for my go engine lately.
However, I can give you some ideas on how to prepare the field to make it easier for people to write engines.
Do you guys have a text protocol for communication between the engine and the referee program? If you don't, you should probably come up with one. Read the documentation for the chess protocol UCI to get some ideas on how to design it.
Once you have a protocol, you can easily write a program that matches one engine against another, or a GUI that can use any engine as the computer opponent. You can even set up an Internet server that will organize matches among the engines that have connected to it. Look at the computer go server CGOS for some ideas on how to do this.
Oh, it also helps a ton if you set up a computer-stratego mailing list, where people can ask questions, make announcements, discuss programming issues, agree on changes to the protocol...
All of these things will lower the initial barrier to get into the field. One last piece that would help is a simple open source engine for people to examine. And maybe you can throw in a Wiki?
If your tournament goes well (good luck), you can get the ICGA involved and have a computer-stratego tournament in the Computer Olympiad.
Anyway, I expect setting up a thriving computer-stratego community will take a lot of effort. Best of luck.
However, I can give you some ideas on how to prepare the field to make it easier for people to write engines.
Do you guys have a text protocol for communication between the engine and the referee program? If you don't, you should probably come up with one. Read the documentation for the chess protocol UCI to get some ideas on how to design it.
Once you have a protocol, you can easily write a program that matches one engine against another, or a GUI that can use any engine as the computer opponent. You can even set up an Internet server that will organize matches among the engines that have connected to it. Look at the computer go server CGOS for some ideas on how to do this.
Oh, it also helps a ton if you set up a computer-stratego mailing list, where people can ask questions, make announcements, discuss programming issues, agree on changes to the protocol...
All of these things will lower the initial barrier to get into the field. One last piece that would help is a simple open source engine for people to examine. And maybe you can throw in a Wiki?
If your tournament goes well (good luck), you can get the ICGA involved and have a computer-stratego tournament in the Computer Olympiad.
Anyway, I expect setting up a thriving computer-stratego community will take a lot of effort. Best of luck.
Sounds pretty interesting. Any way you might postpone the deadline a few months? It would encourage not only me, but probably many other people (as you hinted) to enter.
programs will be able to implement an interface that should allow the server to communicate with them.
The game server already exists. Games will be played at www.metaforge.net, a server where human players play against each other. Games will be publicly viewable and stored for replay.
The interface doc you can find at http://www.metaforge.net/webstratego/ai/
As for the deadline, it depends of course on the interest, but if this is a success and there are other people who would want to participate later we will of course follow up on it. The mailing list is a very good idea.
[Edited by - vdeboer on September 11, 2007 11:35:26 AM]
The game server already exists. Games will be played at www.metaforge.net, a server where human players play against each other. Games will be publicly viewable and stored for replay.
The interface doc you can find at http://www.metaforge.net/webstratego/ai/
As for the deadline, it depends of course on the interest, but if this is a success and there are other people who would want to participate later we will of course follow up on it. The mailing list is a very good idea.
[Edited by - vdeboer on September 11, 2007 11:35:26 AM]
Sorry if this is a silly question: what technology are you using to communicate with the server - SOAP, HTTP POST, some other method...?
not a silly question, but you won't have to bother about this.
I'm risking here since I'm not programming this, but there will probably be a downloadable game client that does the connection with the server, so the participants task is just to implement the interface. I edited out my earlier statement that the interface was for java only since it's supposed to work like that for all languages.
I'm risking here since I'm not programming this, but there will probably be a downloadable game client that does the connection with the server, so the participants task is just to implement the interface. I edited out my earlier statement that the interface was for java only since it's supposed to work like that for all languages.
Here's how it works: Metaforge administers real-time, peer-to-peer Stratego games on it servers. They provide a downloadable Java client. Subscribers logon with the client and play games.
Earlier this year, Metaforge extended the client to support AI engines as well as human players. The AI supplies a setup and makes moves, just as a human would.
This API:
http://www.metaforge.net/webstratego/ai/
is Version 2 of the AI interface, and is under development at Metaforge. In this version, the Metaforge client calls the AI methods directly, and is language-independent. Thus far, there are two Stratego programs being modified to support the new API, and hopefully a few more will be in the works soon.
Metaforge is thus providing a terrific service to would-be Stratego AI programmers: You can concentrate entirely on your AI and leave the UI to Metaforge. When you're ready, your program will be able to play against other AI's during Metaforge AI tournaments, and perhaps human opponents at other times. Also, Metaforge subscribers will be able to watch the AI tournaments live and replay the games later from logs.
We hope this will provide a boost to Stratego AI programming and create the basis for a Stratego AI community. As a game of incomplete information that uses variable, hidden setups, Stratego offers programming challenges that are at once more difficult than chess and more near to the kind of logic humans employ in their everyday lives. Stratego AI is also perfectly suited to learning algorithms, insofar as the style of the opponent is relevant to selecting the best moves. And perhaps best of all, it's still uncharted territory: no one has yet written a program that can play at the level of a Stratego master. Maybe you'll be the first!
Earlier this year, Metaforge extended the client to support AI engines as well as human players. The AI supplies a setup and makes moves, just as a human would.
This API:
http://www.metaforge.net/webstratego/ai/
is Version 2 of the AI interface, and is under development at Metaforge. In this version, the Metaforge client calls the AI methods directly, and is language-independent. Thus far, there are two Stratego programs being modified to support the new API, and hopefully a few more will be in the works soon.
Metaforge is thus providing a terrific service to would-be Stratego AI programmers: You can concentrate entirely on your AI and leave the UI to Metaforge. When you're ready, your program will be able to play against other AI's during Metaforge AI tournaments, and perhaps human opponents at other times. Also, Metaforge subscribers will be able to watch the AI tournaments live and replay the games later from logs.
We hope this will provide a boost to Stratego AI programming and create the basis for a Stratego AI community. As a game of incomplete information that uses variable, hidden setups, Stratego offers programming challenges that are at once more difficult than chess and more near to the kind of logic humans employ in their everyday lives. Stratego AI is also perfectly suited to learning algorithms, insofar as the style of the opponent is relevant to selecting the best moves. And perhaps best of all, it's still uncharted territory: no one has yet written a program that can play at the level of a Stratego master. Maybe you'll be the first!
Well, I can implement the interface no problem. But is there a discussion forum for this, since I'm not sure where to go from there?
Hmmm... so how exactly is the AI interface going to be cross-platform. I'd very possibly be interested in writing a .NET interface for this, but if the interface library is in Java, I wouldn't think that it would be possible to use .NET without knowing the low level internet protocol used to communicate with the server. Could you clarify this please?
Ah, good old Java. The language of choice for creating bloated, over-complicated procedural interfaces with an object oriented veneer.
There's a project out there to make a .net to java bytecode compiler; I don't know how well that's working, but it might be possible to write a C# program and then translate it to java bytecode.
There's a project out there to make a .net to java bytecode compiler; I don't know how well that's working, but it might be possible to write a C# program and then translate it to java bytecode.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement