Author: Bruce Moreland
Date: 10:39:28 09/10/01
Go up one level in this thread
On September 09, 2001 at 18:08:12, Bob Green wrote: >I agree with the others who have posted - it **is** addictive and it **does** >take some time. > >I would add the following link as both having a lot of good information and >linking to even more: > >http://www.xs4all.nl/~verhelst/chess/programming.html > >One of the links missing from this is the following page titled "Build a >Grandmaster one Step At A Time": > >http://www.xs4all.nl/~verhelst/chess/programming.html > >I am going to quote verbatim from this site, which provided me a fine way of >both structuring my work and making sure I didn't "miss" anything: > > 1 Display the board and some skeletal menus. > 2 Create the data structure to represent the position. > 3 Write all the piece drawing routines. > 4 Initialize and display the board. > 5 Write the Make and Unmake functions. > 6 Devise and implement a method for the user to move the pieces (i.e. >click-point-click). > 7 Add legality checking to ensure the user's moves are legal. > 8 Add the basic options Takeback and Newgame. > 9 Write some debugging tools. > 10 Write one or more move generation routines. Some possibilities - > GenerateCaptures, > GenerateNonCaptures, > GenerateEscapes. > 11 Add a user option to display possible moves. It'll help debug those move >generation routines you just wrote! > 12 Add end-of-game tests. These include checkmate, stalemate, draw-by-rep, >draw by lack of mating material, draw by the fifty move rule. Test after every >"over the board" move. > 13 Implement the computer player using just the root move list. At this point, >the computer isn't searching - it's just making any ole' move. > 14 Add the movelist (moves that have been played over-the-board) to the >display in short algebraic notation. > 15 Take some time to finish your GUI. > 16 Implement the evaluator. Score only material imbalances for now. > 17 Implement a full-width search function. > 18 Devise some method of move ordering. > 19 Write a static exchange evaluator (SEE) to aid with move ordering. > 20 Display the principal continuation (for each depth) to the screen. > 21 Implement timing. Display clocks to the screen. > 22 Add search data to the display (depth, nodes, nps, evals, score ...) > 23 Write code to run test suites. > 24 Write all kinds of tools for evaluating data from test suites. > 25 Do some low level tuning before adding many heuristics. > 26 Implement separate search functions for root position and the quiescence >stage. > 27 Add heuristics to the searchengine - hashing, null move, main var search, >pvs, killers, history,extensions. Continually test your performance with some >tactical test suite, like "Win At Chess." > 28 Enhance the evaluator's knowledge. > 29 Spend time tweaking with more positional test suites. > 30 Add a save/load feature following the PGN standard. > 31 Develop an opening book. > 32 Add pondering. This means the engine "thinks" on the opponent's time. > 33 Add support for endgame tablebases. > 34 Write an ICS interface (allows internet play on a chess server). > 35 Experiment with learning algorithms. > 36 Add Auto232 - interfaces programs via serial port. All the stuff about the GUI can be ignored, if people don't want to take the time to write that stuff. All you need to do is write a move selection function, which I call "think". "Think" calls "search" using iterative deepening, it initializes timing, and it figures out which previously played positions should be regarded as draws due to repetition. Once you have this, you can plug the thing into Winboard, or perhaps some other existing GUI, and you are done. If someone can cope with using GPL'd code, it's even easier, I think, because my Winboard back-end is free: http://www.seanet.com/~brucemo/gerbil/gerbil.htm bruce > >Best regards, > >Bob Green
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.