Author: Steve Timson
Date: 04:00:19 11/07/01
On November 02, 2001 at 13:35:02, Scott Gasch wrote: >On November 02, 2001 at 09:26:45, Dann Corbit wrote: > >>On November 02, 2001 at 08:56:22, José Carlos wrote: >> >>>ChesterX 2591(+97) 2725(+56) Knee Jerk Ath-1200 >> >>Where can I find out more about ChesterX? It seems to be an incredibly strong >>program. > >Steve Timson is the author of Chester and he's lurking around here in this >forum. He would probably respond to a post addressed to him if he saw it. >... > Hi, I just caught this message. I don't have much time lately to carefully read this forum - and as Scott rightly guessed, I didn't read this thread because the heading didn't grab my eye. Some brief background on chester's history: chester began as an experiment with 0x88 move generation. I read some of Bruce's posts describing it and thought it sounded interesting. I had written another chess engine a few years previous - it played under the name SoftChess on FICS for a while a few years ago. It was ok, not great by any means. I was learning everything at the time. Hacking in this feature or that which I discovered in whatever engine I was looking at. I looked at crafty, thought rotated bitboards seemed great and proceeded to throw the thing into such chaos that I eventually gave up on it. Anyway, so I read some of bruce's posts about hex 88 and thought it seemed interesting. Using TSCP's basic structure as a guide, I quickly hacked up a very simple test engine in Java, using 0x88 as the board representation. It worked well. With the old chess programming bug back in me, I started improving it, adding in some of the more complex features I had used in my old program. Pretty soon, I ran into an internal VM error in the version of Java I was using, and decided to port it back to C (a more natural language for me anyway). An interesting note is, at that point I had an exact port running in both languages. I was stunned at how well Java performed - roughly 50% of the nodes/sec of optimized C code. Of course, I didn't use any dynamic memory allocation at all in the Java code, but I was still impressed. It just so happened that at this time I was taking a 6 month break from work. This meant I had full time to devote to the project and chester started getting much better very quickly. Having written an engine once, and then starting with a clean slate allows for very rapid improvement. That 6 month period was about a year and a half ago. During those 6 months I may well have spent 60 hours a week on it or more. "Under the hood" chester is very simple. No really tricky stuff going on. 0x88 board representation, standard PVS search, only full ply extensions (limitted through what part of the tree they are applied in, rather than by partial plies), mostly standard extesions (including recently a simple version of singular extensions inspired by some comments from Bruce at CCT3), full Heinz-style pruning (FP EFP razor & qsearch) - but with some tricky determinations of margin that depend on what is going on on the board, null move even in endgame, but with a zug research in low material situations, etc. Eval is also pretty simple, focused on what can be done quickly rather than pure correctness. The only area I do slowly and carefully is mobility. I pay a pretty high price do some slightly complex mobility stuff because I think it is extremely important given a comp's style of play. One of chester's main strengths I think is that it is relatively bug free. Having been tortured by the buggy, complex, mess that was my first program, chester was engineered with simplicity, cleanliness and easy debugging as the prime goals, even if it meant sacrificing speed in places. Chester owes a ton to the discussions that happen here, on ICC etc, and of course to freely available source code like Crafy, Amy, Gnuchess, TSCP etc. There are ideas in chester from all of those places as well as plenty from discussions with programmers on ICC (e.g. Vincent, Peter, Andrew and Scott), posts here, and papers from Ernst. Scott was especially helpful. As Scott was doing serious development on Monsoon at the same time I was with Chester, we shared a lot of ideas, worked through a lot of bugs together/etc. You might even be able to say Chester and Monsoon grew up together.. :) Anyway, now I've written a ton. I have been meaning to set up a website for chester for quite a while containing this sort of info, but any time I have to spend on chester, I always feel like improving(breaking) something rather than writing html. I'd be happy to discuss any other specific aspects of chester. - Steve
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.