Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Creating your own chess program

Author: James Swafford

Date: 18:59:46 09/09/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

Hey - that looks familiar! :-)
The correct URL is www.galahadnet.com/chess/chessprg.
You may also find www.galahadnet.com/chess/galahad and
www.galahadnet.com/chess/prophet interesting.

--
James



>
>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.
>
>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.