Zzzzzz

Home * Engines * Zzzzzz

Zzzzzz, (ZZZZZZ) an open source chess program under the GNU GPL by Gijsbert Wiesenekker written in C, and Version 5 (1998) in Pascal with a Delphi GUI for Windows platforms. A Chess Engine Communication Protocol compliant Zzzzzz 3.5.1 for Windows/Linux 32 is available from Jim Ablett's site. Zzzzzz had its debut at the DOCCC 1991, and further played many Dutch Open Computer Chess Championships and International CSVN Tournaments, as well as the IPCCC 1994 and Aegon 1997. Already at the DOCCC 1993, Zzzzzz 3.0 was able to play on five machines in parallel. The parallel alpha-beta routine was built around a public domain massively parallel computing environment, PVM. Meanwhile version 3.4 has moved to version 6, which still is command-line driven, but has evolved using bitboards, static exchange evaluation, null move, and extensions. It can search in parallel on two or three nodes with a shared hash table. =Quiescence Search= In Zzzzzz 3 the quiescence search looked like this, as explained by Gijsbert Wiesenekker in 1994 : When a piece captures, a capture flag is set on that piece. In the quiescence I allow QUIES_MAX free captures (so any piece may capture any other piece), but after these QUIES_MAX free captures only captures to pieces with the capture flag set are allowed. In this way the quiescence search always terminates and many exchanges like 'I capture your queen, you capture my queen etc.' are evaluated correctly. Higher QUIES_MAX values give better results, but also makes the program slower, so there is a trade off here. In ZZZZZZ the quiescence search hardly takes time: the quiescence search usually already terminates after the first eval call (depth = 0) (an evaluation you would have to do any way) and only about 10% of the eval calls come from deeper inner nodes. I also experimented with null moves in the quiescence search, but that did not help much.
 * 1) define QUIES_MAX 2

int quies(int depth, int alpha, int beta) {  int best, temp;

best = eval; if (best >= beta) return best ; for (all your pieces) { if ( (depth >= QUIES_MAX) and (no capture flag set on your piece) ) continue; for (all my ways to capture your piece) { temp = -quies(depth + 1, -beta, -max(alpha, best)); best = max(temp, best); if (best >= beta) return best; }  }   return best ; } =Testing= Gijsbert Wiesenekker on evaluation patterns and his testing approach : I play test games against a very strong chess program (Rybka). Now most of the time Rybka would have played a different move than ZZZZZZ actually plays, but the difference between the scores is only small. Of course, as the game progresses the differences gradually build up to a real disadvantage. Analyzing the small differences was not very helpful, one of the reasons also being that in chess openings many moves are playable. However I noticed that in certain positions the (usually already positive) score of Rybka's position suddenly went up by more than half a pawn after the move ZZZZZZ played, and that in certain positions the score of the move Rybka suggested for ZZZZZZ was positive (so the score of Rybka's position after that move from ZZZZZZ would even have been negative), but the score of Rybka's position was positive by more than half a pawn after the move ZZZZZZ actually played. Analyzing these few positions greatly improved the evaluation of ZZZZZZ. However, this is not easy. Especially patterns that should be evaluated positive but are evaluated negative are hard to find, as positions containing these patterns are removed from the alpha-beta search and do not show up in the PV. Conversely, patterns that should be evaluated negative but are evaluated positive are easier to find, as positions containing these patterns show up in the PV.

=Games=

Clash of the Consonants
IPCCC 1994, round 7, Zzzzzz - Xxxx [Event "IPCCC 1994"] [Site "Paderborn"] [Date "1994.10.01"] [Round "7"] [White "Zzzzzz"] [Black "Xxxx"] [Result "0-1"]

1.e4 c5 2.Nf3 Nc6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 e6 6.Ndb5 d6 7.Bf4 e5 8.Bg5 a6 9.Bxf6 gxf6 10.Na3 b5 11.Qd5 Bb7 12.Ne2 Bh6 13.Qd3 f5 14.Qh3 Qf6 15.Qxf5 Qxf5 16.exf5 d5 17.Rd1 O-O-O 18.c3 d4 19.cxd4 exd4 20.Rd3 Ne5 21.Rg3 d3 22.Ng1 Bf4 23.Rg7 Rde8 24.Kd1 b4 25.b3 bxa3 26.Nh3 Bh6 27.Rg3 Bd5 28.Bxd3 Rd8 29.Bxa6+ 0-1

DOCCC 2007
DOCCC 2007, round 7, Zzzzzz - Deep Junior [Event "DOCCC 2007"] [Site "Leiden, NED"] [Date "2007.10.28"] [Round "7"] [White "Zzzzzz"] [Black "Deep Junior"] [Result "1-0"]

