Monday, August 2, 2021

How to Write a BitBoard Chess Engine

Introduction
There are a number of reasons why you may be interested in how a chess program is written:

  • You are learning programming and interested in learning something different.
  • You are a programmer who is interesting in developing their programming experience.
  • You are a chess enthusiast and would like to improve your chess by learning how chess programs work.
  • You are interested in developing a chess program and playing against it.
  • You are interested in developing a chess program and having it play other engines.

You do need to be an expert programmer to understand this book. The code is written as simply as possible. The code is designed to be simple even for intermediate and even novice programmers.

If you are not a programmer, but am interested in chess, this book may be of interest.

The book includes annotation of the source code for a complete chess engine the author has developed as a teaching tool. The complete source code is available at GitHub. The program can be compiled using a freely downloadable compiler. You can alter the code and see if you can make it stronger.

The program is a derivative of my program referred to in my earlier book How to Write a Chess Program, which did not use bitboards. The book explains how bitboards work and some of the many ways they can be useful in programming. The bitboard version runs considerably faster and is consequently stronger.

Alternatively you can simply download the exe file and run the program.

The engine is strong enough to beat most social players.

Features of the engine include:

  • The ability to load positions.
  • The ability to play in chess engine tournaments, with programs such as Arena.
  • Its very fast.
  • It displays the best line of play for both sides.
  • Detects checkmate.
  • Detects draws by repetition, 50 move rule, stalemate or reduction of material.

Evaluation

The engine evaluates elements of a position including:

  • Material.
  • Piece position.
  • King safety.
  • Pawn structure.
  • Passed pawns etc

Search

The engine uses a standard alpha-beta minimax search including:

  • Cut offs.
  • Move ordering.
  • History moves,
  • Hash tables.
  • Extensions.
  • Reductions.
  • Capture search.

And much more…

My other books on computer chess include How to Write a Chess Program, The Joy of Chess Programming and Think Like a Computer.

No comments:

Post a Comment