Computer Chess Club Archives


Search

Terms

Messages

Subject: Symbolic: Status report 2004.06.14

Author: Steven Edwards

Date: 14:51:07 06/14/04


Symbolic: Status report 2004.06.14

I've decided to temporarily defer work on Symbolic's Lisp code; instead, I'm
working on the underlying chess toolkit.  This is needed as I want to start
automated testing against other chess programs and the toolkit did not have
support for a number of features required for this now necessary testing.

--------

One needed feature is support for integrating time control information with the
chess clock class and the level class.  The time control class CTTimeControl
contains an array (primary, secondary, tertiary) of CTCSegment instances.  Each
CTCSegment instance in turn has items for move count, time limit (seconds),
increment, etc.  One thing that has been lacking is a way to parse time control
specification strings; this wasn't used to date; I did hard coding instead.
Another needed item is a function that calculates the nominal time allocation
given a CTTimeControl object and a CTChessClock object; the latter also has
built-in move counters.  The result of this function is passed to the desired
search object; to date, this number's default value was entered interactively.

The time control string syntax follows the PGN specification; it differs from
the usual printed tournament advertisements in that the time limits are given in
seconds instead of minutes and also in that the control period (segment)
separator is a colon instead of a comma followed by a space.  An increment, if
present, is suffixed to the period time limit as a plus sign followed by the
increment value in seconds.

Some examples:

	Standard game in five minutes blitz, no increment:
    		G/300

	Blitz, five second increment:
		G/300+5

	30 moves in 30 minutes, then 30 minute sudden death:
    		30/1800:SD/1800

	30 moves in 60 minutes, repeating:
    		30/3600

	Traditional World Championship:
		40/7200:20/3600:SD/1800

	World Championship with ten second
increments:		40/7200+10:20/3600+10:SD/1800+10

In all cases, the last segment repeats if its move count is neither G or SD.

If an increment is present, then the value is added to the player's clock at the
start of the player's move (bonus mode), not after.  Bronstein mode is not
supported.

I might add hourglass mode if such is common in online competition.  The string
syntax for this will be:

	H/<seconds>

So, the three minute glass egg timer I had once employed (when I was a teenager
and couldn't afford even a cheap BHB clock) would be represented as:

	H/90

I will probably add names for traditional time controls for easier input.  These
will be shamelessly stolen from the manual for my Saitek chess clock.

--------

Another required addition to the toolkit is a mechanism allowing automated play
against a different chess program.  At the moment, the designated opponent is
Crafty and so the automation protocol will be xboard.  While I have some issues
with xboard, it will be sufficient for the task.  Also, it will provide a GUI
for Symbolic other than its default TTY style I/O.  Furthermore, xboard will
work under both Linux and Mac OS X when either is running the X Window system.
It may also be possible to run a modified version of xboard directly from the
Mac OS X Quartz window interface; another advantage.

Because the xboard protocol is not under my control and also because I may add
support for other protocols, I won't embed xboard support directly into
Symbolic.  Instead, I plan to write a two-way translation layer that maps
between xboard lingo and Symbolic's existing command and response protocol.

--------

An aside: I recently tried a serious, multi-hour game between the toolkit and
Crafty.  (The moves were communicated manually.) Not surprisingly, Crafty beat
the toolkit.  However, I was pleased that Bob's program took eighty-eight moves
in its effort while searching more than twice as many nodes per move.  From the
game it's clear that the toolkit is seriously hampered by the current absence of
code for evaluating pawn structure, king safety, and several other positional
factors.  These items will be added and the soon-to-arrive automated competition
support will help with the testing.

[Event "Manual test"]
[Site "gail.local"]
[Date "2004.06.13"]
[Round "*"]
[White "Chess Toolkit 2004.06.13"]
[Black "Crafty 19.3"]
[Result "0-1"]

1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 c5 6. d5 O-O 7. Bd3 e6 8. dxe6
fxe6 9. Nf3 Nc6 10. O-O Nd4 11. Kh1 Nh5 12. Ng5 h6 13. Nh3 Qh4 14. Be3 Bd7 15.
Bf2 Qe7 16. Qg4 Be8 17. a4 Kh8 18. Qh4 Qd8 19. Qxd8 Rxd8 20. Bh4 Rd7 21. g4 Nf6
22. Bxf6 Rxf6 23. g5 hxg5 24. fxg5 Rxf1+ 25. Rxf1 Kh7 26. Nf4 Re7 27. Kg2 Be5
28. Rf2 Rf7 29. Nh3 Kg7 30. Rxf7+ Kxf7 31. Nf2 Nb3 32. Nfd1 a6 33. Bc2 Nd4 34.
Bd3 Bc6 35. h4 Ke7 36. Kf2 b6 37. Ne3 Nb3 38. Ned1 Kd8 39. Kg2 Ke7 40. Kh3 Nd4
41. Kg4 Be8 42. Bf1 Nb3 43. Bd3 Nd2 44. Be2 Kd8 45. Kh3 Bc6 46. Bd3 Nf3 47. Bf1
Bd7 48. Bd3 d5 49. b3 Ne1 50. Be2 d4 51. Nb1 d3 52. Bg4 Bf4 53. Nf2 Ke7 54. Bd1
Kd6 55. Nc3 Be8 56. Kg4 Ke5 57. Bf3 Bh2 58. Nb1 Kd4 59. Bd1 e5 60. Kh3 Bf4 61.
Bg4 Ke3 62. Nd1+ Kxe4 63. Nbc3+ Kd4 64. Nd5 Bc6 65. Bc8 Bxd5 66. cxd5 e4 67.
Bxa6 e3 68. h5 e2 69. Nf2 gxh5 70. g6 Ke3 71. g7 Kxf2 72. g8=Q Nf3 73. Qg2+ Ke3
74. Qh1 e1=Q 75. Qxe1+ Nxe1 76. Bxd3 Nxd3 77. Kh4 Nc1 78. d6 Bxd6 79. Kxh5 Nxb3
80. Kg5 c4 81. Kf6 Nc5 82. Kf7 c3 83. Kf6 c2 84. Kg5 c1=Q 85. Kf5 Qg1 86. Kf6
Qg8 87. Kf5 Be7 88. Ke5 Qg5# 0-1

--------

Not only is the road long, but it occasionally has a detour.  Fortunately, there
haven't been any roadblocks; just a few potholes.



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.