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.