Monday, August 2, 2021

How to Write a Javascript Engine

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 edited with any text editor and run on a web page. 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 BitBoard Chess Engine.

The engine is strong enough to beat most social players.

Features of the engine include:

  • It can play a human or itself.
  • It has the ability to load positions.
  • It is reasonably 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, How to Write a Bitboard chess Engine and Think Like a Computer.

No comments:

Post a Comment