Tord Romstad wrote:CThinker wrote:I'd like to first see if the ThinkerBoard ICS client interface works with your server.
You have written your own ICS client? That's interesting -- I also need to do that at some stage. How hard was it to implement? Do you have any useful links to documentation? All the documentation I have seen is meant for human users and not for writers of client software. In principle, all the information I need is there, but in practice the documentation is structured in such a way that it makes it frustrating to figure out exactly what I have to do.
For HGM's tournament this weekend (I'm not 100% sure I will be able to participate, but I think I will), I will have to cheat and use XBoard.
Tord
I have had the ICS client for a number of years now. It is for the Pocket PC. It is the most used client for Pocket PC on FICS. At one point, it was the only ICS client being used there. There were others, but those were unusable. Recently, there are at least two more usable Pocket PC ICS clients.
The same code has a Windows build, but its not pretty. I have not had the time to do a complete port. I use it to host the desktop Thinker engine at ICC and when participating in online tournaments (CCT, TACCL).
Developing it, I simply relied on the online help. Back when they still allowed guests to play at ICC, I would "telnet" and manually type the commands. I would then note the responses of the server, and then built the client accordingly. Because of that, the resulting client is very small (76K ARM binary). It only knows how to deal with the most commonly used commands. The Pocket PC Thinker still actively plays at FICS. When you notice it playing at FICS, it means that things are being tested.
Basically, the ICS client would have to parse these server responses that are intended for humans. For example, you would have to recognize things like: "Torre tells you hi there".
I did not have to time to write an efficient parser. I just ended up a "sscanf" statement for every server message that I expect.
The code looks something like this:
Code: Select all
ReadICSLine(s);
if (sscanf (s, "Creating: %s %s %s %s %s"), sName1, sRating1, sName2, sRating2, sMode) == 5) HandleCreating(s);
else if (sscanf (s, "Game: %i %s vs. %s %s", nID, sName1, sName2, sMode) == 4) HandleGame(s);
etc. etc.
Yeah, I know it looks ugly. I'm not proud of this code base.
Currently, around 12 server messages are recognized.
The desktop version is not yet available for public use. It has been in the shelf for a long time now. It is even smaller than the Pocket PC version. At 48K, it has a WinBoard-like look, allows you to play with engines, play/chat at ICC/FICS/Chess.net, and host engines for online play. But I want it to be skinnable (line the current desktop ThinkerBoard), but then the new skins library is on the back burner too. Man, I just can't find the spare time to complete them.
Like you, I believe that a true computer chess player should be the complete package - UI, engine, book.
Cheers...