Kiwi
Copyright (c) 1999-2004 by Alessandro Scotti.
http://www.ascotti.org/

Kiwi is a Winboard/XBoard chess engine.

Version 0.1c

Sep 30, 2004. Just a bug fix for Win95/98 users: program would freeze at startup.

Version 0.1b

Sep 19, 2004. First public release. Supports most of the Winboard protocol. No opening book yet. No configuration file. Logging always enabled, will log info on "kiwi_log.txt": this file is overwritten every time the engine starts.

History

Development on the Kiwi engine began in December 1999 but stopped almost completely in January 2000. At the time I was also working on a GUI written in Delphi, which I also had to abandon for reasons that I can't remember now (though, statistically speaking, "too much work at real job" shouldn't be too far from truth). Last August (2004) I was stuck for technical reasons on my latest project Tickle and decided to wipe some dust from good ol' Kiwi. The newest build I could find in my disk was from March 2000, which contained at least a few fixes with respect to the January build, which was really buggy.
Most of the work I did during August and September 2004 was fixing the bugs left (sometimes with help from the great folks at CCC) and implementing the Winboard protocol. In fact, the engine is lacking some serious work in important areas (e.g. how positions are evaluated), but for now playing weak chess is a great improvement with respect to playing illegal chess! :-)

Technical data

Kiwi's development was heavily influenced by Prof. Hyatt's engine Crafty (I think it was version 9.x at the time!), so I'm also using bitboards, rotated bitboards and similar code for move generation and move ordering. However, Kiwi is written in C++ and the design and implementation is quite different from Crafty's. Besides, there are several things I want to do differently now, but they'll have to wait for some future release.
For searching, I'm using the MTD(f) algorithm as described by Aske Plaat, and I've had my share of trouble getting it to work reliably enough. The rest is pretty much standard stuff: futility pruning, null-move (R=1), check and pawn push extensions, 2-slot per entry hash table. I have a long "todo" list though, and many things are definitely going to change...

WAC (new) results: 285/300 on 700 MHz Athlon at 5 seconds per move, 297/300 on 1.8 GHz P4 at 30 seconds per move. Kiwi nemesis: WAC 180.

System requirements

For Windows: any 32-bit version of Windows, running on a Athlon or Pentium 3 CPU or better. Couldn't test it on many platforms though. Engine requires about 36 Mb of free RAM.

For Linux: same as Windows, but running Linux! :-)

License

Kiwi is Copyright (c) 1999-2004 by Alessandro Scotti.

This program is distributed "as-is" in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. In no event will the author be held liable for any damage arising from the use of this software.