A simple chess engine in C.
This is a rewrite of an older version that was in C++. A few features are missing and some stuff needs to be fixed as shown in Todos. These will be worked on subject to time constraints.
go
:wtime
,btime
,winc
,binc
,movestogo
,movetime
,depth
position
:fen
,startpos
uci
isready
perft n
will count leaf nodes at depth n
- Complete writing move ordering
- Taper PSQT evaluation
- Add PSQT evaluation
- Richard Allbert's explanation of principle variation in his Vice series
- Marcel Vanthoor's Rustic chess engine for move ordering and PSQT explanation. I created my PSQT tables using a combination of Rustic's and these psqt tables.
- The Weiss engine, from which I got the idea to hash the first token of each uci command
- Chess Programming Wiki
- Oliver Brausch's Olithink, specifically his method for peeking std input to check for "stop" command interrupting engine search
- Analog Hors' explanation of magic bitboards
- Tord Romstard's source code for finding magic numbers
- Sebastian Lague's video, which was also the original inspiration for Ylva.
MIT