1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 a6 8. Be2 b5 9. Qb3 c5 10. dxc5 Bb7 11. e5 Nfd7 12. Be3 Qc7 13. Nd5 Qa5+ 14. Kf1 Nxe5 15. Nxe5 Bxe5 16. Nb6 Nc6 17. Nxa8 Rxa8 18. Rd1 Qc7 19. Qa3 Na5 20. Bd4 Bxd4 21. Rxd4 Nc6 22. Rd2 e5 23. h4 Nd4 24. h5 a5 25. hxg6 fxg6 26. Qc3 Bd5 27. Kg1 Rf8 28. a3 Qe7 29. Rh3 a4 30. Re3 Qg5 31. Rg3 Qf6 32. Bd1 Rc8 33. Bg4 Rc7 34. Rd1 $2 Bc4 35. Qa5 Rxc5 36. Rc3 Qf8 37. Re1 h5 38. Bf3 Qd6 39. Be4 Kg7 40. Bd3 Kh6 41. Bxc4 bxc4 42. Qa8 Qf6 43. Qxa4 Rb5 44. Qd1 g5 45. Qd2 Qd8 46. Rd1 Qd5 47. a4 Rb6 48. Kh1 Rf6 49. Re1 Rf4 50. Rh3 Kg6 51. a5 Rf6 52. Ra3 Rf4 53. Ree3 Kh6 54. Rh3 g4 55. Rhe3 h4 56. a6 h3 57. Rg3 hxg2+ 58. Rxg2 Qa8 59. Qe3 Kg6 60. Qh3 Nf5 61. a7 Kg5 62. Ra6 Nh4 63. f3 1-0

=Forum Posts=

1993

 * Processors needed for ZZZZZZ 3.0 by Gijsbert Wiesenekker, rec.games.chess, November 12, 1993
 * ZZZZZZ 3.0 plays in Dutch Comp. Chess Champ. 1993 by Gijsbert Wiesenekker, rec.games.chess, November 15, 1993
 * Beta sites needed for ZZZZZZ 4.0 by Gijsbert Wiesenekker, rec.games.chess, November 16, 1993
 * ZZZZZZ 3.1 beta available by Gijsbert Wiesenekker, rec.games.chess, November 23, 1993

1994

 * zzzzzz 3.2 available by Gijsbert Wiesenekker, rec.games.chess, January 04, 1994
 * Re: Efficient quiescence by Gijsbert Wiesenekker, rec.games.chess, January 22, 1994
 * ZZZZZZ-3.3a1 available by Gijsbert Wiesenekker, rec.games.chess, February 23, 1994
 * Re: Alpha-beta inconsistencies by Gijsbert Wiesenekker, rec.games.chess, February 25, 1994
 * zzzzzz-3.31 available by Gijsbert Wiesenekker, rec.games.chess, April 06, 1994
 * WANTED: beta testers for Massively Parallel ZZZZZZ by Gijsbert Wiesenekker, rec.games.chess, July 08, 1994
 * ZZZZZZ 3.4 available by Gijsbert Wiesenekker, rec.games.chess, July 28, 1994
 * Re: Chess Program Too Slow -- Part II by Gijsbert Wiesenekker, rec.games.chess, December 01, 1994

1995 ...

 * Need free MAC chess PICTS by Gijsbert Wiesenekker, rgcc, June 18, 1995
 * ZZZZZZ-0.03 for the MAC by Gijsbert Wiesenekker, rgcc, December 19, 1995
 * Re: Anyone know of a freeware chess game for Windows 95? by Gijsbert Wiesenekker, rgcc, November 09, 1998

2000 ...

 * ZZZZZZ by G. Wiesenekker by Dann Corbit, CCC, December 23, 2000
 * Re: Delphi/Kylix Compiler by Tony Werten, CCC, March 16, 2001
 * psychological warfare by Georg von Zimmermann, CCC, March 17, 2001


 * Zzzzzz takes Junior to school by Theo van der Storm, CCC, October 28, 2007
 * ZZZZZZ 3.4 with winboard support available by Jim Ablett, CCC, April 13, 2008
 * ZZZZZZ 3.4 with winboard support available by Jim Ablett, Winboard Forum, April 14, 2008

2010 ...

 * Re: Evaluation Function Fuss by Gijsbert Wiesenekker, World Draughts Forum, February 20, 2011

=External Links=

Chess Engine

 * Index of /chess/engines/Jim Ablett/ZZZZZZ compiled by Jim Ablett, hosted by Kirill Kryukov
 * Comp Zzzzzz chess games - 365Chess.com
 * The chess games of Zzzzzz (Computer) from chessgames.com

Misc

 * Urban Dictionary: zzzzzz
 * Gee Whiz-z-z-z-z-z-z from Wikipedia
 * etymology - How did the letter Z become to be associated with sleeping/snoring? - English Language and Usage - Stack Exchange

=References= Up one Level