Chess programming

Started by
30 comments, last by Druzzer007 20 years, 6 months ago
I looked around and found this.
http://www.jinchess.com/ So no need to restrict yourself to C++, your choice. As for speed do you really have anything that could backup your claim about speed? You know Java programners are somehow alergical on that coments. (they applied when Java was interpreted, it was several years ago)
If you are so concerned with worst case value 1.4 (1.2) then you could have recommend macro asambler. Well it''s not OO so rather not (and learning curve is rather high, so it''s better for libraries). I''d actually more recomend to have a nice debug enviroment and to have possibility to more do a work on real AI than on "hunting your last memory overflow bug". From my experience, posibility to view your program from more different angles than was expected from a "Graphic interface created for playing" is surely nice. Possibility to run your program on multi OS box without rebootin to another OS is sometimes, or rather say most times, worth the troubles.

You could be proud so you don''t have to type line of code for graphic or networking. I would be however more happy with a libraries for networking and graphic than programs dependant on standard I/O stream.
I''d preffer this for debug, library conection and other basic task.
debuggui=Gui.getGui(1);
debuggui.setKeyboard(this);
debuggui.setProperties(Properties);
while(debuggui.executionOfThisGUI()==true){
//main execution loop.

than this.

while(true){
command=Receiver.parseString(in);
switch(command){
}
}

It don''t look too badly this way, but you''d have a lot of inter Thread communication. Not to mention that you''d start programming with a parser. Anyway good luck.

So get back to AI. It looks like even now majority of thinking in Chess is done by somewhat restricted tree search. You''d be lucky, doing depth search to 5 levels then trying to do it more clever way... If you''d do tree seach in GO it would be diseaster however. So there are more clever ways. Trying to find them is one of fun of programming such games. (trying to say don''t do most of the time microoptimalisation and do it rather by clever ways.)


Russell, do chess programers use a single evaluation function or is there switching between them after consideration of the situation on the board? Just currious, becose if I''d did a single evaluation function for my game it would say: you are screwed, until last part of game. So AI tries to be smart and don''t think in how screwed situation is.
Advertisement
I'm only saying that if you were going to learn a language for the purpose of chess programming, I wouldn't learn Java. If it's what you already know and are proficient in it, then by all means, use it, because that is what you will be most successfull in.
quote:Original post by Raghar
Russell, do chess programers use a single evaluation function or is there switching between them after consideration of the situation on the board? Just currious, becose if I'd did a single evaluation function for my game it would say: you are screwed, until last part of game. So AI tries to be smart and don't think in how screwed situation is.
I hope I understand your question correctly. A lot of programs just use a single evaluation function. I think some of the better ones use what they call "preprocessing evaluation", which basically means that they try to examine what kind of position is on the board, and use an appropriate evaluation function. So a program might have different evaluation functions for the opening, the middlegame, and the endgame. You could get very specific and have evaluation functions for specific endgames if you wanted to, and things like that.

Some people think preprocessing evaluation is a bad idea, because if you aren't 100% sure that you are using the right evaluation function, you can shoot yourself in the foot very easily.

[edited by - Russell on October 20, 2003 5:02:56 PM]

This topic is closed to new replies.

Advertisement