Computer Chess Club Archives


Search

Terms

Messages

Subject: For Dann - Re: ICC Compuer List re: ChesterX

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.