Originally posted by SirLoseALotWell, note that GM's only ever play the commercial programs, not the free ones. 🙂 But I think that OTB, a GM will have serious problems with a tactical monster like Fritz 8 or Shredder 8.
I think those GM plays computer matches are fixed.
It used to be that computers had the tacticas of an IM with the positional ability of a weak expert. Now they have the tactical ability of a super GM with the positional ability of a master (2200 or so). That makes them a formidable opponent at faster (G/30) time controls.
Originally posted by pradtfHappy to be of service.
thank you dkappe for your insights.
what languages do you program chess programs in?
where is a good place to start learning about these things?
in friendship,
prad
C is really the weapon of choice for chess programming. I myself am playing around with Java since I want to but together a weak program in an applet for chess visualization purposes.
The best site out there for my money is Bruce Moreland's chess programming tutorial at http://www.brucemo.com/compchess/programming/index.htm
For two very short programs that play a decent game of chess, see MSCP (2000 lines of code) at http://brick.bitpit.net/~marcelk/mscp/ and TSCP at http://home.comcast.net/~tckerrigan/ .
For some really sweet stuff, guaranteed to make your head hurt, see http://members.home.nl/matador/chess840.htm from the developer of Rebel.
Also, Crafty (http://www.tim-mann.org/crafty.html) is available as source. There you can see how a truly world class chess program is put together. I'd say it's only a notch or two under the pro ones. Many of the other top engines have used this baby as their starting point.
Originally posted by dkappethose links look exciting and i will be eager to explore them since my son and i are about to delve into C!
Happy to be of service.
i am particularly interested in how one program ends up being better than another, so understanding the simpler ones would be a great place to start and work up to crafty.
this may be the only antidote for even rhp 😀
many thanks!
in friendship,
prad
Originally posted by pradtfLet me relate a little annecdote from my own chess programming experience.
i am particularly interested in how one program ends up being better than another, so understanding the simpler ones would be a great place to start and work up to crafty.
Chess programming is really divided into two parts: search and evaluation.
The search is basically a alpha-beta minimax with lots of bells and whistles. One of those whistles is search extensions, that is looking a few moves deeper when a position is interesting.
The evaluation is the function that looks at a position and gives it a numerical score (good for white, good for black, etc.). My program is fairly primitive in it's understanding of positional factors, using mostly material and board control to assess the score of a position.
Still, looking 7 ply deep, it was doing OK on FICS, averaging 1850-1900 or so in blitz. Then I added the recapture extension, i.e. look one move deeper on a recapture. My program's rating on FICS shot up 200 points. It was still only searching 7 ply on average, but in tactical lines it might reach 12-14 ply.
The answer in the past on how to make your program stronger was increase the search depth by making it faster. Generally 1 ply more (a move for one side) = 50 rating points. Now that search improvements like null-move pruning, MTD(f) and razoring/futility pruning are in all the top programs, the arms race for speed has really ended. The new focus is on adding positional knowledge into the programs (which hurts speed, but you don't get something for nothing).
All in all a positive development for us. Positionally stronger engines mean we get to learn how to play better as humans.
Originally posted by dkappeagain a very interesting post especially the effects on rating points.
All in all a positive development for us. Positionally stronger engines mean we get to learn how to play better as humans.
i am looking forward to exploring all this in a few weeks.
thank you.
in friendship,
prad
Originally posted by foilmost certainly in a few weeks after i am settled a bit.
I'm using Perl to write a chess program, just for kicks. Maybe I'll clean up my code, if anyone wants to take a look ...
Later
i wouldn't mind giving it a try in python either - there is some stuff which does move correctness already so that's a good starting point perhaps.
in friendship,
prad
Originally posted by foilHaving done something similar in the past, I can warn you that you'll soon get the need for speed, i.e. your program only starts getting dangerous when you're 6+ ply deep. 🙂
I'm using Perl to write a chess program, just for kicks. Maybe I'll clean up my code, if anyone wants to take a look ...
Later
Still, it is pretty cool to write something that plays chess in perl.
Originally posted by pradtfhmmm ... move correctness .. interesting ... not familiar with python ... maybe I'll do a little reading ............
most certainly in a few weeks after i am settled a bit.
i wouldn't mind giving it a try in python either - there is some stuff which does move correctness already so that's a good starting point perhaps.
in friendship,
prad
Originally posted by dkappeSure, perl is slow compared to the Cs , ..... really just doing it to learn more perl, to write different code than I usually do ..
Having done something similar in the past, I can warn you that you'll soon get the need for speed, i.e. your program only starts getting dangerous when you're 6+ ply deep. 🙂
Still, it is pretty cool to write something that plays chess in perl.
Cheers
Originally posted by BadBishopOthello, Tic-Tac-Toe 🙂, and a training variant of Go where the first player to capture N (where N = 1 to 5) stones wins.
dkappe, what other game playing programs did you write? Go? Backgammon?
I also wrote a card playing program (Rummy 500).
The Othello program got to a point where I just couldn't even begin to beat it. Kind of an odd feeling when that happens.
The chess programs (I've written 2, one on 6502 assembly which sucked and one in C which is OK) I could always beat, since I knew where the weak spots were (closed positions, king safety, etc.).