Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How hard is it to implement a chess engine? [closed]

I'm wondering how hard it would be to implement a chess engine. Are there already open-source implementations?

It seems that you'd need a scoring function for a given board constellation, and a very fast way of exploring several likely future board constellations. Exploring all possible future moves is of course impossible, so one could greedily follow the most promising moves, or use approximate techniques like simulated annealing to follow likely moves probabilistically.

Do you think that is within the scope of a machine learning graduate student project -- assuming there was an open-source implementation that the students could use, that does the basic things like returning the next possible moves for a given figure? Probably too hard?

It would be a fun project to have different teams work on chess engines and then let them play against each other ...

like image 574
Frank Avatar asked Jul 18 '09 22:07

Frank


People also ask

How hard is it to program a chess engine?

A reasonable chess engine on modern PCs is certainly doable, especially if you're old enough to remember there were many Chess programs that used just a few K of memory on 1 and 2 MHz 8-bit machines that could play pretty well.

How long does it take to code a chess engine?

make a UCI compatible chess engine that simply moves with a random legal move: 40 hours. ELO 2000 using core concepts: 200 hours. ELO 2600: this may take you forever, depending on your approach, capacity to learn, and ability to execute.

Is it possible for a human to beat a chess engine?

Since IBM's Deep Blue defeated world chess champion Garry Kasparov in 1997, advances in artificial intelligence have made chess-playing computers more and more formidable. No human has beaten a computer in a chess tournament in 15 years.

How is a chess engine programmed?

In a general way chess engines use a decision tree. The root of the tree is the current position and has a child node for each position that can be made by making a legal move. Each of these nodes in turn have a child node for the positions that can be reached by making a legal move from them.


2 Answers

I have spent the last year building my own chess engine in C#. It was not all that difficult. During my work I have made mistakes, I have found that information on the internet was just not presented clearly, and much of it was simply copied from other sites.

In order to make life easier for someone else going through this process, I have been documenting the development of my chess engine and posted much of the source code on my blog:

http://www.chessbin.com

I have even created a Chess Game Development Kit that will get you started in developing your own chess engine, which contains:

  1. All the code necessary to represent a chess board and chess pieces
  2. Code related to validating chess piece movement
  3. Graphical User Interface that displays the chess position and allows you to move pieces around the board

My site is basically dedicated for people just like you; people that want to get started on building their own chess engine.

like image 129
Adam Berent Avatar answered Oct 07 '22 00:10

Adam Berent


Yes, this is definitely within the scope of a student project. Here are some links from my archive to get you started:

  • This is a useful chess programming wiki.
  • This is a simple introduction to chess programming.
  • This is a more advanced introduction.
  • This is a good analysis of MTD, a sophisticated search algorithm.
  • This is a good guide to validation of move generation.
  • This describes the basic architecture of a chess program.
  • This is lots of good information on the Dark Thought chess program.
  • These are more notes on chess programming.
  • A reasonable introduction to rotated bitboards.
  • A reasonable introduction to magic bitboards.
  • Here is an old report from 2 students who wrote a chess program.
  • Finally, here is Wikipedia's take on computer chess.
like image 30
HTTP 410 Avatar answered Oct 06 '22 22:10

HTTP 410