CookieCat,
an educational open source chess program by Steven Edwards designed for pedagogical purposes, written in Free Pascal[1]. CookieCat evolved from the earlier Bozochess project [2] announced in October 2011 [3], renamed in December 2011 [4], and first released in January 2012 [5] under the permissiveBSD License. However, Steven's wish that his CookieCat should be easily searchable on the net without too many false positives didn't fulfill when Steven Universe came up with a fictional character [6] and ice cream [7] in 2013.
CookieCat's search dubbed Spooky is implemented as iterative search using a finite-state machine as nested procedure inside SpookyFindMove, which structure is outlined in following snippet:
{ ***** Spooky search routines ***** }procedure SpookyFindMove(var ssc: ssctype);procedure SpookyPrepareRoot;procedure SpookyIterationSequence;procedure SpookyIterate;procedure SpookySearch;procedure SpookyLimitTestNode;procedure SpookyMovePick;procedure SpookyOrderMoves;procedure SpookyPickThis(index:Integer);procedure SpookyMinimax;begin{ SpookySearch }with ssc dowhile pirvec[ply].nss <> nssexit docase pirvec[ply].nssof
nssplystart:{ Search state: Initialize processing at this node }
nssfirdrawtest:{ Search state: Draw tests for fiftymoves/insufficient/repetition }
nsstbprobe:{ Search state: Probe the tablebases }
nssstandtest:{ Search state: Gainer (QSearch ed.) search stand-pat evaluation and test }
nssgenerate:{ Search state: Move generation }
nssmovepick:{ Search state: Move pick }
nssexecute:{ Search state: Execute the move and advance one ply }
nssretract:{ Search state: Retreat one ply and retract the move }
nsspostscan:{ Search state: Post move scan operations }
nssplyfinish:{ Search state: Final processing for this node }end;{ SpookySearch }end;{ SpookyIterate }end;{ SpookyIterationSequence }end;{ SpookyFindMove }
Smokey
Smokey is CookieCat's iterative mate finder with nested procedures outlined below:
an educational open source chess program by Steven Edwards designed for pedagogical purposes, written in Free Pascal [1]. CookieCat evolved from the earlier Bozochess project [2] announced in October 2011 [3], renamed in December 2011 [4], and first released in January 2012 [5] under the permissive BSD License. However, Steven's wish that his CookieCat should be easily searchable on the net without too many false positives didn't fulfill when Steven Universe came up with a fictional character [6] and ice cream [7] in 2013.
Table of Contents
Description
CookieCat utilizes bitboards as basic data structure to represent the board. Inside CookieCat's source code [9], there are three groups of routines named after some of Steven's feline companions. There are the Lucky positional evaluator routines, the Smokey mate finder routines, and the Spooky general search routines. The names were chosen not so much to be cute, but rather to make it easier for others to identify the program's functional organization [10]. CookieCat features five hash-tables, beside the main transposition table, an endgame tablebase cache, a pawn hash table, evaluation hash table, and a dedicated perft hash table, and can further probe an opening book [11] and Edwards' tablebases.Bitboard Infrastructure
Bitboards are defined as union (variable structure) of four 16-bit words and one 64 bit value:Population count and BitScan rely on 16-bit lookups:
Spooky
CookieCat's search dubbed Spooky is implemented as iterative search using a finite-state machine as nested procedure inside SpookyFindMove, which structure is outlined in following snippet:Smokey
Smokey is CookieCat's iterative mate finder with nested procedures outlined below:Lucky
Lucky, CookieCat's evaluation function with evaluation hash table and pawn hash table considers material, pawn structure with focus on passed pawns [12], and piece mobility.Download
[13]See also
Forum Posts
2011
Release date target by Steven Edwards, CCC, October 16, 2011
The name change by Steven Edwards, CCC, December 16, 2011
2012 ...
External Links
References
What links here?
Up one level